HLFX.Ru Forum
профиль •  правила •  регистрация •  календарь •  народ •  FAQ •  поиск •  новое •  сутки •  главная •  выход  
HLFX.Ru Forum HLFX.Ru Forum > Разработка игр > Наши проекты > XashNT: блог разработчика
Часть I
Страницы (240): « Первая ... « 106 107 108 109 [110] 111 112 113 114 » ... Последняя »   Предыдущая тема   Следующая тема
Автор
Тема Новая тема    Ответить
FiEctro
Кот Арсис

Дата регистрации: Aug 2006
Проживает: код
Сообщений: 12885
Возраст: 32

Рейтинг



Я думаю можно провести эксперимент. Если будет меш с нормальной развёрткой. Было бы интересно пособирать карту чисто из моделей с -nocsg, как минимум загрузить оригинальный меш спонзы, вот только как быть с детектором дырок? Компилятор же видит модели просто как точечный объект? В общем не очень понятна какая должна быть система миграции геометрии .map -> csg -> .obj -> .bsp? Хотелось бы увидеть твоё видение как это всё должно работать. В целом .obj если не ошибаюсь поддерживает объекты, можно прямо в 3д пакете расставлять лампочки и энтитии, вот правда я не очень понимаю в каком виде у них хранятся свойства.

Отредактировано FiEctro 14-07-2020 в 11:57

Сообщить модератору | | IP: Записан
Сообщение: 195688

Старое сообщение 14-07-2020 11:41
- За что?
nemyax
Нёмыч

Дата регистрации: Jul 2011
Проживает: (void)
Сообщений: 4133

Рейтинг



Цитата:
FiEctro писал:
В целом .obj если не ошибаюсь поддерживает объекты

Да, поддерживает.

Цитата:
FiEctro писал:
можно прямо в 3д пакете расставлять лампочки и энтитии, вот правда я не очень понимаю в каком виде у них хранятся свойства

С этим засада. Я пытался найти популярный формат геометрии, который бы хранил заданные пользователем ключ-значения для объектов, но без толку. Даже коллада их не держит.
Но с другой-то стороны, энтити с ключ-значениями можно прекрасно писать в .map и использовать его в паре с OBJ.

Добавлено 14-07-2020 в 15:15:

Цитата:
FiEctro писал:
как быть с детектором дырок

Дырка обнаруживается очень просто. Каждое ребро должно принадлежать ровно двум полигонам с одинаковым winding-ом. Если для какого-либо ребра это несправедливо, то всё, у тебя дырка.

Сообщить модератору | | IP: Записан
Сообщение: 195689

Старое сообщение 14-07-2020 12:15
- За что?
Government-Man
Призрак

Дата регистрации: Apr 2006
Проживает: N/A
Сообщений: 3507

Рейтинг



Награды
 
[1 награда]


FiEctro
nemyax
Зачем скрещивать ежа с ужом, если можно использовать каждый софт для того, что он делает хорошо? 3д-пакет - для редактирования геометрии, а игровой редактор - для расстановки лампочек и энтить.

Сообщить модератору | | IP: Записан
Сообщение: 195691

Старое сообщение 14-07-2020 12:45
- За что?
nemyax
Нёмыч

Дата регистрации: Jul 2011
Проживает: (void)
Сообщений: 4133

Рейтинг



Government-Man
Затем, что в триде-редакторе имеются средства для привязки и автопривязки энтитей к конкретной геометрии. И тебе не надо скакать между хорошо делающими свою работу софтами, чтобы туда-сюда подгонять.

Сообщить модератору | | IP: Записан
Сообщение: 195693

Старое сообщение 14-07-2020 12:52
- За что?
thambs
мразь конченная

Дата регистрации: Mar 2006
Проживает: -
Сообщений: 6417

Рейтинг



Цитата:
Каждое ребро должно принадлежать ровно двум полигонам с одинаковым winding-ом.

Так же будет дырка если отдельные полигоны идеально прилегают друг к другу без t-junctionа.

