HLFX.Ru Forum
профиль •  правила •  регистрация •  календарь •  народ •  FAQ •  поиск •  новое •  сутки •  главная •  выход  
HLFX.Ru Forum HLFX.Ru Forum > Разработка игр > Наши проекты > XashNT: блог разработчика
Часть I
Страницы (241): « Первая ... « 123 124 125 126 [127] 128 129 130 131 » ... Последняя »   Предыдущая тема   Следующая тема
Автор
Тема Новая тема    Ответить
 Дядя Миша
racing for fish

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

Рейтинг



Цитата:
ncuxonaT писал:
лайтгруппы нужны только раду? Но развертку под лайтмапу создает бсп?

всё верно.

__________________
My Projects: download page

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

Цитата:

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

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

Старое сообщение 03-12-2020 17:16
-
ncuxonaT
каков стол, таков и стул

Группа: Опытный
Дата регистрации: Oct 2009
Проживает: город/село/деревня
Сообщений: 1626
Возраст: 33

Рейтинг



Дядя Миша как сложно с вашим радом. Тогда да, наверное, способ со хранением прямоугольников проще. Еще можно было бы искать по соприкасающимся ребрам на развертке. В таком случае лайтгруппы могли бы быть невыпуклыми. В смысле не надо было бы под лайтгруппу отдавать целый прямоугольник.

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

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

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

Рейтинг



Цитата:
ncuxonaT писал:
Еще можно было бы искать по соприкасающимся ребрам на развертке.

можно, да, но это хреновый критерий для привязки. Неоднозначный.

Цитата:
ncuxonaT писал:
как сложно с вашим радом.

пока игрушечные сцены компилишь - пофигу.

__________________
My Projects: download page

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

Цитата:

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

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

Старое сообщение 03-12-2020 20:09
-
 Дядя Миша
racing for fish

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

Рейтинг



Переделал концепцию, как описано выше. Стало на порядок удобнее.
Во первых, реконструкция групп - очень быстрая, пару секунд буквально.
Во вторых, с учётом сделанных изменений, лайтмаппер вообще не модифицирует BSP, ему это просто не нужно. Только сами лайтмапы.
Правда остаётся еще вопрос с повертексным освещением, но прежде чем его решить, надо придумать что делать с дубликатами. Как им накладывать лайтмапу, как повертексное. Причём этот момент вообще самый сложный, надо очень многое продумать. Как это всё рисовать, как выполнять коллизию.

Добавлено 05-12-2020 в 13:37:

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

Добавлено 05-12-2020 в 13:37:

Ну да ладно, пособираю статистику, как часто происходит это превышение.

Добавлено 05-12-2020 в 14:25:

Что еще любопытно - я полагал что уменьшение размера вертекса хорошо уменьшит конечный размер BSP-файла. Но по факту снижение произошло всего на 1/6. Все эти дубликаты дают такой чудовищный размер.

Впрочем я неплохо оптимизировал компилятор по потреблению памяти и даже с таким негативным сценарием он отлично справляется, среднее потребление всего 700 мегабайт на сталкеровских картах.
Так я уже и лост-альфовские пробую.

__________________
My Projects: download page

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

Цитата:

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

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

Старое сообщение 05-12-2020 11:25
-
Ku2zoff
Мастер Ёда из Деревни Дуракоф

Дата регистрации: Apr 2007
Проживает: В Деревне дураков
Сообщений: 6749
Возраст: 33

Рейтинг



Цитата:
Дядя Миша писал:
Так я уже и лост-альфовские пробую.

А они сильно более детализированные, или только из-за размера сложнее? Я вот сейчас всё-таки прохожу 1.4007, и порой возникает желание дать по морде тому, кто некоторые из них так удлиннил. Кордон на севере, Свалка и Металлургическая Фабрика на юге имеют просто бесполезные кишки по 200-300 метров, где ничего нет. Локации в целом классные, если их поурезать и выбросить незанятое место, будет отлично.

