* * * Форумы на Наша-Life THREAD * * * -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- THREAD : Коллиматорный прицел, реально ли? Started at 19-12-2008 08:25 by FishMan Visit at https://bbs.hl-inside.ru/showthread.php?threadid=48362 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 1] Author : FishMan Date : 19-12-2008 08:25 Title : Коллиматорный прицел, реально ли? Вопрос к кодерам. Реально сли сделать точную симуляцию коллиматорного прицела на движке сурса? Т.е. чтобы при поворотах оружия положение точки в прицеле сдвигалось имитируя собой проекцию на место, куда попадёт пуля, а при смене угла обзора точка перемещалась так, чтобы оставаться в неизменном положении относительно пространства и при этом была замкнута внутри области (например текстуры или полигона) представляющего собой прицел. Принцип работы настоящего коллиматорного прицела: [url=https://www.youtube.com/watch?v=kjT68A4jXs8&feature=related]№1[/url] и [url=https://www.youtube.com/watch?v=XYcQO6tu0vQ&feature=related]№2[/url]. До этого в играх, даже коммерческих, не делалось никогда, так что мы с вами будем первопроходцами. =) В играх обычно просто рисуют красную точку по середине, но на самом деле это упрощение очень далеко от истины =) Интересует алгортим или идея... ЗЫ Для меня это магия, но, думаю, если разобраться в том, как работает настоящий прицел (по оптическим законам), то можно будет сымитировать это и в игре... хз Жду ваших идей. Прошу оценить идею и написать насколько это реально и есть ли среди вас человек, способный это реализовать (иными словами вы четко представляете себе как это будет выглядеть в коде)? Если реализовать, то это будет свехбыстрая и точная система наведения в игре (очень полезная в ближнем бою и точная на средних расстояниях), если оружие отвязать от конкретного местоположения и сделать так же как в Insurgency (т.е. плавающий ствол). В этой системе движения мышки меняют ориентацию не только экрана, но и оружия в руках бойца, понятнее всего будет если я упомяну Аrmed Assault или FlashPoint... -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 2] Author : STRELOK Date : 19-12-2008 09:26 реально, но тогда придется много кодить... В Гмоде 10 я как то видел такуюфичу, но она на LUA написанна и ч весит дофига -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 3] Author : KLIMaka Date : 19-12-2008 09:32 способ 1 Самый простой и элементарный, но требующий materiallib. Находим точку пересечения луча, идущего из ствола с препятствием. В найденной точке рисуем спрайтик с шейдером, который просто в стенсил буфер заносит 1 . Затем рисуем наш прицел с шейдером, который засвечивает все точки, помеченные в стенсил буфере единичкой, красным цветом. Просто и изящно, но нжны шейдеры, а в ОБ СДК пока их нет :( способ 2 Чуть сложнее, но шейдеры не нужны. Опять трассируем луч из ствола. Из найденой точки проводим вектор в глаза (вектор ТГ назовем). Затем находим проекцию ТГ на плоскость нашего прицела. Проекция эта будет началом своим иметь центр прицела, а концом - точку, в которой должна быть видна наша метка. Проверяем, лежит ли эта метка в границах прицела и если лежит, то выводим ее на плоскости прицела. Но здесь нужно будет произвести еще дополнительные телодвижения - выводить метку без z-теста, Ибо метка лежит прямо на плоскости, и из-за погрешностей z-буфера может частично не вывестись (вспомните некоторые декали в хаммере). К тому же мы находим только центр метки, а она скорее всего не в один пиксель размером, и поэтому какаято ее часть может вылезти за края прицела. способ 3 В принципе повторяет способ 2, но в этом случае мы не выводим отдельно метку, а выводим прицел, с текстурой, на которой изображена метка, при этом текстурные координаты вычисляются как проекция вектора ТГ в предыдущем способе. При этом нам не прийдется заботится ни о z-тесте, ни об выхождении метки за границы прицела, это за нас сделает настроечка в текстуре ClampU и ClampW. Но как менять текстурные координаты на модели я не знаю, так что кто знает - отпишитесь )) Вот такие вот пироги, Фиш. Только рассчитывай, что ретрейс луча каждый кадр чуток просадит ФПС на не очень мощных машинах. Я, например, ощущал На своем PIV 2.4 NorthWood`е разницу между РПГ и без нее. -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 4] Author : FishMan Date : 19-12-2008 10:51 Ну моя идея следующая (вынес отдельным сообщением) я не кодер, но всё же: На конце ствола есть аттачмент, который проецируется на объект, стену или какую-то цель, т.е. рисуется вектор из кончика ствола и на конце (т.е. в точке пересечения вектора с какойто поверхностью) рисуется спрайт, который на экране всегда принимает одинаковый размер (т.е. имеет всегда одинаковый размер в пикселях на экране, вне зависимости от удалённости). Принцип в точности такой же, как лазер у RPG, только там размер точки меняется. А вот дальше пошло нововведение - точка (энтитя) рендерится только в том случае, если на экране она попадает в регион определённой текстуры присвоенной модели, например со специальным параметром или шейдером... но вот вопрос... как вычислить этот регион? Оо Т.е. нужно что-то, что генерировало бы нечто вроде альфа канала, т.е. область, в которой точка показывается и область в которой точка не показывается (но она есть в любом случае). Ведь он может быть и овальной и круглой формы, в зависимости от того, как повернут ствол... или вообще хаотичной формы, всякие конфигурации колиматоров есть. Но тут есть и существенный недостаток! Если перевести прицел с ближнего объекта на дальний, то визуально точка перепрыгнет или же магически начнёт двигаться в другую сторону, например если перед нами есть тонкая стенка, а за ней вдалеке что-то и как бы из-за угла вектор "светит" на дальние объекты и если перевести точку с этой плоской стенки влево, то достигнув края, то конец вектора перескочит на дальние объекты и а визуально резко перескочит вправо, ну или ещё чего произойдёт страшное произойдёт... =\ Как эту проблему решить? Рисовать невидимую плоскость и вычислять всё относительно неё? Оо Т.е. предварительное точное вычисление, куда попадёт пуля в 3Д пространстве отбрасываем сразу, ибо это будет магия, а колиматор всё-таки не магия, а всего лишь галограмма. Т.е. тут либо специальную плоскость создавать, невидимую для игрока, находящуюся на определённом, фиксированном расстоянии, расстояние может быть любым и на её поверхности уже всё вычислять, т.е. нужно что-то, что неменяет своё положение относительно игрока. Клим, а ведь Збуффер можно игнорировать... Картинка метки всё равно всегда одного и того же размера и просто выводится только в том случае, если попадает в регион, перекрытие другими объектами не нужно, точку можно рисовать на плоскости экрана, а не на самой текстуре, вычислив все пиксели, которые относятся к стеклу прицела. А чтобы на границе точка не налазила на модель, размеры региона, в котором точка рендерится, можно уменьшить на диаметр точки, чтобы точка пропадала до того, как коснётся того места, где стеклянный прицел переходит в метал. И... по поводу оптимизации, можно вычислить заранее положение точки для критических уголов поворота оружия (т.е. продолжение двежений мыши в том же направлении привёдёт к повороту экрана), а из этих критических значений уже вычислять средние. Т.е. надо предварительно задать положение точки на экране в пяти экстремальных положениях (по середине, сверху, снизу, справа с лева), а потом просто вычислять промежуточные значения, вместо рилтайм вычислений с помощью проекций, но тогда положение центра оружия должно оставаться не изменным, т.е. оружие нельзя передвигать, только вращать. Или же... Можно отбросить эксперементальность и сделать всё точно, но предварительно. Т.е. чтобы комп сам расчитал всё для критических углов, запомнил результаты, а потом просто высчитывал бы промежуточные значения при изменении положения мыши. Это легче чем считать проекцию. Вся проблема в том, чтобы правильно задать регион рендера этой точки. По поводу этого: Если использовать только круглое стекло колиматора, можно рисовать это внутри окружности (ствол направлен идеально перпендикулярно экрану) и добавляя коэффициенты к x и y пропорциональные повороту ствола можно получать элипсы... Но тут стекло колиматора должно быть ни где, как точно в центре экрана, а вращение вокруг центра этой стекляшки... чтобы в плоскости это выглядело, как сжимание и растяжение по осям. Т.е. вывод такой - можно вообще ничего не вычислять рилтайм, а всё сделать фейк, т.е. эксперементально установить куда попадёт пуля при определённом максималном угле, который будет видно в области прицела, сделать его критическим (т.е. двигаем мышь дальше - уже поворачивается экран, а не оружие), задать его математически (т.е. отрисовать положение на экране заранее, без расчётов, эксперементально), а потом в зависимости от движения мыши менять коэффициенты и положение точки на экране. Ещё раз подчёркиваю - по тому, что я предлогаю точка рисуется на экране (как HUD), а не на плоскости прицела... А [b]не[/b] отрисовывание точки на экране вычислять как: если координата x точки больше координаты x из формулы эллипсоида, то точку не рисовать =) Ну что-то вроде такого... Ещё раз повторюсь я не кодер! Поправьте меня, что не так, не критикуйте. Я только учусь на программиста и не собираюсь в дальнейшем идти по этой специальности... [quote]реально, но тогда придется много кодить...[/quote] Вопрос скорее сводится к есть ли тут такой человек, который в состоянии это реализовать и что нужно сделать, чтобы он это реализовал. И да, речь идёт об Operation Broken Arrow... Я кружки умелых ручек не организую, всё для конкретного применения. И раз уж я разговор завёл тут, то результат, если кто-то настолько добр и возьмётся, можно сделать и достоянием общественности. -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 5] Author : redbox Date : 19-12-2008 12:23 это все конечно прикольно, но в сорце нет ни тряски игрока при движении, ни возможности посмотреть в прицел под разными углами, ни тем более повертеть оружие в руках как нибудь так чтобы оно наклонилось туда или сюда. вариант симмитировать тряску специально трясущейся анимацией idle. но тогда и саму точку можно прилепить анимированной текстурой. кароч фэйки рулят... -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 6] Author : KLIMaka Date : 19-12-2008 12:40 Фиш, вот глянь видео, хочу кое-что прояснить [url]http://ru.youtube.com/watch?v=YeXtjgi0Pu8[/url] Вот там я из СМЖ через коллиматор стреляю. Там у меня вью-модель жестко привязана к глазам и поэтому маркер тем, где и должен быть. При стрельбе от бедра даже и прицела не видно, поэтому смысла мучатся с правдоподобным прицелом смысла нет. Т.е. единственное предназаначение прицела - стрелять через него. А когда ты стреляешь через него, то маркер на своем месте. В других случаях (перезарядка или стрельба от бедра) его или не видно, или он не нужен. Поэтому встает закономерный вопрос - а нужно ли это вообще? Осмелюсь предположить, что хотелось бы чтобы при взгляде через прицел оружие было не привязано к глазам, а плавало. Т.е. повернулся влево - а оружие немного отстает и находится правее центра. Остановился - и оружие плавно становится по центру. Я правильно понимаю? Но опять-же при таком раскладе запаздывает от взгяда ствол, а не все оружие, т.е. задняя часть закреплена, а ствол плавает. При этом в 90% случаев у нас маркер будет уходить из поля видимости (ствол-то не совпадает с линией зрения), и опять же теряется смысл в этом прибамбасе. Маркер будет слегка смещатся (не уходя из области видимости) только в случае плавания не только ствола, а всего оружия. Но это слегка криво выглядеть будет. Ведь по идее стрелок упирает приклад в плече и при поворотах, приклад остается на своем месте, а ствол плавает.Даже не упирая пиклад, стрелок ближе и сильнее держит заднюю часть оружия, а ствол при этом плавает. Поясни, если что не так понял. Насчет отображения маркера на худе - не очень удачная затея. В общем случае достаточно трудно найти факт того, что точка попала в некую произвольную область. Если же упростить все, и принять область за круг или квадрат, то это будет накладывать жесткие ограничения на модель оружия, его поведение и проч. -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 7] Author : FishMan Date : 19-12-2008 13:01 Вот погляди видео и всё поймёшь: [url=http://www.resistanceandliberation.com/downloads/p13_sectionid/4/p13_fileid/8]1[/url], [url=http://www.resistanceandliberation.com/downloads/p13_sectionid/4/p13_fileid/9]2[/url], [url=http://www.resistanceandliberation.com/downloads/p13_sectionid/4/p13_fileid/7]3[/url], [url=http://www.resistanceandliberation.com/downloads/p13_sectionid/4/p13_fileid/6]4[/url]. А лучше скачай и поиграй. Так вот в чём суть идеи. Очень не удобно стрелять по открытому прицелу в центре экрана, но у этой системы альтернативы нет, разве что кроме той, что на видео (с плавающим прицелом, но это ещё неудобнее). НО! Если не входить в режим прицеливания, ствол от бедра плавает по экрану ВРАЩАЯСЬ, т.е. можно даже изза угла стрелять, ибо там всё на аттачментах основано, а не на проекции из центра экрана. Грубо говоря куда смотрит аттачмент туда и летят пули, направление взгляда управляется мышью, т.е. некоторое расстояние (ооочень маленькое) мышь передвигает ствол, а не экран, а когда ствол доходит до максимального угла, то начинает двигаться экран. Это очень удобно и на уровне подсознания работает, т.е. куда направляю туда и стреляю, даже без особой практики можно поражать цели на небольшом расстоянии ессесно, т.е. правильная, интуитивная, реализация стрельбы от бедра. Когда входишь в режим прицеливания, ориентация модели фиксированная, модель просто перемещается по экрану туда-сюда, когда доходит до края - экран сдвигается. Я же предлогаю это всё почти совместить, т.е. у тебя перед носом колиматор, движенями мышки ты его слегка поворачиваешь, в самом колиматоре бегает точка, направил точку на врага - нажал выстрел, враг убит, не надо ничего выцеливать по прицельным механизмам, сверхбыстрая система для чего и был придуман колиматор. Т.е. боец с колиматором имеет кучу приемуществ в ближнем бою, такие как: нижняя часть экрана не перекрыта, быстрое нацеливание и слежение за целью, тупо надо навести точку на врага и выстрелить, огромное приемущество при движении, ибо ты сразу видишь, куда попадёт пуля, не надо сопоставлять целик и мушку, которые очень сильно зависят от того, под каким углом ты на них смотришь, а тут это не важно, даже если ты плясать будешь или с крыши падать ты всегда можешь сделать точный выстрел, даже во время землетрясения... понимаешь? А если это тупая точка в центре, которая не двигается, а приверчена на мертво - это то же самое, что открытый прицел, только нижняя часть экрана открытая... Это нужно нам для последней миссии, где прицеливаться нужно будет молниеносно, ибо декарации индорные. Я ответил на твой вопрос? [quote]Насчет отображения маркера на худе - не очень удачная затея. В общем случае достаточно трудно найти факт того, что точка попала в некую произвольную область. Если же упростить все, и принять область за круг или квадрат, то это будет накладывать жесткие ограничения на модель оружия, его поведение и проч.[/quote] А проекция схавает производительность =\ Полюбому есть формула вычисления положения этой точки! Я просто уверен! Ведь устроен же этот коллиматор как то!!! Сымитировать физический закон будет куда дешевле, чем проекции мне кажется... [quote]это все конечно прикольно, но в сорце нет ни тряски игрока при движении, ни возможности посмотреть в прицел под разными углами, ни тем более повертеть оружие в руках как нибудь так чтобы оно наклонилось туда или сюда. вариант симмитировать тряску специально трясущейся анимацией idle. но тогда и саму точку можно прилепить анимированной текстурой. кароч фэйки рулят...[/quote] Ты вообще в хоть один мод для хл2 играл? Судя по всему нет =) Скачай хотябы Insurgency. И на последок, в сорсе есть всё, что захочется, а пока не захочется - да, этого нет. -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 8] Author : KLIMaka Date : 19-12-2008 14:55 Кароче, Фиш, ну ты мне прям взрыв мозга сделал! )) Еду я знач к девушке в маршрутке. А потом так бац! Балин, да это ж проще пареной репы! Вот теперь прибедал к девушке - она кушать готовит, а я сижу, отписываюсь )) Начну с лирического отступления. Когдато в далекие времена Блуда 1 (для меня он и сейчас живее всех живых) играл я в некий аддон. Вся его прелесть была в том, что в нем была почти настоящая водичка (на те времена)! Т.е. в воде отражалось все окружение. На самаом деле ничего не отражалость, а под полупрозрачной поверхностью воды просто строилась отраженная копия всего окружения. К чему это я? Вместо того чтобы изображать маркер на прицеле, можно заставить его отражатся в этом самом прицеле! Т.е. рисуем енвмапу с красной точечкой на черном фоне (крестиком, кружечком, голой бабой) и ставим ее в материал нашего прицела. И тогда наш маркер будет отображатся там, где нужно (геометрические опусы и паралели работой реального прицела опущу, времени нет). Точно не знаю насчет того, будет ли отображатся отражение на полностью прозрачной поверхности (енвмапа вроде складывается с базовой текстурой, а не перемножается) но по крайней мере решение предельно простое. Пока все. Пробуй, Фиш. -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 9] Author : FishMan Date : 19-12-2008 15:36 Хм... Ну, ок... Ща попробую спс... -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 10] Author : FishMan Date : 19-12-2008 19:13 ЗЫ Огромное колличество времени было потрачено на то, чтобы получить енвмапу, ибо ни vtex ни vtf плугин их создавать не умеют. Пришлось рендерить их на карте, а потом вытаскивать оттуда и юзать... [quote][i]Цитата с вики:[/i] Коллиматорный прицел был изобретён в России в 1917 году. Со времён Первой мировой войны и до настоящего времени коллиматорные прицелы являются основными прицелами воздушной стрельбы для истребителей, штурмовиков и бомбардировщиков с неподвижно установленным оружием и в системах полуавтоматических прицелов подвижных стрелковых установок штурмовиков и бомбардировщиков.[/quote] Вот так то! =) Столько времени протрахался и зазря =) Спасибо, блин ))) Короче, оно то работает но не совсем правильно. Во-первых, если я перемещаюсь, то и точка тоже перемещается, а должна оставаться всегда на цели, как на видео с плюшевым мишкой. Во вторых, если я стою на месте, а колиматор вращается, то точка не попадает в действительное место, куда попадёт пуля. Будут комментарии? Идеи? Клим, слуш, а с реального колиматора можно что-нить взять? Вот [url=http://ru.wikipedia.org/wiki/%D0%9A%D0%BE%D0%BB%D0%BB%D0%B8%D0%BC%D0%B0%D1%82%D0%BE%D1%80]тут[/url] кое чего есть, без деталей конечно, но хоть что-то. Cмотри скрин, чтобы стало понятнее (красная фиговина - это луч из центра колиматора в стену, т.е. он показывает куда в действительности попадёт пуля, я подкрасил точку, чтобы её лучше было видно, [b]Смотреть в полном размере[/b]): -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 11] Author : KLIMaka Date : 19-12-2008 19:45 Ах, блин, чуток прокукарекал. Слона то я как всегда и не заметил, и совсем забыл, что енвмапа должна быть удалена в бесконечность, чтобы этот способ работал :( А в шейдере предпологается что она удалена на 1 (енвмапа представляет из себя единичную сферу). Т.е. прийдется всетки свой шейдер писать. Необходимо просто сравнивать нормаль в точке с вектором на наблюдателя. Где они совпадут - там и маркер! Шейдер абсолютно плевой, и ничего сложного в нем нет. Основная проблема - как всегда отсутсвие полного СДК :( -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 12] Author : FishMan Date : 20-12-2008 01:26 Хмм... Может стоит у вальвы спросить?.. Авось альтернатива есть или помогут чем =\ -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 13] Author : manJak Date : 20-12-2008 02:55 [size=1]Начал писать, как бычно, не дочитав тему))[/size] Способов найти можно кучу, на самом деле) Например, вариация первого способа Климаки: рендерить в стенсил-буфер сам "дисплей" прицела, и юзать полученную маску при рендере спрайта ("нечто вроде альфа канала, т.е. область, в которой точка показывается"). Но лично мне первое что пришло в голову - это именно смещение текстурных коррдинат) Просто рисовать "дисплей" отдельным квадом, и с текскоордами можно будет извращаться как угодно. Касаемо апчхимизации. Вместо рейтреса, мб, достаточно найти пересечение луча с плоскостью на некотором расстоянии ("специальную плоскость создавать, невидимую для игрока, находящуюся на определённом, фиксированном расстоянии"). > есть ли тут такой человек ... А, типа меня уже со счетов списали? :D Да, с баллистикой этой я, кончено, закопался совсем, признаю.. -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 14] Author : FishMan Date : 20-12-2008 10:18 [quote]А, типа меня уже со счетов списали?[/quote] Не, это хитроумный план по захвату человечества =) Ты сейчас занят баллистикой, а я готовлю для тебя плацдарм на будущее, всё что от тебя потребуется, это перевести в код теоретический алгоритм. Кстати на счёт шейдеров. А в сурсе же есть какаято фигнюшка, чтобы компилить сво шейдеры... ыть? для чего она нужна, поясните... и чего вам не хватает... может достанем =) Напишите интересующий вопрос на английском, попробую у вальвы поспрашивать, моть чё полезное подскажут. -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 15] Author : manJak Date : 20-12-2008 10:54 > всё что от тебя потребуется, это перевести в код теоретический алгоритм Главное, чтобы алгоритм был подготовлен программером. %) Иначе будет легче самому выдумать)) Про шейдеры. Их можно беспрепятственно компилить под эп1 - среди сорцов есть необходимые либы, хэдеры и туча исходников-примеров. В оранже система поменялась, но необходимых материалов в сдк сейчас нет, и вальва [b]ДО СИХ ПОР ОБЕЩАЕТ[/b] их зарелизить. Думаю, чиркнуть пару строк можно (мол, когда же?), но особо это ни на что не повлияет) -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 16] Author : KLIMaka Date : 20-12-2008 11:01 Тьфу, да люди бобрые, да это ж плевой шейдер, никакого ретрейса не нужно! Принцип работы прицела просто понять нужно. Он ничего не трассирует, а просто отображает точку, таким образом, что кажется, что она удалена в бесконечность (лучи от нее паралельные идут). А нужно всего-лишь папочку materialsystem, в которой исходники нужные, для добавления своих шейдеров. В ЕП1 она есть, а в ОБ нема :( -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 17] Author : FishMan Date : 20-12-2008 11:12 Блин я ж просил напишите текст, хотябы уж по-русски, я отправлю... =) [quote]Главное, чтобы алгоритм был подготовлен программером. %)[/quote] Да не переживай ты за это =) Всё чики-пуки будет =) Клим, а вот ты понял откуда лучи идут и параллельно чему? Как я понимаю, там стоит лазер или светодиод, который светит на специальную линзу, а она искажет лучи света таким образом, что их направление становится параллельным относительно друг друга, НО все они параллельны... чему?.. Земле? Линзе? Линии взгляда?.. Кстати, а если это замутить для Еп1, под оранж бокс много переделывать потом? Оо -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 18] Author : ALPINE Date : 20-12-2008 11:36 Я честно говоря не очень понял принцип действия. Оружие целится в мишень, из него торчит кусок лазера в сторону мишени и на мишени - точка. разве что-то может измениться если я, не двигая оружие, буду смотреть на него с разных углов? -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 19] Author : FishMan Date : 20-12-2008 11:44 Омг... из него торчит кусок лазера... :D ALPINE Блин... Смотри короче, всякими интерференциями и дефракциями грузить не буду. Принцип следующий: Относительно зретиля проекция лазера на линзу сдвигается, но относительно мишени она остаётся неизменной. Представлять себе это не надо, просто запомни принцип, а то голову сломаешь, ибо это магия еретеков... =) Т.е. ты сдвигаешь голову, но положение прицела остаётся на месте, это из-за того, что не меняется угол, под которым лучи попадают из линзы тебе в глаз, потому что все лучи параллельны друг другу, и свет идёт сплошным потоком, как лазер или сфокусированный прожектор. Как только ты поворачиваешь ствол, поворачивается и линза, направление лучей которые попадают в линзу за счёт изменения угла линзы меняется и когда они попадают в твой глаз ты видишь, что мишень уже другая. Это сложно представить, потому, что свет обычно распространяется во все строны электромагнитными волнами равномерно, а не сплошным эм потоком. Хотя моть и я неправильно понимаю, как я и говорил - это магия еретеков =) -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 20] Author : KLIMaka Date : 20-12-2008 12:04 Суть такова - у нас есть светодиод (лезер, кусок тория, кому как нравится) он устанавливается внутри прицела и светит на внутреннюю линзу. Но светит он не просто так, а через обьектив (светодиод и обьектив составляют собой коллиматор. Он из непаралельных лучей светодиода делает паралельный пучек). Как мы знаем из курса физики, паралельными (друг другу) лучами светят только источники, бесконечно удаленные, такие, как солнце (оно конечно не бесконечно удалено, а просто на очень большое расстояние, и поэтому лучи от него практически паралельные). Проводя аналогию солнцем можно заметить, что сколько бы вы не перемещались, солнце все равно остается на прежнем месте. Так и в прицеле - сколько бы вы не двигались, маркер вы увидите в строго постоянном направлении, ибо лучи от него паралельные. Т.е. вы видите направление, в котором указывает прицел. Насчет ЕП1 на ОБ - в плане шейдеров хз... Но обычный код я без проблем перенес, только пару строк пришлось поменять... -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 21] Author : ALPINE Date : 20-12-2008 12:31 а что тогда мешает просто положить светящийся спрайт в мишень и смотреть на него через прозрачный прицел, как будто я смотрю на горящую вдали красную лампочку через кусок стекла? -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 22] Author : KLIMaka Date : 20-12-2008 13:13 А потомучто она не вдали! Если ее нанести на стекло прицела или поместить в прицел - толку от этого не будет, она должна быть бесконечно далеко от наблюдателя - это главное! -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 23] Author : manJak Date : 20-12-2008 13:27 > в плане шейдеров хз... Я думаю, в плане простых шейдеров (не зависимых от источников света, фонариков и прочей лабуды) ничего измениться не должно. Но если что-то и поменялось, то это легко будет поправить) Но резона кодить под эп1, когда сам мод под об, по-моему не много. -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 24] Author : ALPINE Date : 20-12-2008 13:52 так что ли? и значит луч всегда перпендикулярен стеклу? [size=1][i]ALPINE добавил [date]1229782014[/date]:[/i][/size] короче, как я понял, задача - найти точку пересечения перпендикуляра к стеклу, восстановленного из наблюдателя, с этим стеклом. -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 25] Author : manJak Date : 20-12-2008 14:14 > задача - найти точку пересечения перпендикуляра к стеклу Ыгы) -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 26] Author : KLIMaka Date : 20-12-2008 19:27 Ну вот, собсно - коллиматорный прицел собственной персоной! [url]http://ru.youtube.com/watch?v=P3vEdBdzmjc[/url] Сильно Фиш, не радуйся, это всего лишь ЕП1, и к тому же этот шейдер только на брашевую геометрию накладывать можно. Просто небыло времени разбиратся как модельные шейдеры писать... -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 27] Author : FishMan Date : 20-12-2008 22:46 Да я прямо от счастья под стол упал :D Не... прикольно на самом деле, а почему всё равно сползает от того, что двигаешься\приседаешь? И как на счёт бленда с окружающей средой? Я вот как раз столкнулся с этим, когда делал енвмапу, ибо она сцобака полностью зависит от прозрачности основной текстуры, правда я писал Alpha, возможно если юзать альфа-каналы всё будет норм... [quote]Просто небыло времени разбиратся как модельные шейдеры писать...[/quote] Да не Клим всё норм. Не трать время. Маньяк прав, для ЕП1 нет смысла делать, если всё остальное делается для ОБ... -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 28] Author : manJak Date : 21-12-2008 07:53 KLIMaka Ы! Есть странное ощущение, что задний план в окошке слегка размывается.. Мне кажется? -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 29] Author : KLIMaka Date : 21-12-2008 08:23 2 Фиш Сдвигается потому что объект, на который направлен прицел достаточно близко. Т.е. коллиматорный прицел дает достоверные результаты, когда расстояние до цели намного больше линейных пазмеров прицела. Я специально сделал две штуки, чтоб показать это слева - маленький прицел с удаленным объектом, на котором смещений не заметно, а спава - большой и с близким объектом. Нсчет окружающей спреды - никакого бленда с ней не производится, просто прозрачная текстура и там где нужно- точка. А там уж как хочешь - толи ставить какую-то линзу за прицелом, для отражений, толи шейдер добисывать чтобы он с енвмапой блендился. 2 Маньяк Это ютуб все размазал. Кроме точки шейдер под собой ничего не модифицирует. -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 30] Author : FishMan Date : 21-12-2008 08:39 Так. Ну можно сказать во всём разобрались. Осталось только достать нужные исходники... -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 31] Author : KLIMaka Date : 21-12-2008 08:54 Да, именно. А то моя наивная попытка прикручивания stdshsders_dx9.dll от еп1 к ОБ увенчалась логичной неудачей :( Хотя сейчас вальвовцы наверное плевать хотеле на ОБ, и занимаются Л4Д СДК... -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 32] Author : manJak Date : 21-12-2008 10:38 KLIMaka Аа, ну я так и подумал. Хотя сначала показалось, что ты на основе рефракта сделал)) > сейчас вальвовцы наверное плевать хотеле на ОБ, и занимаются Л4Д СДК Угу(( Но есть надежда, что эти две вещи связаны, и вальв просто хочет убить двух зайцев одним релизом.. Кстати, к теме о стенсил-буфере. Ты на практике в сорсе его пользовал? А то меня постоянные сомнения мучают, что вальва какую-нибудь фичу дх в своей обёртке не реализовала. =\ -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 33] Author : KLIMaka Date : 21-12-2008 10:45 Хм, а ДХ тут причем? Это фичча аппаратная. Я сам до стенсила не докапывался, так что ничего конкретного сказать не могу :( -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 34] Author : manJak Date : 21-12-2008 10:55 Ну ведь графический АПИ сам может не иметь поддержки чего-либо аппаратного) Так что в каком-то смысле любая поддерживаемая интерфейсом фича становится фичей интерфейса) А вот то что не докапывался - абыдно. Надо будет порыться.. зы: Чёрт, который раз выражаюсь недостаточно точно и меня неправильно понимают. :D -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 35] Author : KLIMaka Date : 21-12-2008 11:02 Точность - удел программистов )) "int a = b;" и "a = b;" только выглядят одинаково, а на самом деле абсолютно разные вещи... Уху! Есть стенсил!!! В ishaderapi.h [CODE]virtual void SetStencilEnable(bool onoff) = 0; virtual void SetStencilFailOperation(StencilOperation_t op) = 0; virtual void SetStencilZFailOperation(StencilOperation_t op) = 0; virtual void SetStencilPassOperation(StencilOperation_t op) = 0; virtual void SetStencilCompareFunction(StencilComparisonFunction_t cmpfn) = 0; virtual void SetStencilReferenceValue(int ref) = 0; virtual void SetStencilTestMask(uint32 msk) = 0; virtual void SetStencilWriteMask(uint32 msk) = 0; virtual void ClearStencilBufferRectangle( int xmin, int ymin, int xmax, int ymax,int value)=0; [/CODE] -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 36] Author : manJak Date : 21-12-2008 11:26 [size=1]Прозвучало как "Да! Есть рекорд!"))[/size] Вот оно, счастье-то. =D > SetStencilCompareFunction Омг. о_О Эт чё, реально функцию вызывать можно для сравнения? Не медленновато ли будет? О_о -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 37] Author : KLIMaka Date : 21-12-2008 12:50 Нет, она просто задает ф-ю сравнения, как альфатест например (равно, неравно, больше там или меньше...) -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 38] Author : manJak Date : 21-12-2008 13:10 Ээаа зачем тогда SetStencilFailOperation и SetStencilPassOperation? Я думал это оно и есть. [size=1][i]manJak добавил [date]1229865251[/date]:[/i][/size] Тфу ты. Всё, доехал, извиняюсь)) -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 39] Author : FishMan Date : 21-12-2008 14:37 О чём это они? ))) Одно слово программисты )))) -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 40] Author : manJak Date : 21-12-2008 15:42 )))) Это мы о том, как юзать [url=http://en.wikipedia.org/wiki/Stencil_buffer]стенсильный буфер[/url] видеокарты в сорсе) -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 41] Author : FishMan Date : 21-12-2008 16:16 Ыть! Задроты программирования :D -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 42] Author : manJak Date : 21-12-2008 16:31 Какое же это задротство) Это может вполне стать насущной необходимостью. -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 43] Author : FishMan Date : 21-12-2008 16:54 Да неее =) "Задроты" подразумевает нереальный скил, а не трату времени =) Это "задротство" подразумевает... второе =) -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 44] Author : manJak Date : 21-12-2008 17:03 Да даже в таком смысле не катит) Не берусь, конечно, отвечать за Клима, но у меня скилл точно не нереальный.. Вот например писать математические функции на ассемблере с оптимизацией под возможности различных процессоров уже гораздо ближе к "нереальному скиллу". =D -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 45] Author : KLIMaka Date : 21-12-2008 19:37 Если бы все измерялось в умении "писать математические функции на ассемблере с оптимизацией под возможности различных процессоров"... Все намного-намного-намного сложнее )) -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 46] Author : Stone Date : 21-12-2008 21:29 ППЦ ребят вы даете:) А что если я скромно предложу попробовать реализовать коллиматор под эп1 все же? Код этого шейдера смогут напрямую поюзать мододелы под эп1, а как только выйдет поддержка шейдеров в сдк для OB, код перенести можно будет либо с незначительными изменениями, либо вообще напрямую:rolleyes: KLIMaka Крут, очень порадовала реализация коллиматора в действии.. а реально все же ограничивать отрисовку части примитива на границе прицела, через тот же самый стенсильный буфер например, чтобы не только точки отрисовывать можно было? -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 47] Author : KLIMaka Date : 21-12-2008 22:20 Да, Стоун, дело говоришь, ибо шо еп1 шо ОБ - один махер (на 99% уверен), и написать сейчас а потом неренести проще навена будет, чем потом копатся и вспоминать... К тому же до выхода шейдеров под ОБ и доработать можно, так сказать на практике. Ничего конечно обещать не буду, но постараюсь в ближайшее время выложить весь необходимый код и мануал к нему. Насчет рисования разных маркеров подумаю... Со стенсилом слишком геморно, можно это попроще забацать, просто нужно дастать свой листик с карандашиком и немного векторы помалевать )) -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 48] Author : Stone Date : 22-12-2008 09:14 :))) Мне б так, листик и карандашик - и получился шейдер! =) Я думаю все будут очень благодарны, если такой код появится на нашем форуме! -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 49] Author : KLIMaka Date : 22-12-2008 09:30 Кароч я тут малевал-малевал и опять пришел к тому, что коллиматорный прицел можно сделать безо всяких шейдеров! Обыкновенной енвмапой это делается, как я и говорил! Тока я чет пока никак сделать не могу енвмапу кастомную. Фиш, твой тот тест должен правильно работать, просто как я уже говорил при больших размерах прицела появляются очень большие погрешности на близких дистанциях. Теоретитчески погрешность на нулевой дистанции равна радиусу прицела. С увеличением дистанции и уменшением диаметра прицела погрешность падает. Вот так вот все просто оказалось, и ничего писать не нужно. -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 50] Author : KLIMaka Date : 22-12-2008 10:03 Вот немного теории Окружность - наша енвмапа с маркером (красный пыптик). Зеленая точка - наблюдатель. Он смотрит на поверхность прицела. Шейдер вычисляет рефлект-векторы (оранжевые) в вершинах поверхности прицела (т.е. угол падения вектора от наблюдателя равен углу отражения). Затем эти рефлект векторы выступают в качестве текстурных координат нашей енвмапы и все что находится между этими двумя координатами отображается между двумя вершинами. -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 51] Author : manJak Date : 22-12-2008 11:43 Эээто всё замечательно, но ведь энвмапа должна сэмплится в пространстве энтити, а она сэмплится в мировом. Или я всё неправильно понял? -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 52] Author : KLIMaka Date : 22-12-2008 13:21 Мдя... а я уже думал что разобрались с этим )) Действительно, текстурные координаты нужно считать в пространстве объекта... прийдется всетаки писать шейдер. А я уж так расстабился. )) -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 53] Author : FishMan Date : 22-12-2008 14:40 Клим, как то можно сделать, чтобы на любой дистанции правило было верным? Оо Например, автоподстройка под дистанцию на цель? А то ты говоришь, что для дальней стрельбы и ближней придётся делать по разному, а это не приемлиемо, игрок не настоящий военный, ему нужен простой инструмент, некогда там корректировки на дальность сделать... Ну что-то вроде дальномера... Т.е. если ближний бой - колиматор ведёт себя так, если дальний - вот так. А то сам, понимаешь, декорации никогда не бывают постоянными в расстояниях. И... Ещё вопрос, под свойства баллистики, можно подстраивать как-нить? Т.е. с учётом дальности полёта пули? У настоящего колиматора, можно проекцию лазера настраивать таким образом, чтобы учитывать баллистические особенности полёта пули (m*g то бишь)... -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 54] Author : Stone Date : 22-12-2008 14:47 [QUOTE]Эээто всё замечательно, но ведь энвмапа должна сэмплится в пространстве энтити, а она сэмплится в мировом. Или я всё неправильно понял?[/QUOTE] Воооот!!! Значит я был прав когда у меня в голове эта заноза сидела:D :D :D -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 55] Author : FishMan Date : 22-12-2008 15:04 Кто бы сомневался *в попыхах перечитывая логи аськи* =) -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 56] Author : manJak Date : 22-12-2008 15:16 :D У меня тож заноза сидела, но почему-то, хз почему, не высказал сразу.. KLIMaka, а я вот чё-то до сих пор не понял, как именно ты рализовал это дело.. Просто перпендикуляр из глаза на плоскость опускается, и в получившейся точке рисуется пятнышко? Получается имитация бесконечно удалённой точки, а было бы хорошо действительно делать трассировку для определения расстояния.. Получится расхождение с реальностью, но зато целиться легче) По-моему лучше предпочтение отдать удобству. :) -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 57] Author : KLIMaka Date : 22-12-2008 15:23 2 Фиш Нельзя )) Я уже говорил, что погрешность зависит от радиуса прицела. Т.е. если объект находится прямо перед прицелом и стрелок смотрит не в центр прицела, то погрешность может составить величину, равную радиусу прицела. Смотря в упор через прицел на объект ( прицел не в центре видимости), точка будет указывать не на точку пересечения оси прицела с целью, а будет смещена на столько, насколько смещен центр видимости относительно оси прицела. Поэтому погрешность не может привысить радиуса прицела ( стрелок не может сместится относительно оси прицела на величину превышающую радиус без потери видимости маркера). Поэтому погрешность не критична, тем более она сходит на нет, при удалении объекта. При диаметре 40мм погрешность составит 20мм и это на нулевой дистанции. Сравнительно с размером обьекта (голова вражины например) это ничтожно мало. Дальний-ближний - коллиматору абсолютно все равно. Он просто отображает на фоне цели объект (маркер), удаленный в бесконечность. А оно надо вообще? Или вы баллистику делаете для того, чтоб у вас на пули гравитация действовала? Тогда, думаю, просто набор кубмап с маркерами сделать и их переключать в зависимости от необходимости. А на кубмапах рисовать маркер тем ниже, чем больше дальность. Да, кста, Фиш, дай свою кубмапку с маркером, для теста 2 Маньяк Просто именно так работает коллиматорный прицел. А речь шла именно о нем. С ретрейсом я не хочу парится, как по мне реальности достаточно. А насчет шейдера: return float4(pow(dot(fvNormal, fvViewDirection),1000),0.0,0.0,pow(dot(fvNormal, fvViewDirection),1000)); -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 58] Author : manJak Date : 22-12-2008 16:52 > return float4(pow(dot(fvNormal, fvViewDirection),1000),0.0,0.0,pow(dot(fvNormal, fvViewDirection),1000)); Угу, значит я всё прально понял. Ладно, пусть для публики так остаётся) А я скорее всего текстурный прицел сделаю (нам ведь текстура нужна, а не точка, так, Фиш?). Поведение пуль, кстати, учитывать в прицеле не стоит. В реальном прицеле этого ведь нет, да и сложновато больно выйдет) -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 59] Author : FishMan Date : 22-12-2008 17:53 Ну коллиматор мы получим только в последней миссии, а там у нас бой на небольшой дистанции, не дальше 50 м, следовательно баллистику вообще можно упростить какой-нить глобальной энтитей, чтобы ресурсы сэкономить... Скажем, чтобы они летели прямо, но в остальном, всё как положено - рикошеты, пробивание препятствий, время полёта и тра-ля-ля, ну ты понял... Расчёт гравитационных сил с учётом массы пули просто тут не нужен будет, ни для визуальных эффектов (Вроде трассеров. Пулемётов там не будет), ни для реализма... Даже на максимальной дистанции 50м не так уж сильно пуля выпущенная из винтовки падает, к тому же не везде там 50м будет, в основном ближний бой (5-20 м)... А нужна конечно не точка. У русского коллиматора "Кобра" для АК-74М прицел выполнен в виде галочки вверх (^). К тому же текстуру надо будет сделать качественной и использовать новинку, ту что преобразует растровую текстуру в вектор, на вики чёта есть по этому поводу... Так же, нужно оставить возможность загрузки кастомных прицелов, чтобы вот захотел я точку или крестик - нарисовал, прописал и готово. Помимо этого бы ещё отвязать это от свойства vmt под названием envmap, ибо создавать их ни vtex ни vtfplugin не умеют. Приходится череж жопу делать - билдить в игре, накладывая на чёрный бокс, в итоге больше 256х256 хрен вам, а не текстура... Т.е. нужна обычная UnlitGeneric текстура, а-ля спрайт, в качестве той, что будет юзаться для колиматора или хотябы софт, умеющий делать енвмапы. Само подключение желательно бы сделать в виде ключика в vmt, допустим: $envmapcolimator "directory\[b]vmt[/b]file" Т.е. тут подключение vmt другой текстуры, или же можно написать несколько параметров, для того, чтобы настроить vtf для колиматорной метки, но это помоему будет сложнее... Ну и на счёт дальности тоже какие-нить параметры, через прокси например изменяющиеся, например прокся вычисляющая дистанцию до цели, и прокся сравнения, если дистанция больше такого-то числа, то переключить режим колиматора (сменить такой-то параметр), ну что-то вроде того... Было бы сверх полезно, если бы помимо этого, сам прицельный маркер полностью игнорировал прозрачность базовой текстуры, что при $Alpha "n", что при $Translucent 1, так, чтобы можно было, например, сделать полупрозрачный запачканый прицел, но прозрачность не сказалась бы на прозрачности прицельного маркера колиматора, иными словами, чтобы он не стал полу-прозрачным вместе с самой текстурой... =) Клим, держи (на самом деле там 4 точки, но это пофигу, видно только центральную): -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 60] Author : manJak Date : 22-12-2008 19:01 > Расчёт гравитационных сил с учётом массы пули просто тут не нужен будет Да это одно умножение и одно сложение) По сравнению с тем, какие там аццкие рассчёты сопротивления (не говоря уж о трассировке), выигрыша вообще никакого не будет. =) > использовать новинку, ту что преобразует растровую текстуру в вектор Та ну нафик) Всего одна текстурка, нам же не уберсложный худ как в тф2 городить) В этом ведь ещё разбираться надо хз-сколько.. > нужно оставить возможность загрузки кастомных прицелов Эт само собой) Просто в материале прописать текстурку - "хоть голую бабу ставь")) Ну а от энв-мап это зависеть точно не будет, ибо метод будет другой. > Ну и на счёт дальности тоже какие-нить параметры ... И кресло с подогревом и вибромасложором)) Это я к тому, что сверх шейдера по мере надобности можно будет навертеть что угодно. > чтобы можно было, например, сделать полупрозрачный запачканый прицел Как два пальца об асфальт)) -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 61] Author : FishMan Date : 22-12-2008 19:10 Так ну всё отличненько значит, техническое задание себе сам составишь? -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 62] Author : manJak Date : 22-12-2008 19:20 Эм.. А что это? оО И с чем едят?) -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 63] Author : Stone Date : 22-12-2008 20:21 [QUOTE]Так ну всё отличненько значит, техническое задание себе сам составишь?[/QUOTE] [QUOTE]Эм.. А что это? оО И с чем едят?)[/QUOTE] :D :D :D :D Под столом:D Маньяк - ни в коем случае не над тобой смеюсь, а над ситуацией что вы говорите о таких высоких материях, шейдеры пишете на раз-два, в которых я ничего кроме слов float,pow и других не понимаю например:)) - а простые вещи - эт уже не для нас))) [url]http://ru.wikipedia.org/wiki/Техническое_задание[/url] [url]http://www.gamedev.ru/gamedesign/forum?id=15887[/url] Фиш, Маньяк - а чего вы так сильно хотите мучиться? Почему нельзя два плэйна сделать - тот что дальше от игрока - с отражением, преломлением, грязью, кровью - с чем хотим. Тот что ближе - чисто со светящимся маркером.. 0о Не нужно будет шейдеры совокуплять уж точно.. -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 64] Author : KLIMaka Date : 22-12-2008 21:43 В общем доделал шейдер, сделал его модельным, сделал кастомные прицелы, сделал так шоб текстурка обычная была, а не кубмапа. Последний пункт возымел некоторые нехорошие последствия - искажение изображения при слишком близком рассмотрении. Но т.к. не думаю что прицел будут прям в упор подносить и он на пол экрана будет, то это не проблема. Тут выбор стоит - либо кубмапа без искажений либо 2д текстурка но с искажениями. Я выбрал второе. Вот видео еще чуток [url]http://ru.youtube.com/watch?v=VUx4PpAsJG0[/url] Тестим, господа. Позже будет код -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 65] Author : Stone Date : 22-12-2008 22:08 ЗДОРОВО!!!! Спасибо! Будем тестить. Кстати я просто УВЕРЕН, что фича, о которой Фиш говорил (перевод растра в вектор внутри vtf, что юзается в TF2) - здесь будет как нельзя кстати. Ничего при этом не должно размазываться даже.. -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 66] Author : KLIMaka Date : 22-12-2008 22:17 А что за фича такая? Хоть ссылкой кинтесь, чтоли... -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 67] Author : Stone Date : 22-12-2008 23:03 Всегда пожалуйста: [url]http://developer.valvesoftware.com/wiki/%24distancealpha[/url] -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 68] Author : FishMan Date : 23-12-2008 02:49 [quote]Фиш, Маньяк - а чего вы так сильно хотите мучиться? Почему нельзя два плэйна сделать - тот что дальше от игрока - с отражением, преломлением, грязью, кровью - с чем хотим. Тот что ближе - чисто со светящимся маркером.. 0о[/quote] Ну ты сам говорил о правилах хорошего тона. Такой подход ведь профессиональнее будет, качественнее, чем сто тысяч плейнов, как слоёный пирог. К тому же, зачем лишний раз напрягать Zbuffer? =) 2Манияк: [url=http://ru.wikipedia.org/wiki/Техническое_задание]Техническое_задание[/url] Да, мы работаем с документацией, удивительно =) Просто одному богу известно, когда ты за это сядешь, всё ведь от вальвы зависит. Так вот ТЗ тебе пригодится для того, чтобы потом не искать по форумам и не вспоминать, что нужно было сделать, а так же для того, чтобы ничего не забыть. К тому же это мне позволит сделать больше выводов, если ты опишешь, все, что должно быть сделано тобой. Конечно и я могу написать, но ты ведь компетентней... Так что, кто напишет? [quote]Последний пункт возымел некоторые нехорошие последствия - искажение изображения при слишком близком рассмотрении.[/quote] Клим, а разрешение никак не будет влиять? Кстати про галочку, я был не совсем прав, там рисунок меняется в зависимости от дальности стрельбы. Цитата: [quote]Прицел "КОБРА", является коллиматорным прицелом открытого типа с электронной схемой управления, яркостью свечения и переключения типов прицельных марок и предназначен для повышения точности стрельбы по различным целям (в том числе по целям, появляющимся на короткое время). Имеет четыре прицельные марки: марка-точка, предназначенная для стрельбы на дистанции 100 м, маркаперекрестье — до 400 м, марка-пика — свыше 400 м, и, наконец, пика с точкой — комбинированная марка. Регулировка яркости марок имеет 16 ступеней, что удобно при прицеливании. Прицел абсолютно герметичен, не теряет работоспособности при полном погружении в воду. [/quote] [url=http://www.uahunter.com.ua/zbroya/kp_kobra.php]Источник[/url]. -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 69] Author : manJak Date : 23-12-2008 06:56 > а простые вещи - эт уже не для нас))) Ндык откуда ж я знал, что техническим заданием называется такая простая вещь)) Хоть и догадывался.. KLIMaka Вот то что плоскость должна быть перпендикулярна оси ствола - эт не очень гут, хотя для народа сойдёт, если кому надо - доработают) Я лично думаю юзать аттачмент, определяющий "двухмерный" базис прицела: оригин и векторы right и up. Я щас набросал проектик в рендерманке (скрин), и суть ВШ сводится к следующему: [code] right /= markersize.x; up /= markersize.y; float3 diffP = pos.xyz - O; float3 diffV = vViewPosition.xyz - O; o.Texcoord.xy = tc; o.Texcoord.z = dot( diffP, right ) - dot( diffV, right ) + 0.5; o.Texcoord.w = dot( diffP, -up ) - dot( diffV, -up ) + 0.5; [/code] где O - оригин, а с остальным, думаю, всё ясно без пояснений) В ПШ временно такая загогулина: [code]return lerp( tex2D(base,tc.xy), float4(1,0,0,1), tex2D(marker,tc.zw).r);[/code] Вот) > я просто УВЕРЕН, что фича, о которой Фиш говорил ... Пожуём-увидим ) > Так что, кто напишет? Хм. Мне было бы проще, если б написал что-то другой, а я бы это просто перевёл на свой язык. :) -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 70] Author : manJak Date : 23-12-2008 06:58 Скрин забыл. [size=1][i]manJak добавил [date]1230018018[/date]:[/i][/size] Почитал про $distancealpha, вроде понял что оно делает (векторные текстуры тут никаким боком не при чём), но чтобы пощупать придётся опять-таки ждать релиза папочки materialsystem. =\ зы: > $scaleedgesoftnessbasedonscreenres И кто после этого маньяк?? 33 буквы!! -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 71] Author : KLIMaka Date : 23-12-2008 08:07 2 Фиш Повышение разрешения будет самым положительным образом влиять на четкость маркера, больше ни на что. 2 Маньяк А в чем проблема с перпендикулярностью, чет не пойму... Ни разу не видел прицелы, линзы в которых не перпендикулярны оси ствола. Ведь ось прицела должна быть паралельна оси ствола. А про шейдер... Тебе прийдется постить в него твой базис. Дело конечно твое, но это прибавит некоторого геморроя. В двойне оно тебе геморроя прибавит потому что это еще на кости привязывать прийдется. А третий гемморой вылезет из-за того, что весь этот базис можно просто задать плоскостью, которую мы рендерим. Я тоже думал про такой способ, при нем нам не нужны будут не кубмапы не сферические мапы, но в ответ нам придется постить в шейдер дополнительную информацию. Меня это не устраивало. Дело конечно твое, но попробуй это на практике реализовать и ты быстренько откажешься от такого подхода. Оно того не стоит ИМХО -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 72] Author : manJak Date : 23-12-2008 08:30 > Ни разу не видел прицелы, линзы в которых не перпендикулярны оси ствола. Хм. Может и так) В любом случае, то что выше - лишь спешный набросок, который наверняка десять раз изменится. Посмотрим, в общем. > Тебе прийдется постить в него твой базис. Не вижу никаких сложностей, прокси рулят) А поскольку аттачмент уже сидит на нужной кости, никаких доп. рассчётов в шейдере не надо делать. В общем, да, дело моё) Пока сам шишек не набью, от идеи не откажусь. =) зы: Только сейчас дошло, что никакого применения у этой $distancealpha в данном случае нет) Потому что маркер не будет рисоваться отдельным фейсом. А даже если бы и рисовался, то у него должна быть аккуратненькая 8-битная альфа, а не альфатест. И чтоб добить: 1-канальная текстурка 256х256 (такого разрешения хватит за глаза) будет весить жалких 64 кило, это ведь не монстр 2kx2k. Так что использование этой фичи неопрадано трижды. [size=1][i]manJak добавил [date]1230022280[/date]:[/i][/size] Хм, может, я опять поспешил с выводами, но: Как же без базиса компенсировать произвольное расположение модели (мало ли какая там анимация будет)? То есть, как ориентировать маркер, не зная где у оружия верх и право?) -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 73] Author : KLIMaka Date : 23-12-2008 08:59 А тангентспейс на что? Я ж говорю, что весь этот базис уже постится вместе с плоскостью! -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 74] Author : manJak Date : 23-12-2008 09:43 Ну ладно, раз работает, то хорошо) -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 75] Author : FishMan Date : 23-12-2008 10:54 [quote]Хм. Мне было бы проще, если б написал что-то другой, а я бы это просто перевёл на свой язык.[/quote] ААААААЙ как я ненавижу бумажную работу :D Ланно будет время подумать и пописать, сделаю. Потом обсудим. -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 76] Author : Stone Date : 23-12-2008 12:44 Маньяк Что-то ты мне вообще несусветное об этой фиче говоришь. Прямо противоположное тому, ради чего она создавалась. Там суть сводится к тому, что ты подсовываешь гигантское изображение - и она его уменьшает в маленькую текстурку (не знаю зачем), а доп. информацию сохраняет внутри (ИМХО, переводит в вектор) - и потом уже может на любом разрешении показывать одинаково четкую картинку. Видимо, диффуз - это мелкая зяба, а вот альфа - векторная. Ну и размер текстурки как раз-таки мизерный получается. И никаких альфатестов, никто и не заикается. Ты pdf прилагающийся читал? Короче я сегодня планирую потестить прицел, там и посмотрим как оно все заработает. -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 77] Author : manJak Date : 23-12-2008 13:27 FishMan, ыгы, спешить-то некуда пока) > Ты pdf прилагающийся читал? Я как раз тебя об этом спросить хотел. :D:D Конкретно как это устроено я не понял, но понял, что в альфу небольшой текстуры сохраняется расстояние до ближайшей границы, вычисленное на основе исходной 1-битной картинки очень высокого разрешения (того же можно было бы добиться используя векторый исходник, но вальве, как обычно, лень :)). Никакого хранения в векторном формате там нет и в помине, а то что в пдф-ке постоянно упоминается вектор, так это потому, что качество границ при альфатесте становится сравнимым с векторным изображением, вот) Взгляни на первые три картинки: посередине обычный альфатест, а справа - с использованием этой вот технологии. Так что предназначена она для сохранения правильных границ альфатестовых материалов при сильном приближении. А маркер прицела во-первых не должен иметь абсолютно чёткой границы, а во-вторых будет иметь почти что фиксированный (и при том очень маленький) размер на экране, потому для него достаточно подобрать подходящее разрешение текстуры (256, как я уже сказал, должно хватить с запасом) и не парить себе моск всякими новомодными фичами, которые совершенно для другого предназначены. :) [size=1][i]manJak добавил [date]1230039106[/date]:[/i][/size] [quote]In this chapter, we present a simple method to generate and render alpha-tested texture maps in order to minimize the artifacts that arise when such textures are heavily magnified.[/quote] И этим всё сказано. =) -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 78] Author : Stone Date : 23-12-2008 14:23 Не понял что этим сказано-то )))) То что при приближении не будет артефактов - только и всего:) Ну да пох - ты прав что нам четкие границы ни к чему. да и фича-то, скажу по секрету, только в OB доступна - все равно на рабочем прицеле толком не потестить.. Я все пытаюсь запустить тест с нужным положением СМГ1, да вот только не компилится собака - как получится, поделюсь результатами.. -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 79] Author : manJak Date : 23-12-2008 15:06 СМГ не компилится? Если так и не скомпилится, можно будет вьюмодельку сместить просто) -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 80] Author : Stone Date : 23-12-2008 23:45 О да, я сделал это:D :D Блин, пол-дня искал багу, а оказалось что я забыл одну маленькую деталь - hlmv не умеет корректно отображать кастомные шейдеры:) По крайней мере этот.. Вот что меня смутило - это то что СМГ сначала и в игре при этом не появился, наверное там модель была развернута. Так или иначе, пришлось сделать тестовую модельку калаша нашего с прикрученным коллиматором, вот оно в работе: [url]https://www.youtube.com/watch?v=2ECU3ikKSoc[/url] (Прошу прощения за звук, как-то он несусветно Fraps'ом записался, надо будет потом порешать эту проблемку) -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 81] Author : FishMan Date : 24-12-2008 05:36 Прикольно =))) Звуки аццкие, прямо как с записей военной хроники :D Тока галка сильно огромная ) Она же маленькая на самом деле. -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 82] Author : KLIMaka Date : 24-12-2008 07:07 Ну галка, как я понимаю, моя юзается, там она действительно просто огромная )) И к тому же абсолютно не сглаженная, ступеньки так и режут глаз - в пэинте рисовалась )) Ну так тест пройден удачно? ЗЫ Боты так мужественно умирают только от направленного в их сторону ствола )) -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 83] Author : manJak Date : 24-12-2008 07:22 Звуки - это пять. xD KLIMaka, а размер надо бы в материале прописывать) -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 84] Author : KLIMaka Date : 24-12-2008 11:29 Размер задается самой текстурой маркера. Хоч - большой крест рисуй, хоч - маленькую точку. Ну еще и от FOV`а зависит... -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 85] Author : manJak Date : 24-12-2008 15:22 Чтобы отмасштабировать маркер - редактировать текстуру? Неудобно) -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 86] Author : Stone Date : 24-12-2008 15:30 Вообще с маркером не совсем понятно.. Текстура большая (512х512), а маркер на ней - мелкий (а в игре гигантским смотрится). То ли на размер экрана текстурка, то ли хз еще по каким законам - но как минимум неэкономно:) К тому же я сделал сглаживание, но из-за самого размера текстуры все выглядит так как выглядит, а 1024х1024 делать пошло, если почти вся текстура при этом черная будет=)) Надо что-нибудь придумать будет. Пламя из ствола и гильзы я отрубил к чертям, шоб не мешали прицел тестить, и в целом можно сказать что тестирование меня устроило. Дальше уже остаются лишь мелочи - подгонять прицел так, чтобы его маркер _точно_ указывал туда куда будет палить оружие.. Но для этого нужно чтобы пули вылетали по направлению аттачмента на конце ствола. Маньяк - это уже к тебе:) Да, и напоследок:) Не стал ради теста извращаться черезчур сильно, но с "внутренностями" прицела еще играться и играться - нужно настраивать отражение окружения, "синеву-зелень" самого стекла коллиматора и т.п. Для данного варианта пришлось бы вставлять еще один фэйс за фэйсом с шейдером прицела, но Маньяк говорил он что-то хитрое там замыслил на эту тему:)) Так что не будем торопиться. Да, вот ссыль для тех, кто хочет увидеть что же представляет из себя этот прицел на самом деле: [url]http://airsoft.stsland.ru/equipment/text/cobra_use_experience.html[/url] По ходу текущий размер галки сравним с размером самого большого маркера - перекрестия. А это значит что по-хорошему для нее нужна 1024х1024 текстура в текущем варианте шейдера. Блин, ребят, плохо это=))) Надо точно постараться сделать так, чтобы можно было текстурку маркера брать из материала без огромного количества "молока" и тупо шейдером ставить в центр прицела, а размер выносить в конфиг. параметр... -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 87] Author : manJak Date : 24-12-2008 15:54 > Маньяк - это уже к тебе Угу) Геморр, конечно, но что-нибудь придумаю) > что-то хитрое там замыслил Хитрое?) Да не то чтобы.. Думал сначала сделать упрощённый аналог вертекслита, с маркером. Но щас подумал [u]головой[/u] и считаю, что разумнее действительно делать его отдельным фейсом и либо рендерить как декаль либо просто смещать вперёд на константу (вьюмодель полюбэ всегда близко от глаз, так что второй вариант скорее всего прокатит и никакого z-файтинга не будет). Воот. =) > а размер выносить в конфиг. параметр Более того, мб, придётся ещё и параметры смещения в материале прописывать. Для адской точности)) -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 88] Author : Stone Date : 24-12-2008 16:03 [QUOTE]Хитрое?) Да не то чтобы.. Думал сначала сделать упрощённый аналог вертекслита, с маркером. Но щас подумал головой и считаю, что разумнее действительно делать его отдельным фейсом и либо рендерить как декаль либо просто смещать вперёд на константу (вьюмодель полюбэ всегда близко от глаз, так что второй вариант скорее всего прокатит и никакого z-файтинга не будет). Воот. =)[/QUOTE] Наверное тебе лучше знать как оно) Для меня просто эта текстура не ассоциируется с обычной translucent'овской, в которой зябы происходят, может потому что тут не просто альфа, а additive работает. Если для движка это одно и то же - вот тогда да, может быть и будут эти самые проблемы 0о -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 89] Author : manJak Date : 24-12-2008 16:11 Ээ.. Зябы? Проблемы? Чогде? оО [size=1][i]manJak добавил [date]1230137161[/date]:[/i][/size] >вот ссыль для тех, кто хочет увидеть что же представляет из себя этот прицел В глаза бросилось: [quote]Марка проецируется в объективе прицела (на поляризованное стекло)[/quote] Хммм. Поляризованность, емнип, - свойство световой (и вообще любой) волны, а стекло, делающе свет поляризованным называется поляризационным (ил просто поляризатором). =\ (Угу, умничаю.) -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 90] Author : KLIMaka Date : 24-12-2008 16:56 А вот я чета не пойму, а в чем проблема с линзой? Просто на модели две плоскости близко размещенных и на одной маркер, на другой - грязь и проч... Если уж сильно нада какого-то специфичного смешивания то не проблема в одном шейдере мешать маркер с грязью как угодно... Вот поборникам минимализма и борцам за каждый киллобайт видеопамяти новая версия )) -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 91] Author : manJak Date : 24-12-2008 17:49 Да проблемы и нет никакой, просто размышлял вслух, как сделать лучше) зы: Самому надоело уже придираться, но... > Масштаб задается праметром $scale, чем он больше, тем меньше размер маркера. Логика железная. :D -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 92] Author : KLIMaka Date : 24-12-2008 18:14 Ну у дитейл текстуры тоже чем больше скейл, тем она мельче... Как по мне, так один хрен - шо 20, шо 0.05 )) -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 93] Author : Stone Date : 24-12-2008 22:20 Сегодня затестил новую версию шейдера (Клим - РЕСПЕКТИЩЕ!!!) и сделал полностью приближенный к условиям реальности прицел - со стеклышком, с нужной лазерной меткой и т.д. Смотрим: [url]https://www.youtube.com/watch?v=HSc03VqUDoM[/url] В видео сначала идет показ с ХУД, чтобы понять что прицел проецируется куда нужно (ствол на центр экрана позиционируется следовательно). При беге имеем покачивание оружия - и покачивание метки прицела относительно центра экрана. Потом я сношу нахер ХУД и просто показываю что все работает в лучшем виде (с поправками на беготню и малую убойную силу оружия [точность я повысил в коде, хотя это потом оказалось нафиг не нужно..] Да, и в видео опять-таки это ужасное качество звука:mad: Я пробовал настройки звуковухи покрутить - ничего не изменилось. То ли не нащупал нужную настроечку, то ли реально не дружит Фрапс с моей звуковухой_))) Хотя с другой стороны потешно конечно.. Но получается что в случае необходимости я не смогу видео нормальное со звуком писать - плохо:) ЗЫ - вторая часть названия темы потеряла свою актуальность благодаря нашим стараниям и лично Климу:) Совсем недавно и представить что такое можно сделать было сложновато)) -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 94] Author : KLIMaka Date : 25-12-2008 08:14 Оказывается это очень прикольно смотрится! Нужно и нам коллиматор поюзать... Звук как всегда шикарнейший! Такой антураж сразу - как будто ГГ в трехболтовке бегает )) Я еще планирую добавить 2 параметра в шейдер - наклон ( для учета баллистики ) и сдвиг относительно центра ( для точной подстройки маркера ) -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 95] Author : FishMan Date : 25-12-2008 08:50 Stone Сань, а чем тебя встроенная система записи видео не устраивает? Фрапс принципиален? Оо [quote]Оказывается это очень прикольно смотрится! Нужно и нам коллиматор поюзать...[/quote] А я знал, что ты рано или поздно сам это скажешь :D Клим, а есть возможность добавить размытие прицела или эффект "ожога сетчатки"? При выстреле маркер сильно дёргает и как следствие в глазу он оставляет за собой след (или растягивается, замазывается, в общем на видео [url=http://ru.youtube.com/watch?v=7RJn_dHqz9c&feature=related]хорошо[/url] видно), на экране вряд ли это будет видно без специального эффекта. -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 96] Author : KLIMaka Date : 25-12-2008 09:22 На том видео маркер размывается за счет выдержки камеры и при наблюдении глазами такого наблюдаться не должно, по крайней мере не в таком количестве. Простых решений я навскидку пока придумать не могу... Я конечно подумаю но скорее нет чем да -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 97] Author : darth_biomech Date : 25-12-2008 10:05 Хм, я может конечно не слишком понимаю способ действия коллиматора, но по моему то что на видео тестовом показано, было бы проще реализовать в виде отдельного полигона в модели, на прямой находящегося дальше ствола, с текстурой которую видно только сквозь другую спецтекстуру. -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 98] Author : KLIMaka Date : 25-12-2008 10:12 А как ты это реализовывать собираешься - "с текстурой которую видно только сквозь другую спецтекстуру"? Такое только через шейдеры сделать можно. А теперь скажи, что проще - шейдер + отдельный полигон или просто шейдер? -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 99] Author : Painkilla Date : 25-12-2008 11:28 [QUOTE][i]Оригинальное сообщение от FishMan [/i] [B]Stone Сань, а чем тебя встроенная система записи видео не устраивает? Фрапс принципиален? Оо[/B][/QUOTE] К сожалению, эта система также не пишет звук как и фрапс при данной проблеме (решения которой я , увы, не знаю. Я просто купил шнур и поключил его от динамика к микрофону) -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 100] Author : manJak Date : 25-12-2008 11:44 FishMan Размытие и прочие линзовые эффекты можно сделать, поставив спереди от прицела камеру и обрабатывая изображение с неё как душа пожелает. Дорого будет, но зато круто. =D -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 101] Author : Stone Date : 25-12-2008 13:15 [QUOTE]Дорого будет, но зато круто. =D[/QUOTE] Не, думаю не стоит такие чудеса вытворять.. Уверен, будет куда больше применений, куда можно ресурсы потратить:))) Не зря ж VAlve и не думали честный motion-blur делать например. Я кстати подумал вот над чем.. маркер, проецируемый лазером, не может быть статичным - края б неплохо в движении сделать, и центральная область пересвета (не полностью ж красным делать - см. аттач) тоже бы неплохо чтобы не была совсем статичной. Думаю, выход - наложить что-то типа noise. Вот как только сделать 0о Через прокси? Тогда надо б параметр, который можно поварьировать:) Сейчас это только $scale, если будут сдвиги - будет чутка попроще. Но если как-нибудь наложением на область маркера текстурки с шумом - вообще наверное здорово бы смотрелось 0о Если есть идеи как лучше это реализовать - высказывайтесь. -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 102] Author : FishMan Date : 25-12-2008 14:09 [quote]К сожалению, эта система также не пишет звук как и фрапс при данной проблеме (решения которой я , увы, не знаю. Я просто купил шнур и поключил его от динамика к микрофону)[/quote] Всё пишет у меня по крайней мере =\ -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 103] Author : manJak Date : 25-12-2008 15:02 > Не зря ж VAlve и не думали честный motion-blur делать например. А я не про него, я про расфокусировку) Во всяком случае, хай-эндовые машинки запросто переварят лишний проход рендерера. dxsupport.cfg рулит. =) > высказывайтесь Думаю задавать цвет надо параметром, который уже и зашумлять. Вот. А текстурный шум.. хз.. сделать-то его проще простого, но действительно ли это нужно? -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 104] Author : KLIMaka Date : 25-12-2008 17:54 Шота мне кажется понесло вас, товарищи )) Надо бы и меру знать. Не такого уж и большого размеру этот маркер, чтоб его зашумление было заметным, к тому же ни на одном видео я такого не заметил. А дополнительный рендеринг только ради мелкого прицела - это вообще перебор.Дело конечно ваше, но кажется мне, что это нездоровым фанатизмом попахивает )) -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 105] Author : Stone Date : 25-12-2008 20:32 [QUOTE]Шота мне кажется понесло вас, товарищи )) Надо бы и меру знать. Не такого уж и большого размеру этот маркер, чтоб его зашумление было заметным, к тому же ни на одном видео я такого не заметил. А дополнительный рендеринг только ради мелкого прицела - это вообще перебор.Дело конечно ваше, но кажется мне, что это нездоровым фанатизмом попахивает ))[/QUOTE] Хех)) В целом ты прав конечно.. Но ИМХО статичный прицел выглядит слишком четко. Поэтому и хочется его сделать менее "рисованным", что ли.. -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 106] Author : manJak Date : 25-12-2008 21:18 Stone Чуть-чуть размыть текстуру, усилить свечение (в шейдере), добавить равномерное по всей текстуре мерцание - и готово. =) На крайняк тот же самый шум можно и анимацией самого маркера сделать) -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 107] Author : FishMan Date : 26-12-2008 01:41 Уже четвёртое сообщение не доходит... Вы чего добиться то хотите? Нормально опишите... =\ -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 108] Author : Stone Date : 26-12-2008 12:58 [QUOTE]добавить равномерное по всей текстуре мерцание[/QUOTE] Это как??? [QUOTE]Вы чего добиться то хотите? Нормально опишите... =\[/QUOTE] Нууу.. Как бы это сказать:) Чтобы маркер не был всегда одинаковым - чтобы дергался, немного неоднородным был - не статичным короче. Это ж оптический эффект, а не картинка как бы.. -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 109] Author : FishMan Date : 26-12-2008 13:31 Это уже перебор, важна суть, а не такая мелочь, она скорее всего мешать только будет =\ Кстати, говоря об удобстве, давно уже хочу сказать, Маньяк, аттачмент в режиме Aim Mode должен переключаться на положение "пуля летит из прицела, а не из ствола", а то игроки будут в стены попадать, стреляя НАД укрытием, например, из ствола это конечно реализм, но когда в стену попадаешь - это глупо, только тупой боец выстрелит в стену. Оо А Чернышёв у нас хоть и не закончил ВУЗ, но не дурак, в конце концов... Решение одно - перемещать в центр прицела, а-ля куда целюсь, туда и стреляю, не выше не ниже, ни правее, ни левее... игроков обратная система раздражает, ибо это не честно, с точки зрения игровой механики. А вот когда на вскидку стреляешь, всё должно быть честно с точки зрения логики =) -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 110] Author : manJak Date : 26-12-2008 15:57 > Это как??? Как это как? Меняя цвет шумовой проксёй) > аттачмент в режиме Aim Mode должен переключаться на положение "пуля летит из прицела, а не из ствола" Разумно) -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 111] Author : KLIMaka Date : 27-12-2008 09:13 2 Stone Ну почему это эффект? Обыкновенное изображение маркера, как и любая картинка. И стабильность напрямую зависит от источника подсветки. Ведь ты не видишь никаких мерцаний, если на включенный светодиод смотришь. Хотя в реальном коллиматоре скорее всего питание на подсветку в импульсном режиме подается, но даже при этом мерцание подавляется за счет большой латентности источника света. -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 112] Author : Stone Date : 27-12-2008 09:59 Тип того:) Но ИМХО в реали он будет подрагивать хотя бы из-за мелких подрагиваний рук. А вообще, присмотревшись повнимательнее к Call of Duty 4 в частности, я понял что таких мелочей в игре все равно не замечаешь... -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 113] Author : FishMan Date : 27-12-2008 10:54 Так, Саня, не пали контору, на счёт подрагиваний всё буит норм =) -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- The messages has been download from Форумы на Наша-Life at https://bbs.hl-inside.ru at 12.05.2024 04:37:29