__________________
http://www.moddb.com/mods/monorail-quest

Сообщить модератору | | IP: Записан
Сообщение: 195694

Старое сообщение 14-07-2020 12:56
- За что?
nemyax
Нёмыч

Дата регистрации: Jul 2011
Проживает: (void)
Сообщений: 4133

Рейтинг



thambs
Частный случай непошаренного ребра.

Сообщить модератору | | IP: Записан
Сообщение: 195696

Старое сообщение 14-07-2020 13:12
- За что?
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32191
Нанёс повреждений: 392 ед.

Рейтинг



Цитата:
FiEctro писал:
Было бы интересно пособирать карту чисто из моделей с -nocsg, как минимум загрузить оригинальный меш спонзы

CSG работает только для брашей, на модели не влияет.

Цитата:
FiEctro писал:
вот только как быть с детектором дырок?

Ну если у меша спонзы нет щелей, то нету и дырок. Я правда не знаю, будет ли вам охота подгонять всё точно, моделлеры в этом довольно небрежны.
С другой стороны - нет необходимости это проделывать для каждого полигончика, надо только отделить детайлы от структуралов. Ну это и через материал можно. Для построения дерева и детектирования дырок брашы не нужны, они оперируют точно такими же полигонами, ну да, желательно выпуклыми.

Цитата:
FiEctro писал:
Компилятор же видит модели просто как точечный объект?

Смотря какой. NT-шный грузит модель, достаёт треугольники и встраивает их в карту, прямо в дерево. И режет на зоны-порталы.

Цитата:
FiEctro писал:
Хотелось бы увидеть твоё видение как это всё должно работать.

я блендер не знаю. Поэтому и спрашиваю совета у товарищей.

Цитата:
nemyax писал:
Каждое ребро должно принадлежать ровно двум полигонам с одинаковым winding-ом.

да ну глупости какие. Дырка будет, если в этом месте портал не создастся.
Точнее говоря изначальный портал дырку закроет, но потом его чем-нибудь порежет.

Цитата:
nemyax писал:
Я пытался найти популярный формат геометрии, который бы хранил заданные пользователем ключ-значения для объектов, но без толку.

Ищи, вроде бы не такое уж сложное требование. Даже странно.

Добавлено 14-07-2020 в 16:27:

Корочи, ну её нахрен эту трипланарную проекцию, так толку не будет.
Посмотрел как в сталкере сделано.
У них там очень простая и эффективная замута под странным названием
Orbitrary Oriented Ortho - Projection
найди где мы опечтались, что называется. Впрочем в сталкере такого хватает, там к примеру есть класс Menager.

Так вот, суть алгоритма - берём все фейсы соседей, добавляем их в одну группу (Deflector в терминологии сталкера). Ну это и так понятно, это то, что я вообще сделал в первую очередь, еще для трипланарной проекции.

Далее, находим самый здоровый полигон и от него начинаем добавлять в группу дефлектора, начиная именно с него. Понятно почему, чтобы в новой проекции все мелкие фейсы прилепились вокруг большого и не сильно искажали финальный размер куска лайтмапы.

При добавлении, нам надо следить за тем, чтобы атлас не замкнулся сам на себя, поскольку, как вы понимаете, геометрия может быть замкнутая, а лайтмапа нет, это же получилась бы бесконечная лайтмапа.
Это тоже очень просто - делаем дот между соседями, смотрим, чтобы там угол не превышал некоего глобального значения, наверное где-то в настройках компиляции. Ну понятно, чтобы атлас не завернулся сам на себя.
Теперь как матрица строится. Очень просто. Сумма нормалей всех треугольников (несглаженных), умножается на 1.0 + FLT_EPSILON * TriArea. Типа чтобы регулировать вклад нормали в зависимости от площади треугольника.
Дальше от полученной нормали (она кстати может и не получиться, всякое бывает), строим ортогональный базис, ну типа MakeNormalVectors и обычную ModelView через LookAt. И всё! Теперь мы нашей матрицей каждый вертекс трансформируем и используем его x,y как координаты лайтмапы.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