Добавлено 05-12-2020 в 18:37:

Ах да, ещё Тёмная Лошина. Именно лошина (по состоянию души автора), потому что нормальному человеку не придёт в голову делать локацию-кишку, на которой всего несколько мест для посещения и дебильный километровый жд тоннель.

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

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

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

Рейтинг



Цитата:
Ku2zoff писал:
А они сильно более детализированные, или только из-за размера сложнее?

да там вроде бы и то и это.
Была какая-то локация - 98 килоюнитов в поперечнике.
Болота из CS - 59 килоюнитов квадрат. Очень хорошая локация.

__________________
My Projects: download page

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

Цитата:

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

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

Старое сообщение 05-12-2020 13:19
-
 Дядя Миша
racing for fish

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

Рейтинг



ncuxonaT кстати ты был частично прав, действительно запись кусков в лайтмапу занимает часть времени от построения атласа. 56 страниц 1024х1024 писались почти 2 минуты.

Добавлено 06-12-2020 в 11:16:

И да, я ради интереса перекроил этот механизм, выделил память под ноды одним большим куском. Сразу под все ноды. Кусок лайтмапы с бордюром занимает 3х3 пикселя, страница 1024х1024, значит выделяем (width / 3)* (height / 3) + 1 (корневая нода), около 17 мегабайт. Ну не фатально.
И время построения вообще не поменялось. Как было пару минут так и осталось. Значит рекурсия всё убивает.

__________________
My Projects: download page

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

Цитата:

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

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

Старое сообщение 06-12-2020 08:16
-
 Дядя Миша
racing for fish

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

Рейтинг



Разобрался как в сталкере устроено освещение. Вообщем для солнца лайтмапа в явном виде не хранится. Оно и понятно, нужна смена времени суток. Хранится hemisperical lighting и теневая карта. Hemispherical годится для любого времени суток, а вот теневая карта, увы только для одного направления. Впрочем, я думаю, можно рассчитать тени для всех положений солнца. Освещение по полусфере получается от виртуальных hemi-источников. В q3map2 была настройка q3map_skyLight, вот это оно и есть.
Просто генерятся лайты с равномерным распределением в несколько сторон, по окружности, симулируя непрямой свет. Если на ландшафте, допустим стоял какой-нибудь столб, то на лайтмапе прямо видно эти нечёткие тени от разных направлений и их можно посчитать. Чем больше равномерно распределённых таких источников, тем более качественной получается hemi-лайтмапа. Ну и в шейдере всё это смешивается - цвет от солнца (деномический), умножить на теневую карт плюс индирект + амбиент.
Для точечных лайтов хранится просто RGB-мапа с запечённым индиректом.
Этот же подход объясняет как при такой угробищной схеме построения атласа практически не видно швов. Индирект равномерный и его переходы не видны. Прямой свет накладывается попиксельно. А тени редко попадают в стрёмные места. Остаётся еще свет в помещениях, но там во первых VPLS для радиосити, а во вторых, в большинстве помещений - пусто. Голые стены и немного предметов. Так что заметить швы нереально. Но мне конечно такой способ построения атласа не годится. У Микрософта есть UVAtlas какой-то, он раньше был частью DXSDK, но они апублековали сорцы. И вот все кто юзал DX с незапамятных времен его использовали для генерации. Помоему это одна из первых имплементаций LSCM (статья от 2002-го года). Конечно это занимает порядочно времени, но с другой стороны - это всё равно сохранится в статик-мешах моего формата. Так что пофиг. Один раз посчитать и всё.
А для брашей можно и мои hashed LM axis юзать, они хорошо спровляются.

__________________
My Projects: download page

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

Цитата:

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

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

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

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

Рейтинг



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

__________________
My Projects: download page

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

Цитата:

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

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

Старое сообщение 07-12-2020 14:24
-
ncuxonaT
каков стол, таков и стул

