Дядя Миша
Мда, сорс моделеры конечно как всегда в своём репертуаре срут миллионами текстур и материалов. Удивительно как движок с таким обилием справляется.
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
FiEctro писал: Удивительно как движок с таким обилием справляется.
Движок-то справляется, а вот пеки обкакиваются. Думаешь почему у первого сорса почти из неоткуда возникли системные требования на уровне CryEngine 1?
Добавлено 03-09-2022 в 23:08:
Цитата:
Дядя Миша писал: Сорс всех этим и удивил еще в 2003-м.
Были какие-то билды хл2 с мутными глазаме, видел на скринах. Но мне больше запомнились первые ператки хл2, где в русской озвучке персы не шевелили губами от слова совсем. А ещё этот вездесущий AI disabled.
Чёт эта моделька запеклась гораздо хужее превидущей. Ну и плюс в лайтмаппере есть недоработка на фазе сбора рассчитанного отражённого света. Там в крации в чём суть. Индирект традиционно считается в более низком разрешении, нежели прямой свет. Ну как и в халфе, собственно.
На поверхности генерируются патчи с шагом, ну там обычно 64\128, тогда как у люкселя размер 16\8 и меньше. После рассчёта индиректа отражённый свет применяется ко всему патчу. Который, как вы понимаете - заведомо больше чем люксель. Прикол в том, что нельзя эту низкочастотную сетку тупо (единственный случай, когда этот слово уместно), скопировать на сетку лайтмапы. Потому что низкочастотный индирект проявится на лайтмапе.
Поэтому используется фаза сбора с интерполяцией. В том же VHLT она может занимать даже больше времени, нежели сам рассчёт непрямого освещения.
Но это по сути не главное. Главное то, что структуры для интерполяции между соседними полигонами могут занимать дьявольски много памяти.
Те кто пользуются VHLT, могут открыть диспетчер задач на фазе FacePatchLights и охренеть. А у меня - большие карты из того же сталкера.
То есть не вариант. Поэтому у меня идёт сбор соседних сэмплов через поиск в заданном радиусе и окклюзии через трассу. Вот, собственно в радиусе этого поиска и есть вышеозвученная недоработка. Она равна фиксированному значению, заданному пользователю - аналог параметра -chop. А моделька напоминаю состоит из микрополигончиков. Ну вообщем можете догадаться, что на один люксель для интерполяции собирается несколько тысяч сэмплов. И фаза FacePatchLights может реально длиться около часа, хотя конечно в этом нет никакой необходимости.
Мне не нравится. С другой стороны - освещать персов лайтмапой довольно дурацкая затея.
Добавлено 04-09-2022 в 10:59:
А повертексное показывать не буду. Там страх и ненависть в Лас-Всегасе получилось. Интересно почему так? Может у меня парсер obj кривой?
Добавлено 04-09-2022 в 11:06:
У этого obj полный разброд и шатания. Может не так сильно, как в ase, но тоже ничего хорошего. Пример того, что корректно читает мой парсер:
C++ Source Code:
1
g models/doors/door4
2
usemtl Material01
3
s 1
4
f 3/1/1 2/2/1 1/3/1
5
f 2/2/1 4/4/1 1/3/1
6
f 1/3/1 4/4/1 5/5/1
7
f 1/3/1 5/5/1 6/6/1
8
f 6/6/1 5/5/1 7/7/1
9
f 5/5/1 8/8/1 7/7/1
Здесь он интерпретирует команду g как выделение нового меша, причём имя меша автоматически становится именем текстуры. Это не вполне корректно, но в Overdose, откуда, я собственно и брал первоначальную реализацию obj-парсера, абсолютно все модели так прописаны. Причём usemtl в них вообще игнорируется, оно и понятно, те параметры, которые прописаны в mtl файле просто не нужны. Да и зачастую там дефолт какой-то прописан.
Достаточно только имени материала. В smd с этим нет никаких проблем, поэтому я использую его по возможности.
Теперь - как выглядит моделька Alyx
C++ Source Code:
1
usemtl Trenchcoat
2
s 1
3
f 1/1/1 2/2/2 3/3/3
4
f 4/4/4 3/3/3 2/2/2
5
f 4/4/4 5/5/5 3/3/3
6
f 6/6/6 7/7/7 8/8/8
Ну выпонели. Меш не выделен вообще, зато назначена текстура.
То есть obj каждый парсит как хочет. Есть где-то эталонный obj-парсер?
Но опять же, это совсем не означает, что конкретный контент будет им правильно читаться, т.к. сам контент сделан уже с нарушениями стандарта. Вот поэтому я и люблю smd, там подобные ситуации в принципе невозможны. Никаких разночтений и отсебятины.
Дядя Миша писал: То есть obj каждый парсит как хочет. Есть где-то эталонный obj-парсер?
Так и есть. Обж - обжу рознь. Я где то даже видел обж с поддержкой скелетной анимации. А есть ещё обж с поддержкой групп.
Мне вот тут посоветовали либу с кучей форматов - https://assimp-docs.readthedocs.io/...troduction.html можно например на её базе сделать универсальный конвертер моделей разных форматов в формат ксаша, не знаю. Хотя по мне обычного .fbx на всё хватит.
Цитата:
Дядя Миша писал: Впрочем пару скринов всё же покажу
Черных швов уже меньше, это хорошо. Но сама лайтмапа выглядит странно. Но почему целиком они не ушли, модель то теперь нормальная? Кстати, что с расходом клипнодов? Надеюсь ты убрал этот дурацкий лимит? Я помню в халфе частенько приходилось оборачивать часть геометрии клипами, чтобы оно компилилось. А в некоторых случаях помогал только skip.
Цитата:
Дядя Миша писал: Мне не нравится. С другой стороны - освещать персов лайтмапой довольно дурацкая затея.
Зато это отличный стресс тест для компилятора. Тут тебе и куча полигонов, и сложная геометрия. И сами полигоны маленькие. И самое главное, у неё не такая кривая UV как у спонзы. Почему я и попросил опробовать эту модельку.
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
FiEctro писал: Хотя по мне обычного .fbx на всё хватит.
fbx дерьмо переусложнённое, я не хочу с ним связываться.
Цитата:
FiEctro писал: Черных швов уже меньше, это хорошо
Я вспомнил откуда швы. Генератор патчей для вторички отбрасывает патчи, размер которых меньше эпсилона 0.1. А в этой модели из-за кучи мелких треугольников очень много таких вот патчей. В сущности сама их природа плохо ложится на такую вот топологию. Я потом напишу новую версию компилятора, который вместо этих проблемных патчей будет для индиректа использовать люксели, из-за этого скорость рассчёта вторички резко упадёт, но можно написать рейтрейсер на CUDA, он обеспечит прирост скорости примерно в 10 раз, а значит то на то и выйдет. В результате получим эталонное вторичное освещение, и что немаловажно - уйдет ограничение по памяти на тренсферы, т.к. их больше не придётся хранить.
Ну это тоже всё потом, т.к. не горит.
Цитата:
FiEctro писал: Зато это отличный стресс тест для компилятора
Абсолютно нет. Это как кирпич засунуть в стиралку.
Добавлено 04-09-2022 в 12:51:
Ну и да. Мне не нужна никакая "универсальная либа", потому что любая универсальная либа всё равно не будет содержать абсолютно все возможные форматы. На данный момент я конечно сам сделал подобие такой либы и встроил её в компилятор, но это больше для тестирования.
В дальнейшем будет система плагинов в редакторе, для импорта и иэкспорта из разных игр. Народ сам сможет выбирать какие именно форматы ему нужны. Там же вы сможете самостоятельно написать плагин для вашего любимого fbx.
Добавлено 04-09-2022 в 12:52:
А у самого XashNT есть нативные промежуточные форматы, очень простые и интуитивно понятные, которые, я надеюсь в дальнейшем вытеснят вообще все остальные.
Дядя Миша писал: fbx дерьмо переусложнённое, я не хочу с ним связываться.
Это стандарт которым пользуются все трёхмерщики, в отличие от obj в котором неизвестно что может храниться, темболее ничего кроме геометрии он не держит. Как ты собрался с анимированными моделями работать? Надеяться что кто то когда нибудь напишет СМД плагин для новых версий редакторов?
Цитата:
Дядя Миша писал: Там же вы сможете самостоятельно написать плагин для вашего любимого fbx.
Движки в стиле "допиши весь пайплайн сам" думаю ты и сам не раз видел. И знаешь что они никому не нужны. Тут либо использовать общепринятые форматы, либо писать плагины для 3д редакторов самому, да ещё поддерживать их, оно надо? Ну или сидеть и надеяться на васяна который сам напишет плагины под нужные форматы.
Цитата:
Дядя Миша писал: Там же вы сможете самостоятельно написать плагин для вашего любимого fbx.
Всё это излишняя трата времени и сил. Для того чтобы вставить модель из другой игры тебе нужен всего один формат с которым работают все остальные экспортёры из игр. А либу я скинул как референс.
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
FiEctro писал: Это стандарт которым пользуются все трёхмерщики
Ты видел SDK от FBX? Это дьявольски переусложнённая вещь. Скорее всего по своим способам хранения информации он заткнёт текстовые форматы далеко за пояс. Плюс он официально закрытый, проприетарный.
Цитата:
FiEctro писал: Движки в стиле "допиши весь пайплайн сам" думаю ты и сам не раз видел
Не весь пайплайн, а только этот грёбаный FBX. Впрочем коллады всякие - в ту же топку. Это типичный такой подход - внедрим в формат сразу вообще всё, что только может понадобится и будем от этого использовать 0.0001%.
Цитата:
FiEctro писал: Для того чтобы вставить модель из другой игры тебе нужен всего один формат с которым работают все остальные экспортёры из игр
Все эти т.н. экспортёры написаны очень криво, они толком ничего не экспортируют.
Цитата:
FiEctro писал: Как ты собрался с анимированными моделями работать?
Я же говорю, в XashNT будут свои открытые форматы. Которые я разрабатываю не просто для того чтобы был еще один формат. Я надеюсь в дальнейшем сделать их широкопопулярными. Поскольку тут поле непаханное. Фактически продвижением промежуточных форматов для хранения трёхмерки никто и никогда не занимался. Ну вот я и займусь.
Добавлено 04-09-2022 в 13:41:
Сгенерировал все патчи для этой модельки. Это повертексное.
Добавлено 04-09-2022 в 13:47:
И еще вот какую вещь учтите. Абсолютно все промежуточные форматы были сделаны людьми под сиюминутные нужды, после чего внезапно на безрыбье обрели популярность. Форматы, которые специально делались как их универсальная замена, во первых не были ни к чему привязаны, во вторых были дьявольски переусложнены на ровном месте, типа того же glTF, либо обрастали слоями совместимости, как Filmbox. Ничего хорошего в этом нет.
Я рассматривал большинство этих хвалёных форматов и ни один меня не устроил по своему функционалу. Потому что в их основе либо гниалая концепция, либо вообще отсутствие таковой.
Дядя Миша писал: Я надеюсь в дальнейшем сделать их широкопопулярными.
Каким образом? Будешь писать и поддерживать плагины для всех известных 3д пакетов?
Цитата:
Дядя Миша писал: Я рассматривал большинство этих хвалёных форматов и ни один меня не устроил по своему функционалу. Потому что в их основе либо гниалая концепция, либо вообще отсутствие таковой.
Ну как бы у тебя движок и так свой формат использует, и это правильно. Я говорю, что мы из 3д пакета импортировать будем?
Цитата:
Дядя Миша писал: Сгенерировал все патчи для этой модельки. Это повертексное.
Черные пятнышки Но выглядит красивее лайтмапы. В отличие от предыдущей модели почему такое различие? Там и повертексная и лайтмаповая модель давали почти одинаковый результат.
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
FiEctro писал: Будешь писать и поддерживать плагины для всех известных 3д пакетов?
Ну плагины ведь можно дописывать постепенно и просто кидать их в папку с редактором. Да и народ, я думаю подключится к этому делу.
Цитата:
FiEctro писал: Черные пятнышки
Где-то патчи недосгенерировались.
Цитата:
FiEctro писал: В отличие от предыдущей модели почему такое различие?
Я немного залез в компилятор и разрешил там генерацию сверхмелкий патчей, специально чтобы собрать эту модель. Прошла собиралась на стоковых настройках. Всё это можно вынести в пользовательские будет, но у меня повторюсь, немного другая идея, выше написал.
Добавлено 04-09-2022 в 14:27:
Цитата:
FiEctro писал: В отличие от предыдущей модели почему такое различие?
Предидущий скриншо, надо учитывать на неотредактированном obj.
Я там позаменял везде usemtl на g, чтобы привести в соответствие с правилами моего парсера.
Добавлено 04-09-2022 в 15:08:
Да, это полностью косяки вторички. Вот для сравнения - только прямой свет, повертексное освещение. Время работы лайтмаппера - 4 секунды.
Добавлено 04-09-2022 в 15:14:
А лайтмапа так и выглядит странно Ну хрен с ней.
Добавлено 04-09-2022 в 15:15:
Если вы не поняли - в данной модели разрешение повертексного превосходит разрешении лайтмапы, раза эдак в 2-3, может больше.
Отсюда и такой результат.
Попробовал бейкер Психопата, вот что получилось. Лайтмапа 4к, время запекания 25265ms.
Странная тень на ботинках - мой косяк, забыл убрать перекрытие островков.
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!