|
Опубликовано 05.03.2013 13:16 (12 лет назад) # |
Добрый день!
Интересует как сделать разрушаемые 3д объекты\ландшафт примерно как в worms 3d. То бишь разрушение в виде сферы которую отсекают от объектов. В случае с ландшафтом понятно, что можно его представить как достаточно мелкую сетку и при попадании снаряда просто деформировать ее по карте высот. А в случае с 3д объектом не могу представить как делать.. |
|
|
|
Опубликовано 05.03.2013 13:38 (12 лет назад) # |
Тут применяются вокселы (voxel) т.е. пространство представляет собой 3-х мерный массив (или же дерево), в котором содержится информация о материале в определенной точке.
самый простой пример - это minecraft, по сути это псевдовоксельное пространство.
В worms 3d как раз дерево.
P.S. думаю через несколько лет подобные технологии с вокселами будут применяться повсеместно (ну ландшафты уж точно)
|
|
|
|
Опубликовано 05.03.2013 13:40 (12 лет назад) # |
Чаще всего уже поверх воксельного дерева строится полигональная модель, которая перестраивается при каждом изменении дерева |
|
|
Инженер‑космогоник
|
Опубликовано 05.03.2013 14:14 (12 лет назад) # |
ObelardO прав, проще ничего не придумали. Строится полная 3д сетка, из нее честно выгрызаются все вокселы(кубики), что попали в шар взрыва.
Для оптимизации естественно находят только внешние вокселы и по ним строят замкнутое полигональное покрытие.
Другое дело, что обычно не строят очень частую сетку, а строят все из достаточно больших кубиков, а при перестроении меша пользуются всякими алгоритмами для сглаживания получившихся дырок.
вот например - Worms 3D(2003), видно, что от взрыва осталась честная дырка, но она состоит из нескольких слоев и видно, что отдельные куски чуть ли не квадратные.
Там используется "покселы"(авторское название) - типа большие воксели, составленные из полигонов кубиками + всякие сглаживания и искажения, то есть дырки оставались все таки почти куглые.
Для 3д часто не юзают полностью 3д сетку для ландшафтов, а обходятся картой высот. Соответственно взрывы просто продавливают. Смотрится в большинстве случаев нормально, особенно если воронки не большие - так сделано в scorched 3d например. |
|
|
Инженер‑космогоник
|
Опубликовано 05.03.2013 14:25 (12 лет назад) # |
хм, кроме voxatron и собственно MineCraft не вспомню больше игр с 3д воксельными разрушаемыми ландшафтами(хотя как раз тут они квадратные и не интересные), но демки есть точно. |
|
|
|
Опубликовано 05.03.2013 14:50 (12 лет назад) # |
Ну игр пока нет, но вот движки (cryengine3, unrealengine4, idtech6) уже работают с ними.
Например в cryengine3 на вокселах строятся пещеры, в unrealengine4 "умные частицы" используют воксеоы для объемных облаков и снега. а на idtech6 есть демка, где даже модели состоят из воксельных октодеревьев, это некоторый аналог тесселяции (так еще и с мегатекстурой вообще красота). Так что вопрос времени, скоро вокселы будут одним из стандартов :) |
|
|
|
Опубликовано 05.03.2013 17:50 (12 лет назад) # |
Оу... теперь все понятно))) В принципе это похоже на составление 3д модельки из кубиков, потом тупо кубики убираем и все) Спасибо) |
|
|
Инженер‑космогоник
|
Опубликовано 05.03.2013 20:07 (12 лет назад) # |
Есть простой алгоритм - трехмерный массив висит в памяти и отображает текущее состояние рельефа. Состоит из пустых и заполненных клеток.
Для отображения перебираем все клетки, и для каждой не пустой проверяем всех соседей. Если текущая клетка заполнена, а сосед - пустой, то грань кубика, граничащую с воздухом добавляем в список полигонов.
После прохода останется только оболочка, без учета сплошных кубиков внутри. |
|
|
|
Опубликовано 06.03.2013 06:13 (12 лет назад) # |
разрушаемые 3D ландшафты есть в RedFaction, но не знаю относится ли это к данной теме разговора. |
|
|
|
Опубликовано 06.03.2013 08:06 (12 лет назад) # |
Mefistofel написал:
Есть простой алгоритм - трехмерный массив висит в памяти и отображает текущее состояние рельефа. Состоит из пустых и заполненных клеток.
Для отображения перебираем все клетки, и для каждой не пустой проверяем всех соседей. Если текущая клетка заполнена, а сосед - пустой, то грань кубика, граничащую с воздухом добавляем в список полигонов.
После прохода останется только оболочка, без учета сплошных кубиков внутри.
редакция от ObelardO, 21.05.2013 08:07 |
|
|
|
Опубликовано 07.03.2013 03:53 (12 лет назад) # |
В опенсурсном Voxelstein 3D есть воксели. |
|
|
|
Опубликовано 07.03.2013 07:00 (12 лет назад) # |
Doj написал:
В опенсурсном Voxelstein 3D есть воксели.
яждва года ждал эту игру :) |
|
|
|
Опубликовано 07.03.2013 07:18 (12 лет назад) # |
яждва года ждал эту игру :)
Её же уже хрен знает когда выпустили, я ещё в школе в неё играл :) |
|
|
|
Опубликовано 07.03.2013 09:50 (12 лет назад) # |
Doj написал:
яждва года ждал эту игру :)
Её же уже хрен знает когда выпустили, я ещё в школе в неё играл :)
Мне понравилось. Карта маленькая, но красиво ножиком сидишь прутья решетки пилишь)) Можно и дверь расколупать. Даже в стене дыру ножиком выковырять можно, но долго. Понравилось. |
|
|
|
Опубликовано 07.03.2013 14:12 (12 лет назад) # |
RichDad написал:
Doj написал:
яждва года ждал эту игру :)
Её же уже хрен знает когда выпустили, я ещё в школе в неё играл :)
Мне понравилось. Карта маленькая, но красиво ножиком сидишь прутья решетки пилишь)) Можно и дверь расколупать. Даже в стене дыру ножиком выковырять можно, но долго. Понравилось.
А ещё можно взрывать стены, стрелять из пулемёта и убить фашистского повара :) |
|
|
|
Опубликовано 14.03.2013 18:53 (12 лет назад) # |
Интересно почитать: Implementing Voxel Cone Tracing
редакция от Doj, 14.03.2013 18:54 |
|
|
|
Опубликовано 01.04.2013 15:04 (12 лет назад) # |
В первом Fra cry при взрыве гранаты на ландшафте остаются впадины. |
|
|
Древний организм
|
Опубликовано 01.04.2013 15:23 (12 лет назад) # |
Это не то, они ландшафт не разрушают, лишь чуточку модифицируют поверхность. Гранатами большой тоннель там не пробьешь :( |
|
|
|
Опубликовано 04.04.2013 12:21 (12 лет назад) # |
Ну а вот есть симулятор экскаватора TriangleDigger.
редакция от pro_pk, 04.04.2013 12:39 |
|
|
|
Опубликовано 04.04.2013 14:13 (12 лет назад) # |
А ссылка где? Что одна картинка-то. |
|
|