Сообщить модератору | | IP: Записан
Сообщение: 195697

Старое сообщение 14-07-2020 13:27
-
nemyax
Нёмыч

Дата регистрации: Jul 2011
Проживает: (void)
Сообщений: 4133

Рейтинг



Цитата:
Дядя Миша писал:
Orbitrary

Праезвольный?

Цитата:
Дядя Миша писал:
Ищи, вроде бы не такое уж сложное требование

Ну вот мап разве что.

Сообщить модератору | | IP: Записан
Сообщение: 195698

Старое сообщение 14-07-2020 13:31
- За что?
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32191
Нанёс повреждений: 392 ед.

Рейтинг



nemyax может они имели в виду орбиту?

Добавлено 14-07-2020 в 16:56:

Кстати да, в сталкере Instant Radiosity, как и в халфе. А вы думали, чего на статике такая приятная картинка.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

Сообщить модератору | | IP: Записан
Сообщение: 195699

Старое сообщение 14-07-2020 13:56
-
FiEctro
Кот Арсис

Дата регистрации: Aug 2006
Проживает: код
Сообщений: 12885
Возраст: 32

Рейтинг



>> я блендер не знаю. Поэтому и спрашиваю совета у товарищей.

Это скорее .obj, впрочем если хочешь какой то другой фомат, там .blend или .fbx говори, сохраню их.

Сообщить модератору | | IP: Записан
Сообщение: 195703

Старое сообщение 14-07-2020 14:15
- За что?
Crystallize
Житель форума

Дата регистрации: Jul 2007
Проживает: Новосибирск
Сообщений: 4415
Возраст: 34

Рейтинг



Цитата:
Дядя Миша писал:
При добавлении, нам надо следить за тем, чтобы атлас не замкнулся сам на себя, поскольку, как вы понимаете, геометрия может быть замкнутая, а лайтмапа нет, это же получилась бы бесконечная лайтмапа.

По приколу замкнутый атлас раскрыть как зонтик, чтобы получилось кольцо, и спроецировать на квадраную лайтмапу.

Цитата:
Дядя Миша писал:
Кстати да, в сталкере Instant Radiosity, как и в халфе. А вы думали, чего на статике такая приятная картинка.

Она приятная уже потому что Radiosity или конкретно потому что Instant? Как кстати они избегают комбинаторного взрыва на открытых картах?

Сообщить модератору | | IP: Записан
Сообщение: 195704

Старое сообщение 14-07-2020 14:35
- За что?
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32191
Нанёс повреждений: 392 ед.

Рейтинг



Цитата:
Crystallize писал:
Как кстати они избегают комбинаторного взрыва на открытых картах?

Для солнца вопрос некорректный, там GI вообще по другому работает, в том числе и в халфе. ~50% лучей все равно уходят обратно в небо. Т.е. нам же не надо замащивать патчами небесную коробку, так что по сути никакого взрыва там и нету. Но оптимизация есть, очень простая, примерно такая же как в халфе- радиус, в который попадают все источники, свет считается только от них. В халфе-то по PVS, т.е. более корректно это было. Ну для открытых пространств пофигу обычно.

Теперь, когда я объяснил, как там лайтмапы проецируются, у вас наверняка остался самый важный вопрос - ну ок, построили мы там эту проекцию рассчитали UV и толку? Как нам теперь найти точки в 3D, соответствующие нашей проекции? Вопрос нихрена не праздный, т.к. пространство свёрнуто (в смысле одно измерение убрали) и реконструировать его обратно не получится ни через какую матрицу. Можно конечно действовать напрямую - с определённым шагом в 3д опять расставлять точки на треугольнике и трансформировать их в пространство люкселя, но такой подход скорее всего даст неравномерную лайтмапу либо какие-то разрывы.
Поэтому используется всё же обратный способ преобразования.
Берётся итератор лайтмапы по width\height. Для получившихся uv барицентрически считается попадание в треугольник. Ну там скорее всего с небольшими бордюрчиками, чтобы не попасть по шву. И вот если он у нас попал, мы просто барицентрик UVW преобразуем в WorldSpace - у нас же треугольник, это готовая матрица фактически, для преобразования туда-обратно. И вот у нас уже сразу есть абсолютно валидная позиция для сбора прямого света, аналогично барицентрически считается и нормаль. А результаты сбора идут сразу в люксель.
И всё, никакой чертовни с подгонкой этих ворлд позиций на валидные места, никаких трасс, ни-че-го. И с этой точки сразу зовём GatherSampleLight или как он у них там называется LightPoint, неважно.

