HLFX.Ru Forum
профиль •  правила •  регистрация •  календарь •  народ •  FAQ •  поиск •  новое •  сутки •  главная •  выход  
HLFX.Ru Forum HLFX.Ru Forum > Разработка игр > Наши проекты > XashNT: блог разработчика
Часть I
Страницы (255): « Первая ... « 66 67 68 69 [70] 71 72 73 74 » ... Последняя »   Предыдущая тема   Следующая тема
Автор
Тема Новая тема    Ответить
nemyax
Нёмыч

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

Рейтинг



ncuxonaT
Сам по себе smd ничего токова не делает. Хочешь раздельные вершины — записывай туда раздельные индексы.

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

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

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

Рейтинг



Цитата:
ncuxonaT писал:
Smd объединяет вершины с одинаковыми координатами в одну вершину, это не круто.

Это кто тебя так обманул?

studiomdl этим действительно занимается, но это его дело. В хл2, к примеру ничего подобного не происходит, хотя модель создается из точно таких же smd-шек.

Накидал тут примерные структуры будущего формата BSP. Основной упор сделан на максимальную прозрачность. Т.е. не хранить ничего такого, что в дальнейшем устареет и не будет востребовано.

Добавлено 25-02-2020 в 14:54:

Цитата:
nemyax писал:
Хочешь раздельные вершины — записывай туда раздельные индексы.

smd вообще не поддерживает индексы и слава богу. В текстовом формате они только место зря занимают.

Добавлено 25-02-2020 в 15:11:

Вообще, что для текстового формата в приоритете должно быть?
1. неизменность формата. Для текстового подобное правило соблюсти невероятно тяжело, потому что некоторым товарищам очень хочется предусмотреть вообще всё на какие-то мифические будущие случаи. Для smd это правило слава богу соблюдается, за 23 года единственное расширение формата - это развесовка.

2. упор на максимально быстрый парсинг. Аналогично, здесь smd вне конкуренции, поскольку он парсится не словами, а строками. А строка читается при помощи sscanf, который на порядок быстрее чем COM_ParseFile. Я знаю о чём говорю, когда-то давно, году в 2007-м я переделывал .smd парсер вот как раз на COM_ParseFile и на гигантских моделях получил чудовищное падение скорости чтения, раз в 8 примерно.

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

4. возможность ручного редактирования. И здесь smd без равных, потому что данные идут предсказуемыми блоками безо всякой индексации. Я помню, как в том же .ase пытался заменить материал, а он не менялся и в итоге выяснилось, что там записано несколько одинаковых материалов - формат-то позволяет. В .smd просто включаешь автозамену и никаких сюрпризов. Ну и тот факт, что любой меш всегда привязан к кости в данном случае благо - мы всегда можем его быстренько покрутить или подвинуть целиком на какое-то расстояние. А вы попробуйте этот же фокус проделать в .ase или .obj. Obj кстати имеет милую привычку ссылаться на внешний материал описания файлов (тоже разумеется текстовый), но цымес в том, что имена ссылок вполне могут совпадать с реальными текстурами, поэтому одни парсеры считают эти ссылки путями к текстурам, а другие падают с ошибкой о том, что mtllib.c не найден.

Я с этими текстовыми форматами уже второй месяц вожусь плотно, я ведь сперва тоже думал, что они все примерно одинаковые и удобные. Хрен-то там. Дичь лютая творится. Я уже в .ase парсере сделал кучу магических условий, чтобы он мог адекватно парсить разные выхлопы экспортёров.
То что было закомпилено при помощи q3map2 надо свапать вертексами и потом еще дополнительно вращать на 90 градусов, то чтобы сделано при помощи самописного экспортёра от авторов X-Real, надо свапать индексами, при том, что сбор имён текстур материалов - само по себе увлекательнейший квест, оно может быть прописано как в MAP_NAME так и в BUTMAP так и в MATERIAL_NAME, либо в сабсекции DIFFUSE_NAME, где есть очередные BITMAP и MAP_NAME. И каждый экспортёр это оформляет как ему больше нравится.

Вложение: bspfile_new.zip (1.4 кб)
Этот файл был скачан 84 раз.

__________________
My Projects: download page

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

Цитата:

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

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

Старое сообщение 25-02-2020 12:11
-
ncuxonaT
каков стол, таков и стул

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

Рейтинг



Цитата:
Дядя Миша писал:
Это кто тебя так обманул?

studiomdl этим действительно занимается, но это его дело. В хл2, к примеру ничего подобного не происходит, хотя модель создается из точно таких же smd-шек.

Как оно определяет, это одна вершина или несколько разных?

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

Старое сообщение 25-02-2020 13:19
- За что?
thambs
мразь конченная

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

Рейтинг



Цитата:
Дядя Миша писал:
типа тех же индексов или цветов вертекса либо еще какой-то чертовщины

VertexBlend же для ландшавтных-моделей очень удобен безо всяких хейтмэп, или ты не об этом?

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

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

Старое сообщение 25-02-2020 13:33
- За что?
ncuxonaT
каков стол, таков и стул

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

Рейтинг



Цитата:
Дядя Миша писал:
3. не пытаться сохранить в модель избыточную информацию,

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

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

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

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

Рейтинг



Цитата:
ncuxonaT писал:
Как оно определяет, это одна вершина или несколько разных?

то, чем занимается studiomdl вообще делалось для immediate отрисовки.

Цитата:
thambs писал:
VertexBlend же для ландшавтных-моделей очень удобен безо всяких хейтмэп, или ты не об этом?

