Комментарии 32
346 полигонов. Это минимум при таком подходе. А ведь все они в движке скорее всего станут треугольниками, так что смело умножаем это число на 2.
Что значит "скорее всего"? Вы вообще вкурсе что все без исключения движки рисуют треугольниками, просто потому что видеокарты работают только с треугольниками)? И даже в недрах вашей программы эти самые полигоны разбиваются на треугольники для отрисовки. Сам по себе полигон это многоульник (из математики). Но в компьютерной графике это всегда треугольник. Я с такими отвратительными "многоугольными треугольниками" столкнулся тогда, когда делал загрузчик в движок моделей из FBX формата. Вот там у меня были и 4х угольные треугольники, и 12 угольные. И это добро приходилось переводить в треугольники.
Треугольные треугольники - даже звучит неправильно
Что . " значит "скорее всего"? Вы вообще вкурсе что все без исключения движки рисуют треугольниками"
Во-первых, движок VirtualRay может отрисовывать сцены, состоящие из нескольких тысяч сфер, а не треугольников. Этот движок может рисовать и треугольники, ему по классике треугольничать ничего не мешает. Стоит также отметить, И что есть специфические движки, которые вместо полигонов отрисовывают векторные фигуры или облако точек, а это почти все инженерные программы (CAD-пакеты, компас 3D и тд).
Поэтому, когда вы говорите, что все "без исключения", то вы показываете некоторую долю некомпетентности в этом вопросе.
Во-вторых, вы сами себе противоречите (то только треугольники, то сам видел н-гоны с 4 и более углами)
В-третьих, в тексте у меня нигде нет словосочетания "треугольные треугольники"
В-четвёртых, каждый движок визуализации имеет свои подходы к отрисовке n-гонов. Некоторые из них действительно не могут напрямую работать с 4х и более угольными полигонами. Некоторые наоборот, очень плохо воспринимают треугольники без оптимизации.Unity всегда будет разбивать н-гоны на треугольники, в Unreal Engine есть режим работы с четырехугольниками.Также группы сглаживание в современных движках учитывают наравне треугольники и четырехугольниками. Не все, соглашусь, но учитывают.А ещё, уважаемый, движки визуализации при рендеринге текстврного объекта учитывают не треугольники и не квадраты. А пиксели. Особенно это касается трассировка пути и трассировка луча: движок проецирует луч не на полигон, а на пиксель карты высоты или рельефа (normal map, displacement map)
Во-первых, движок VirtualRay может отрисовывать сцены, состоящие из нескольких тысяч сфер, а не треугольников. Этот движок может рисовать и треугольники, ему по классике треугольничать ничего не мешает. Стоит также отметить, И что есть специфические движки, которые вместо полигонов отрисовывают векторные фигуры или облако точек, а это почти все инженерные программы (CAD-пакеты, компас 3D и тд).
Начнем с того что мы сейчас говорим про игровые движки, ибо оптимизация моделей для инженерного софта смысла не имеет, там нет таких хай поли моделей которые нужно было бы оптимизировать, да и многих вещей о которых вы говорите тоже нет. Тут речь идет об игровых движках. Все игровые движки использующие рендер на GPU рисуют треугольниками, просто потому что современные видеокарты рисуют ИСКЛЮЧИТЕЛЬНО треугольниками. Все остальные вещи упомянутые вами CAD-пакеты, компас 3D - это инженерные решения использующие ЦПУ рендер. А упомянутый вами VirtualRay вообще огрызок 3D движка без игр на нем (те огрызки карт которые я видел с графикой времен мезозоя даже демкой назвать тяжело).
Во-вторых, вы сами себе противоречите (то только треугольники, то сам видел н-гоны с 4 и более углами)
В-третьих, в тексте у меня нигде нет словосочетания "треугольные треугольники"
Это был сарказм. И я нигде не писал что "треугольные треугольники" это кусок вашего текста. Это я написал касательно своего кейса работы с FBX форматом. Не знаю почему вы решили что это я писал это ссылаясь на ваши слова в статье.
А ещё, уважаемый, движки визуализации при рендеринге текстврного объекта учитывают не треугольники и не квадраты.
Что такое "текстврного", я не знаю, вероятнее всего вы имели ввиду "текстового". Вот только рисование пикселей на экране современные видеокарты тоже эмулируют через рисование треугольников. Пиксель - это маленький квадрат состоящий из двух треугольников маленького размера
Сплайн или плоскатик — кусочек меша, чаще всего представляющий из себя прямоугольник со своей отдельной текстурой:
Чего чего? Сплайн? Плоскатик? Вы вообще знаете что такое сплайн? То что вы показываете на экране просто декаль, а сплайн это параметрическая кривая
Unreal Engine есть режим работы с четырехугольниками
Ага, в видеокарту потом тоже 4х угольный треугольник идет)?
Особенно это касается трассировка пути и трассировка луча: движок проецирует луч не на полигон, а на пиксель карты высоты или рельефа (normal map, displacement map)
Если мы говорим о трассировке в классическом ее понимании - то там ищется пересечение луча именно с треугольником. Есть и иные алгоритмы трассировки лучей, например по текстуре. Но это используется для эффектов, например SSLR.
У вас для каждой модели есть список полигонов. Мне надо проверить в какой из треугольников вхож мой пиксель, что бы определить какая модель на экране видна, я правильно вас понимаю? Так это смысла не имеет. Ибо список треугольников у меня есть, а списка пикселей - нет.
Ну а игры на Unreal Engine вообще имеют возможность генерировать лоды «на ходу», сжимая высокополигональные модели
Чего чего? На ходу?) Может в момент билда?
В Lords of the Fallen модельки автоматически ретопологизируются до состояния LOD. Но порой не возвращаются обратно (внимание на щит статуи)
Тут движок просто не переключил LOD в прежнее состояние. Но автоматического ретопа в рантайме там нет, CPU бы знатно ахринел, а вместе с ним и FPS. И вы не забывайте что это еще на диск сохранить надо, что б небыло повторной генерации)
Ненене, там именно автоматический ретоп между состояниями. Проверено лично.
То есть вы хотите сказать что объект прямо в рантайме перестроил свою полиагональную сетку (уменьшил количество полигонов модели), просто за пару кадров, еще и моментально загрузил его в видеопамять, а так же записал на диск результаты ? Можно поинтересоваться каким образом вы это проверили, а так же хотелось бы узнать что за монстр cpu в вашем пк стоит, потому что мне на ум приходит только связка из 2х Ryzen Threadripper 7980X
Вам же сказано - между состояниями. У вас есть хайполи и лол для неё, имеющие параметричесеие маркеры. В зависимости от дальности прорисовки, уе5 может "смещать" детализацию в большую или меньшую сторону.
Про ретопологию в реалтайм это вы сами навыдумывали себе. Отличная техника - соломеное чучело.
У сплайна так то много значений. Погуглите многозначнве слова, ходят легенды, что это где-то в школе проходят.
Лучше не спорить. Видно, что человек не очень понимает, о чем говорит, простите.
Знаете, я ради интереса решил просто открыть случайную вашу статью и начать разбирать ее. И что я там увидел? А давайте посмотрим.
3D для каждого: Оптимизация модели. Часть 1, объяснительная
Из-за погони за наилучшей картинкой все чаще делают текстуры не просто с большим, а с огромным разрешением в 4к и больше. Разработчиков не останавливает даже то, что по статистике Steam, как самого большого агрегатора игр, запустить игры в соответствующем разрешении смогут менее 30% целевой аудитории.
Вы каким то образом соотносите разрешение монитора и разрешение текстур, хотя вам крайне справедливо сделали замечание что это два понятия которые никак не соотносятся. И вообще нет прямой зависимости отношения размера текстуры и влияние его на быстродействие (представьте себе)
Одна из ваших статей, а именно: Анатомия игры: Локации. часть 2 содержит крайне забавную вашу фразу
У моделей в игре есть своя физика тела, оформленная в виде капсул (capsule) для каждой кости. И у оружия тоже есть физика, в том числе у оружия великанов. Также физика есть у земли под ногами игрока (collision или физика столкновения), чтобы он не проваливался под текстуры (хотя порой она глючит, особенно в местах стыков локаций, и персонаж все равно проваливается). Когда физика дубины великана вдавливает физику персонажа в физику земли, физика земли «старается» вытолкнуть персонажа наружу. Чем сильнее вдавливание, тем большее сопротивление оказывает коллизия почвы. А великаны бьют очень сильно. Вот так и получается, что моделька их жертвы улетает куда-то за границы видимости.
Давайте разберем ее более детально. Оформленные для каждой кости капсулы, есть ни что иное как хитбоксы. И они ни за какую физику не отвечают. Их задача определить зону для попадания удара/снаряда и тд, что бы по ним например вычислить входящий урон. Никакая физика дубина никакую физику персонажа не толкает. Коллайдер самой дубины физически давит на персонажа сверху, пытаясь протолкнуть коллайдер в землю. А не одна физика давит на вторую физику.
ну или вот в той же статье, бред той же оперы:
Еще одна проблема доступности локаций — анимации. Недостаточно высоко поднятая нога не позволит персонажу взобраться даже на небольшой уклон или сильно замедлит его продвижение, из-за чего разработчикам и аниматорам придется либо править анимации и пути, либо возиться с «притягиванием» костей инверсивной кинематики ног к ближайшей поверхности. С одной стороны, ваш персонаж перестанет застревать в «текстурах», с другой — неправильно настроенная доводка может быть излишне заметной, что помешает погружению или вовсе поломает геймплей, особенно остро это касается платформеров.
То есть, по вашему мнению коллайдеры без анимаций вообще по карте никак не перемещаются? Как тогда персонажи игр, в которых у вас на карте только руки (например S.T.A.L.K.E.R ТЧ) перемещаются и поднимаются по ступенькам? Вы в курсе что анимации нужны не для перемещения персонажа, а для того, что бы сделать действия реалистичными? В действительности же управление персонажем полностью зависит от коллайдера.
3D для каждого: Оптимизация модели. Часть 1, объяснительная
Все здания и скалы, кстати, модульные — в статичной памяти они хранятся в виде небольших кусков камней, скал, арочек, отдельных моделей крыш, секторов башен и т. д
А вот это я как разработчик вообще не знаю как комментировать. Статичная память? WHAT?
Теперь отдельно хотелось бы разобрать ваш комментарий по поводу создания runtime LOD'ов. Вам для того что бы создать LOD в рантайме, нужно взять объект (а одновременно от вас отдалятся могут сотни, или даже тысячи), выгрузить его из видеокарты в оперативную память, на CPU рассчитать для него новый LOD, проверить его что бы он хотя бы как то эвристики то проходил (иначе как вы поймете что выкинули нужные треугольники то), далее загрузить объект в карту. Вы вообще понимаете что загрузка/выгрузка операций из карты это крайне дорогие операции. Вы знаете для чего играм вообще загрузки нужны? Что бы в карту данные новые загрузить. Из нее часто даже ничего не выгружается, просто потому что это очень дорого. Вам надо дождаться пока ресурс будет свободен, а как драйвер может дождаться ресурса если вы в рантайме буквально его занимаете, отправляя в рендер?
Мне человек даже отвечает, мол, проверено, точно так работает. Вот человек вообще не представляет как работает видеокарта. Но что то там проверял и что то мне доказывает. Это даже не смешно.
Так же на ряд вопросов из прошлого комментария вы мне не ответили. Например касательно сплайнов, или касательно трассировки лучей. Или про unreal engine.
Каждая ваша статья по сути содержит достаточно большое количество неточностей, вы разбираетесь в своем же материале на уровне базового потребителя, совсем не понимая как это все работает в действительности. Ни на один вопрос мой вы ответить не смогли. Но не разбираюсь в теме почему то я, человек который без малого 5 лет программирует компьютерную графику и 3D движки для игр)
По-вашему, текстуры не могут иметь разрешение в 4к пикселей?
Или что без подготовки текстура в 512х512 пикселей на гг на 4к мониторе в нативном разрешении будет выглядеть не хуже, чем текстура 2048х2048?
Снова читали через строчку, видимо. Лишь бы зацепиться
У вас опять же все смешалось. Текстура и разрешение монитора не имеют прямой связи между собой. Рисуете то вы не текстуру а объект. Чем больше текстура, тем четче она будет на объекте, и тем уникальнее будет рисунок, ведь сама текстура имеет куда больше пикселей
Ну да ещё скажи, что если взять условно 2 куба по 4 метра и натянуть на один 512х512, а на другой 4к, то разницы не увидишь? Ну или возьми текстуру танка в 4к сократи её до 512 - тоже разницы не будет? Тогда все плохо конечно...
В первую очередь то как будет выглядеть текстура зависит от плотности пикселей объекта. На куб с текстурой в 512x512 я могу смотреть с 10 метров, а на 4096x4096 вообще в плотную. И что, разницы в таком случае тоже не будет? Если не будет, то тогда все плохо конечно...
Ведь я в первую очередь сказал что "разрешение текстур не имеет прямой связи с разрешением монитора". Безусловно между этими вещами есть зависимость. Но то как будет выглядеть текстура зависит от плотности пикселей на экране. А это в первую очередь зависит от размера объекта и его удаленности от камеры, и только во вторую очередь от разрешения экрана, ведь вместе с повышением разрешения я могу отдаляться от объекта, уменьшая площадь объекта на экране. Но видимо, мои слова не для средних умов.
Ну или возьми текстуру танка в 4к сократи её до 512 - тоже разницы не будет? Тогда все плохо конечно...
Ну давай, я возьму танк размером в 10 см и натяну на него 512x512 текстуру, а потом возьму условно танк в 4 метра и натяну на него 4096x4096 текстуру. Увидишь разницу? Как и суслика...
Лучше поспорить, если человек несёт чушь. Нанит в Анриле 5 не меняет детализацию Лод-кластеров на расстоянии. Он не зависит от расстояния вообще, как и обычные Лоды, собственно. Он меняет детализацию по фактору Pixel per Edge на экране. Чем меньше пикселей рисуют грань полигона, тем более детальнее модель. Читайте доки - там все есть.
Какой ретоп? Ретоп - это когда тебе нужно из исходной корявой модели (допустим скан) сделать отлаженную сетку с правильной топологией для простоты редактирования.
Нанит в Анриле не делает ретопов. Он берет исходную сетку и бьёт её на иерархию кластеров (по 128 вершин) с общими эджами для соединения между собой. Лучше лично доки проверь, там все описано. А то уже не смешно.
В Lords of the Fallen модельки автоматически ретопологизируются до состояния LOD. Но порой не возвращаются обратно (внимание на щит статуи)
Может вначале попробовать вначале статью прочитать? "ретопологизируются " не я сюда вставил. Когда мне говорят "ретопологизируются " я буквально представляю себе ретоп. То как это работает в действительности меня не сильно волнует, я буквально процетировал исходный текст автор(ки). И собственно поэтому я и говорю про ретопологию, а не про нанит.
Но не Скайримом единым: любители Cyberpunk 2077 тоже имели честь лицезреть мыльные машинки и мыльных человечков. Ну а игры на Unreal Engine вообще имеют возможность генерировать лоды «на ходу», сжимая высокополигональные модели. Хотя это работает далеко не всегда так, как надо.
В тексте буквально написано про генерацию лодов на ходу, а так же автоматический ретоп. Какие ко мне вопросы?
Еще раз повторюсь, для самых одаренных - в статье, и в комментариях никто, НИКТО, кроме тебя не говорил слово нанит. Если ты где то в оригинальной статье (конкретно в этой которую мы комментируем) найдешь слово "нанит", "nanite" или любое другое обозначение этой технологии я признаю что я не прав. Если не найдешь, то твой комментарий тут ни к селу ни к городу.
шёпотом: вокселиииииии
Я не совсем понимаю причем здесь воксели
Воксельная графика тоже на треугольника?
Настоящая Воксельная графика
У вас кажется просто все в кучу смешалось. Не существует никакой воксельной графики. Воксель сам по себе лишь очередная условность. Чем принципиально воксель отличается от кубика который мы как 3D модель грузанули в игровой движок? Да ничем. И да, вообще вся графика на треугольниках, по крайней мере та что рисуется методом растеризации.
Увеличение текстур в два раза увеличивает занимаемый ею объем памяти в 3-4 раза
Чего? Это какая-то новая матиматика? Текстура не увеличивается в 2 раза, она увеличивается сразу в 4 раза. И соответственно весит тоже в 4 раза больше, а если это нормалка повышенной точности, то даже в 8 раз.
Для примера возьмем текстуру 512х512 и "увеличим её в 2 раза". Но она увеличится сразу по 2м осям и станет 1024х1024. т. е. это квадрат из 4 текстур 512х512. Какие 2 раза?
Видеокарта не работает с Жпегами и ПНГ. Основные форматы это dxt1/5 или bc1/bc3-7, а они фиксированного размера. Жпег придётся транскодить в дхт, чтобы видюха его подгрузила. В идеале вообще нужно подгружать дхт напрямую.
Как сказала бы автор: "вы не понимаете о чем говорите".
В его случае: "вы не понимаете - это другое". Короче, походу пора выбросить вертексный буфер, ну просто потому, что Уе5 оказывается на ходу (нейронкой наверное) генерит из хай полей лоды и ретопит их в РАНТАЙМЕ! И сразу же батчит их, инстансит и пересчитывает кулинг камеры и кластеров.
Ну тут железо-бетонная база, без вариантов...
Она в своих статьях порой такой бред пишет, что диву даешься. Я на автоматической ретопологии моделей тоже угорел просто. Человек не имеет ни малейшего представления о том что нужно сделать что бы просто модель отрендерить движком. Зато в комментариях нашлась такая же (это обе девушки, если что), которая голословно заявила о том, что ретоп ну прямо точно происходит в рантайме.
Ретоп в РАНТАЙМЕ? Пардон, а зачем я в настройке каждого меша кручу квантования и точность вертекс позишн и тд и тп, если он сам угадывать все могет?! По щучьему велению значит, ок. Хех, иерархические кластеры значет тоже фигачит на ходу, вот я не далёкий. Блин, аж извилины распрямились.... 🤔
Конечно, зачем модель ретопить руками, затем делать для нее LOD'ы, прорабатывая в ручную. Можно же в рантайме ретоп делать (в геометрических шейдерах, разумеется), мы ж богатые, еще фреймтайма купим.
Хех, а ещё я узнал, что трассировка пути кастует лучи не в полигоны, а в пиксели! Я прям представляю эти попиксельные БВХ-структуры для пересечений (воксель такой грозно выглядывает из-за угла). Рили все настолько беспощадно и не терпит компромиссов? Хорошо, что это хоть не лайтмапы, которые постоянно перерисовываются 60 раз в секунду, как вещал один знаток (или РТ - это все таки лайтмапы?) И на том спасибо. Ну теперь придётся 4060 со слотом для 2х тб Ссд покупать... Пощадите.
читал читал, думаю да чтож это такое то, господи. потом дочитал до плоскатиков и как пелена с глаз спала.
Хорошая статья, к сожалению многим современным 3D-подельщикам это приходится объяснять по несколько раз. Сканеры ещё свою лепту внесли. А когда начинаешь им объяснять на пальцах математику происходящих процессов - закатывают глаза и уносятся в даль!
DDS входит в линейку самых распространенных форматов для игровых текстур, так как позволяет сэкономить место на диске и при этом сохранить настройки альфа-канала (прозрачности) и некоторые другие.
Ддс - это основной формат для текстур, который работает с видеокартой. С промежуточными форматами (пнг, Жпег и тд) она на прямую не работает. На минуточку вот список подформатов Ддс (остальные там и рядом не валялись) :

3D для каждого. Оптимизация модели. Часть 2, практическая