Но кстати, в сталкере нет светящихся поверхностей. Там только солнце, поинтлайты и виртуальные вторичные источники.

Добавлено 14-07-2020 в 18:37:

Кстати еще один любопытный момент - для каждого треугольника потом отдельно рендерятся эджы. Но я хз зачем это, может из-за джиттера в основном проходе?

Добавлено 14-07-2020 в 18:41:

И бардюры там есть по дефолту, видать для бикубической фильтрацыы.

Добавлено 14-07-2020 в 18:43:

Лайтмайппер в двух режимах работает. Либо классические RGB-люксели, либо полусферы пишет. Второе, я так понимаю, для освещения персов.
Так что не удивлюсь, если в движке увижу лукап в лайтмапу.

Добавлено 14-07-2020 в 18:44:

Да, еще вот какой момент - я смотрю сорцы Open X-Ray, не оригинальные.
Мож там энтузазисты чего-то попереписывали.

Добавлено 14-07-2020 в 18:45:

Хотя, стоп, полусферы, это жы для Bent Normals. Для реалтаймового GI.

Добавлено 14-07-2020 в 18:58:

Да, я ж собственно за процесс маппинга сказать хотел, но чёт увлёкся.

Вообщем какой я вариант предлагаю, надеюсь это приемлимо.

1. кубаем в блендере целую команту с произвольной архитектурой, ну или не комнату, а зал, ландшафт, корочи сектор. Дальше ставим этот сектор на карту через какой-нибудь misc_model, окружаем скайбоксом, прорезаем в скайбоксе дырдочку-выход из сектора, туда лепим ареапортал.

2. Повторяем пункт 1, совмещаем оба сектора в пространстве через этот портал. Есть вариант, накубать сразу всю карту, а потом разделить целую геометрию порталами. Есть вариант эти брашы вокруг модели сгенерить автоматически, но тогда из такого помещения не будет выхода.

Есть вариант полностью отказаться от брашей, но это очень неудобно, потому что брашами хорошо задавать объем сложной формы - воду, триггеры. Собсно, для этого они по большей части и нужны. Ну и примитивную невидимую геометрию для генерации порталов. Но это уже по желанию.

Добавлено 14-07-2020 в 18:59:

ЗЫ. я как-нибудь попробую построить BSP без брашей, для триангл-модели, типа той же спонзы, посмотрю, будут ли утечки.

Добавлено 14-07-2020 в 21:23:

Из серии "это любопытно". В сталкере по дефолту четыре люкселя на метр.
В халфе - люксель на каждые 36 сантиметров, т.е. втрое выше.
Правда тут непонятно, это на квадратный метр. Если да, тогда всё наоборот.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

Сообщить модератору | | IP: Записан
Сообщение: 195705

Старое сообщение 14-07-2020 18:23
-
FiEctro
Кот Арсис

Дата регистрации: Aug 2006
Проживает: код
Сообщений: 12885
Возраст: 32

Рейтинг



>> Есть вариант полностью отказаться от брашей, но это очень неудобно, потому что брашами хорошо задавать объем сложной формы - воду, триггеры. Собсно, для этого они по большей части и нужны. Ну и примитивную невидимую геометрию для генерации порталов. Но это уже по желанию.