Группа: Опытный
Дата регистрации: Oct 2009
Проживает: город/село/деревня
Сообщений: 1626
Возраст: 33

Рейтинг



Дядя Миша https://www.sebastiansylvan.com/pos...esTextureSeams/

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

Старое сообщение 07-12-2020 14:34
- За что?
ncuxonaT
каков стол, таков и стул

Группа: Опытный
Дата регистрации: Oct 2009
Проживает: город/село/деревня
Сообщений: 1626
Возраст: 33

Рейтинг



Единственное что, направление градиента нужно сбрасывать периодически. Я в ConjugateGradientOptimize на каждой 10 итерации ставлю beta = 0.0;

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

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

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

Рейтинг



Дядя Миша
Эти сталкеровские карты как-то делятся (на сектора?) или это всё один огромный кусок геометрии?

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

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

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

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

Рейтинг



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

Но использовать Conjugate Gradient Solver мне как-то в голову не пришло.
Да дело вообще не в солверах, я уверен. Дело в том, что я вероятно не понимаю истинной природы швов этих. К тому жы там как минимум два варианта может быть - несовпадение цветов люкселей и несовпадение их оригинов. И вторая проблема куда серъезнее. Вот у нас допустим пятно света. Переходит на два полигона. И на втором люксели сдвинуты относительно первых на половинку. Ну и всё - пятно со швом. И это уже никакими градиентами не поправишь.

Кстати, непомню кто, но кто-то авторитетный говорил - пофиг на повороты лайтмапы, главное чтобы не было швов. То есть, если у нас лайтмапа повернута даже на 45 градусов, то это ок. Но я не согласен. Повернутые люксели тоже выглядят как говно.

Цитата:
thambs писал:
Эти сталкеровские карты как-то делятся (на сектора?) или это всё один огромный кусок геометрии?

Делятся, но без фанатизма. В отличие от BSP, который явно стремится нарезать геометрию по секущей плоскости, здесь просто идёт пространственная группировка для того чтобы отрисовать сразу побольше полигонов, если они оказались в одном месте. Ничего не режется, просто делится на группы. В группе от 64 до 4096 треугольников обычно. Потом, когда лайтмапа построена, их можно дополнительно смержить.

Добавлено 08-12-2020 в 09:18:

Цитата:
Дядя Миша писал:
Для брашей это работает плохо из-за T-Junc.

Кстати первоначальный вариант нахождения групп искал не смежные рёбра, а просто коллинеарные. Надо наверное вернуть это повидение для брашей. Ну или второй вариант - построить T-Junc и они свяжут эти сурфейсы через себя. Заодно по швам на лайтмапе можно будет проверять качество их удаления.

Добавлено 08-12-2020 в 09:22:

А, да. Я жы всё-таки вчера опробовал LSCM. Линейный солверов в сети до чёрта, но они обычно идут в составе какой-то гигантской библиотеки, типа Eigen или OpenNL, и достать оттуда только то что надо, проблематично.
Но я нашёл старенькую OpenNL еще с реализацией солверов на шаблонах и подключил их. Ну что сказать? Наверное лыжы не едут.

Механихм рабочий, но качество разбивки отвратительное. Причём исходные значения текскордов солвер вообще мало волнуют. Я довольно много разных параметров там крутил и получал стабильно отвратительный результат.
Обычно вполне хорошую поверхность разрывает на 2-3 по случайному принципу. Не знаю, что ему надо. Надо будет еще попробовать нвидиевскую релизацию из Thekla_Atlas.

Добавлено 08-12-2020 в 09:29:

А, насчёт градиентов. В сталкере используется эффективный метод их применения и в тоже время очень простой. Там каждый люксель помечен маркером - было ли в него попадание. Даже не света или трассы, а просто - попал ли этот люксель в треугольник или хотя бы на его ребро. Ну а дальше Average Occluded Samples, по типу как в ку3 у Кармака, но хитрее.
Там задаётся уровень значений этого маркера. Если люксель строго попадает внутри геометрии, то у маркера значение 255. А у остальных градиентов - 254 и так далее по убывающей. То есть по сути это тоже СЛАУ, но весьма быстрое. Оно каждый раз ищет сумму люкселей с маркером выше чем у текущего, заглядывая в 8 соседей.
Этот эффект можно увидеть на лайтмапах в сталкере. Некоторые места этих лайтмап выглядят как нисходящий градиент в прямой угол. Я правда хз, надо ли было так заморачиваться, ведь достаточно одного сторожевого люкселя.

Добавлено 08-12-2020 в 11:22:

Вот к примеру львиная голова из кутри. Ну что это такое?
Технически это мало чем отличается от исходных текстурных координат.

Добавлено 08-12-2020 в 12:39:

У LSCM есть одна очень мерзкая особенность. Он на вход принимает уже готовую параметризацию и растягивает квадраты. Но если параметризация была выполнена с разбивкой на раздельные фейсы то адекватного результата дождаться не получится.

Вот с примером этого льва. Там на половинки текстура отзеркалена.
Результат соответствующий. Я могу конечно нагенерить абстрактные координаты, но вертексы от этого не станут смежными, поскольку текскорды не дают им это сделать.
Есть вариант с другой разбивкой, хранить текскорды в фейсе, а точки - отдельно, но это опять гонять объемы данных.

Вложение: lm_0006.bmp (48.1 кб)
Этот файл был скачан 41 раз.

__________________
My Projects: download page

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

Цитата:

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

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

Старое сообщение 08-12-2020 09:39
-
 Дядя Миша
racing for fish

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

Рейтинг



Хех, ну чтож я оказался прав. Солверу критически важны входные данные.
Иными словами, если подать ему на вход уже существующую параметризацию в виду текстурных координат, то и на выходе мы получим ну примерно такие же текстурные координаты, только в профиль.
То есть впустую потратим время. Решение заключается в том, чтобы убрать из вертексов текстурные и лайтмапные координаты и перенести их в структуру фейса. Тогда мы сможем абсолютно точно подсчитать кол-во уникальных вертексов, сгенерить абстрактную проекцию в качестве начальной параметризации (просто выберем какой-нибудь произвольный угол или короткую сторону ббокс, это вообще плевать, солвер сам растянет квадраты правильно), и подать это на вход. И вот тогда у нас получится что-то нормальное. Вот такой симпатичный лёва у меня тепреь получился.

Вложение: lm_0007.bmp (48.1 кб)
Этот файл был скачан 47 раз.

__________________
My Projects: download page

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

Цитата:

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

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

Старое сообщение 08-12-2020 10:46
-
ncuxonaT
каков стол, таков и стул

Группа: Опытный
Дата регистрации: Oct 2009
Проживает: город/село/деревня
Сообщений: 1626
Возраст: 33

Рейтинг



Цитата:
Дядя Миша писал:
И на втором люксели сдвинуты относительно первых на половинку. Ну и всё - пятно со швом. И это уже никакими градиентами не поправишь.

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

Я именно так и делаю. Тжунки не учитываю вообще.
Цитата:
Дядя Миша писал:
А, насчёт градиентов. В сталкере используется эффективный метод их применения и в тоже время очень простой. Там каждый люксель помечен маркером - было ли в него попадание. Даже не света или трассы, а просто - попал ли этот люксель в треугольник или хотя бы на его ребро.

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

А что у симпатичного лёвы с искажениями и равномерностью?

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

Старое сообщение 08-12-2020 13:25
- За что?
Тема: (Опционально)
Ваш ответ:



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


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

Временная зона GMT. Текущее время 23:11. Новая тема    Ответить
Страницы (241): « Первая ... « 123 124 125 126 [127] 128 129 130 131 » ... Последняя »   Предыдущая тема   Следующая тема
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