Да, но цвета задаст компилятор, в .smd им просто нечего делать.

Цитата:
ncuxonaT писал:
Хранить на каждый треугольник полностью 3 вершины - это и есть избыточная информация

под избыточной я имел виду всякие дополнительные атрибуты.
А то, что текстовый формат неиндексирован - так это очень большой прирост в скорости парсинга, я выше объяснял почему.

Добавлено 25-02-2020 в 18:58:

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

Добавлено 25-02-2020 в 19:00:

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

__________________
My Projects: download page

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

Цитата:

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

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

Старое сообщение 25-02-2020 16:00
-
ncuxonaT
каков стол, таков и стул

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

Рейтинг



Цитата:
Дядя Миша писал:
то, чем занимается studiomdl вообще делалось для immediate отрисовки.

Как это меняет тот факт, что информация теряется во время экспорта в smd? После него либо сливай все вершины в одну, либо не сливай ни одной.

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

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

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

Рейтинг



Цитата:
ncuxonaT писал:
Как это меняет тот факт, что информация теряется во время экспорта в smd?

какая именно информация теряется во время какого экспорта и причём тут вообще smd?

__________________
My Projects: download page

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

Цитата:

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

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

Старое сообщение 25-02-2020 16:34
-
nemyax
Нёмыч

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

Рейтинг



ncuxonaT
На развесовку смотри. Совпадает — клеишь.

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

Старое сообщение 25-02-2020 16:41
- За что?
ncuxonaT
каков стол, таков и стул

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

Рейтинг



Дядя Миша информация об индивидуальных вершинах теряется при записи в smd. Бывает такое, что вершин одинаковые координаты, но они при этом принадлежат разным треугольникам. После экспорта в smd этого уже не восстановить, вершины сольются в одну, у треугольников появится общее ребро. TBN будет строиться криво, привет швы из дума 3.

Добавлено 25-02-2020 в 19:53:

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

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

Старое сообщение 25-02-2020 16:53
- За что?
nemyax
Нёмыч

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

Рейтинг



Цитата:
ncuxonaT писал:
у треугольников появится общее ребро

Значения нормалей по углам от этого не изменятся.

Добавлено 25-02-2020 в 19:59:

В конечном итоге ты всё равно не знаешь, какие вершины в какой момент на видимокарте окажутся склеены и какая там будет индексация. Дядя Миша пострипает, как ему нравится, или уложит всё под вызов какого-нибудь glDrawElements на своё усмотрение.

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

Старое сообщение 25-02-2020 16:59
- За что?
ncuxonaT
каков стол, таков и стул

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

Рейтинг



Цитата:
nemyax писал:
Значения нормалей по углам от этого не изменятся.

Зато изменится тангент вектор, который станет нулевым.
Цитата:
nemyax писал:
В конечном итоге ты всё равно не знаешь, какие вершины в какой момент на видимокарте окажутся склеены и какая там будет индексация. Дядя Миша пострипает, как ему нравится, или уложит всё под вызов какого-нибудь glDrawElements на своё усмотрение.

От стрипов и индексации ничего не случится. А вот переклеивать вершины не надо.

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

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

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

Рейтинг



Цитата:
ncuxonaT писал:
информация об индивидуальных вершинах теряется при записи в smd

Что такое "индивидуальные вершины" ?

Цитата:
ncuxonaT писал:
После экспорта в smd этого уже не восстановить, вершины сольются в одну

Да каким же это образом вершины сольются в одну?

C++ Source Code:
1
triangles
2
textures/moteof/walltrim2
3
0 -88.000000 112.000000 0.000000 0.000000 0.000000 -1.000000 6.745331 9.926242
4
0 -60.000000 84.000000 0.000000 0.000000 0.000000 -1.000000 6.745331 9.484300
5
0 -92.000000 104.000000 0.000000 0.000000 0.000000 -1.000000 6.997871 9.894674
6
textures/moteof/walltrim2
7
0 -60.000000 84.000000 0.000000 0.000000 0.000000 -1.000000 6.745331 9.484300
8
0 -68.000000 80.000000 0.000000 0.000000 0.000000 -1.000000 6.997871 9.515867
9
0 -92.000000 104.000000 0.000000 0.000000 0.000000 -1.000000 6.997871 9.894674

Описание треугольника:
C++ Source Code:
1
<путь к текстуре>
2
<номер кости> <x> <y> <z> <nx> <ny> <nz> <s> <t>
3
<номер кости> <x> <y> <z> <nx> <ny> <nz> <s> <t>
4
<номер кости> <x> <y> <z> <nx> <ny> <nz> <s> <t>

Объясни уже наконец, что тут такое должно потеряться?

__________________
My Projects: download page

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

Цитата:

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

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

Старое сообщение 25-02-2020 19:29
-
ncuxonaT
каков стол, таков и стул

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

Рейтинг



Дядя Миша строки 4 и 7 - это одна вершина? Строки 5 и 9 - это одна вершина?

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

Старое сообщение 25-02-2020 20:22
- За что?
nemyax
Нёмыч

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

Рейтинг



Цитата:
ncuxonaT писал:
изменится тангент вектор, который станет нулевым

А как его вычисляют?

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

Старое сообщение 25-02-2020 21:32
- За что?
Тема закрыта Дядя Миша 04-08-2024 в 10:49
Временная зона GMT. Текущее время 22:46. Новая тема    Ответить
Страницы (255): « Первая ... « 66 67 68 69 [70] 71 72 73 74 » ... Последняя »   Предыдущая тема   Следующая тема
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