Войти
ПрограммированиеФорумГрафика

Объединение мешей с удалением невидимых треугольников.

Страницы: 1 2 3 4 5 Следующая »
#0
15:34, 20 июня 2019

Например при расположении мешей на сцене часть из них пересекается другими или вовсе оказывается внутри других мешей. Имеет ли смысл делать такой препроцесс, который удалит невидимые части мешей? Необязательно обрезать меши стык-в-стык, лишь удалить труегольники, если они полностью перекрыты другим мешем. Из минусов - для каждого инстанса с модифицированной геометрией придется хранить свой меш, полученный после такого препроцесса. Из плюсов - меньше нагрузка на видеокарту (спорный плюс), сложные меши можно еще нарезать кубами, чтобы можно было их отсекать кусками при проверке на видимость. Разумеется все это касается статической геометрии уровня Правка: и замкнутых мешей, не имеющих дыр (holes) или дыры на столько малы, что ими можно принебречь.

В связи с чем ворос:
Имеет ли смысл заморачиваться с этой штукой?
Какие плюсы или минусы оно даст?
Есть ли статьи или реализации на эту тему, чтобы не изобретать велосипед?

#1
17:00, 20 июня 2019

На GL можешь делать Occlution Query. У непрозрачных включай бекфейс куллинг. Ты же рисуешь примитив просто вызовом glDraw чотатам. Всё уже на GPU.
https://gamedev.ru/code/articles/FrustumCulling?page=4

#2
18:12, 20 июня 2019

lookid

Да вопрос не про кулинг в реальном времени, а про препроцесс статической геометрии сцены. Не знаю, вроде не на китайском писал :)

#3
18:18, 20 июня 2019

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

#4
18:25, 20 июня 2019

Я бы сделал Z-буффер (вид сверху) и все что за пределами видимости сверху discard.
Вроде не сложно.

#5
19:31, 20 июня 2019

eDmk
> Я бы сделал Z-буффер (вид сверху) и все что за пределами видимости сверху discard.

Эм. Не понял это вообще к чему. Почему сверху, а не снизу и не с боку? Причем здесь zbuffer?

Как я представляю решение:
1. Через вокселизацию полигонов меша и маркированием полигонов если они внутри другого. Потом маркированные полигоны просто удаляются из исходных мешей.
2. Путем разбиения на выпуклые многогранники и маркированием полигонов, перекрывающихся многогранниками соседнего меша, с последующим их удалением.

#6
20:36, 20 июня 2019

0xc0de
> Причем здесь zbuffer?
zbuffer это дистанция. Сверху, т.к. камера находится снаружи.
Все что внутри пересекается выбрасывается, т.к. дистанция известна.
Это просто вариант.

Можно и через воксели.

#7
21:32, 20 июня 2019

Если тебе нужно просто статично помержить, что строишь сферу вокруг модели и удаляешь вершины, которые сферу не видят. Можешь срендерить 6 z-buffers.

#8
21:32, 20 июня 2019

0xc0de
такое точно есть в инете
например в блендере, можешь ковырнуть местный модификатор, который объединяет два меша, он вроде оперсурс

#9
22:08, 20 июня 2019

0xc0de
> Имеет ли смысл заморачиваться с этой штукой?
> Какие плюсы или минусы оно даст?
Можно ещё попробовать не ставить объекты рядом. Можно попробовать сделать пошаговую игру, чтобы тормоза не были заметны. Можно попробовать запретить наводить камеру на эти объекты. Это вопрос из абстрактной темы движкописательства?

1. Профайлил
2. Поправил
3. Повторил

#10
22:53, 20 июня 2019

mitroxa
Спасибо, гляну. Главное, чтобы это был не честный boolean union.

lookid
> Если тебе нужно просто статично помержить, что строишь сферу вокруг модели и
> удаляешь вершины, которые сферу не видят. Можешь срендерить 6 z-buffers.

Не понятно, как это поможет.

#11
23:38, 20 июня 2019

0xc0de
кстати мысль пришла интересная, сам не проверял

берем первый меш и начинаем шагать по примитивам, если ребро пересекло грань второго объекта
значит следующие вертексы будут не видны до того момента пока не выйдем с другой стороны
в смысле снова не пересечем грань с нормалью в противоположную сторону
запоминаем точки в которых пересекались, дальше хз, но можно решить как-то

#12
0:18, 21 июня 2019

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

#13
2:10, 21 июня 2019

0xc0de

В связи с чем ворос:
Имеет ли смысл заморачиваться с этой штукой?
Какие плюсы или минусы оно даст?
Есть ли статьи или реализации на эту тему, чтобы не изобретать велосипед?

Да конечно имеет, особенно если у тебя много открытых пространств + скалы, горы все вот это.
Артисты любят нарисовать одну скалу в километр высотой а затем утапливать ее в землю на 90%.
И главный профтит будет  даже не от экономии вершин меша, а от экономии пространства на  лайтмапах.
Короче, пригодится всегда.


Геймдев поражает как всегда.
Человек задал абсолютно адекватный вопрос а 30% отвечающих даже не поняли о чем речь, 30% неумело петросянят.

#14
2:31, 21 июня 2019

Polyflow3d
> 30% отвечающих даже не поняли о чем речь, 30% неумело петросянят.
Ты в каких из этих 30%?

> Короче, пригодится всегда.
Почти никогда не пригодится. Все что ты сказал там выше - это лишь твои личные заблуждения.

> Артисты любят нарисовать одну скалу в километр высотой а затем утапливать ее в
> землю на 90%.
Зачем "объединять" меши в рантайме в приложении, если это можно сделать в приложении, в котором "утопили" в землю

> И главный профтит будет даже не от экономии вершин меша, а от экономии
> пространства на лайтмапах.
Да ты што. А как выкинутые треугольники помогут сделать новую лайтмап развертку для экономии места? И кто будет запекать после этого лайтмапы?

И кроме того, если рендер сортирует объекты от ближних к дальним, то профит от выкинутых треугольников будет минимальный, т.к. почти все пиксели отсекуться на earlyZ stage.

0xc0de
> Имеет ли смысл заморачиваться с этой штукой?
Этой штукой заморачиваться есть смысл только если ты уверен, что это даст какой-то профит. Для проверки можешь сделать 2 сцены. Одну с удаленными треугольниками, другую нет. Так ты увидишь, какой профит оно тебе даст.
> Какие плюсы или минусы оно даст?
Усложняет код. Преждевременная оптимизация. + это можно сделать скриптом на этапе экспорта моделей, и почти все 3д пакеты умеют такое делать.

Страницы: 1 2 3 4 5 Следующая »
ПрограммированиеФорумГрафика

Тема в архиве.