Можно в самом движке сделать xash.exe -editmode где ты просто загружаешь модель или map файл на проект сцены ( scene.xsh например ), и задаёшь объектам которые уже расставлены в 3д редакторе параметры прямо в этом моде, там же ты сразу можешь протестировать поведение твоих дверей, триггеров и т.д. , расставить лампочки, монстров, инфоплеер старт и теже самые триггеры. Задать дерево объектов парент системы, подцепить скрипты и т.д.

Пишешь в консоли buildmap *mapname*, движок сворачивается, запускает компилятор который компилирует всё это дело в bsp, запускает движок и включает твою карту уже в игровом режиме. Вроде как примерно так анрил энджин и работает.

В случае с map можно ещё и импортировать сразу значения этих объектов. И те кто любят кубать по старинке, ничего не надо будет делать дополнительно, они просто загружают карту на сцену и компилируют. Только у них ещё появится возможность протестировать все энтитии прямо в движке не компилируя карту. И здесь ещё один плюс! Можно будет редактировать эти объекты на уже откомпилированной чужой карте без исходников, либо вообще загрузить любую другую карту из первой халфы или кваки как меш, импортировать объекты и заново скомпилить под новый движок!

Для очень мелких дырок кстати можно сделать fill gaps чтобы их компилятор автоматически затыкал. Странно что в халфовских компиляторах этого так и не сделали.


Так же и главное меню игры можно сделать отдельным БСП с заскриптованными кнопочками и камерой.

Отредактировано FiEctro 15-07-2020 в 07:35

Сообщить модератору | | IP: Записан
Сообщение: 195710

Старое сообщение 15-07-2020 07:19
- За что?
Cybermax
Житель форума

Дата регистрации: May 2006
Проживает: ㅤ
Сообщений: 5126

Рейтинг



Цитата:
FiEctro писал:
Так же и главное меню игры можно сделать отдельным БСП с заскриптованными кнопочками и камерой.



Меню без стандартных пунктов, а карта с интерактивными объектами, ты это имеешь ввиду?

Сообщить модератору | | IP: Записан
Сообщение: 195711

Старое сообщение 15-07-2020 08:15
- За что?
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32191
Нанёс повреждений: 392 ед.

Рейтинг



Цитата:
FiEctro писал:
Для очень мелких дырок кстати можно сделать fill gaps

да дырки не так уж и важны, повторюсь

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

Сообщить модератору | | IP: Записан
Сообщение: 195712

Старое сообщение 15-07-2020 08:15
-
Тема: (Опционально)
Ваш ответ:



Переводчик транслита


[проверить длину сообщения]
Опции: Автоматическое формирование ссылок: автоматически добавлять [url] и [/url] вокруг интернет адресов.
Уведомление по E-Mail: отправить вам уведомление, если кто-то ответил в тему (только для зарегистрированных пользователей).
Отключить смайлики в сообщении: не преобразовывать текстовые смайлики в картинки.
Показать подпись: добавить вашу подпись в конец сообщения (только зарегистрированные пользователи могут иметь подписи).

Временная зона GMT. Текущее время 15:20. Новая тема    Ответить
Страницы (240): « Первая ... « 106 107 108 109 [110] 111 112 113 114 » ... Последняя »   Предыдущая тема   Следующая тема
HLFX.Ru Forum HLFX.Ru Forum > Разработка игр > Наши проекты > XashNT: блог разработчика
Часть I
Версия для печати | Отправить тему по E-Mail | Подписаться на эту тему

Быстрый переход:
Оцените эту тему:

Правила Форума:
Вы not можете создавать новые темы
Вы not можете отвечать в темы
Вы not можете прикреплять вложения
Вы not можете редактировать ваши сообщения
HTML Код ВЫКЛ
vB Код ВКЛ
Смайлики ВКЛ
[IMG] Код ВКЛ
 

< Обратная связь - HLFX.ru >

На основе vBulletin
Авторское право © 2000 - 2002, Jelsoft Enterprises Limited.
Дизайн и программирование: Crystice Softworks © 2005 - 2024