Добавить в корзинуПозвонить
Найти в Дзене
Игровой движок Godot engine

№221. 3D. CSG. Конструктивная твердотельная геометрия.

CSG (Constructive Solid Geometry) примитивы обычно используются для прототипирования уровней. Понять где и что лучше расположить на сцене и сразу протестировать.
После чего можем скинуть это всё отдельным файлом своему другу, крутому трёхмерщику, как основу для дальнейшей проработки. В этой небольшой статье пробежимся по основным моментам. Создаем 3Д сцену,и находим в объектах отдел с CSG примитивами: Как видим есть все основные типы, но мы остановимся на сфере и кубе.
Добавляем в сцену Box и две Sphere. Одна из главных фишек этих объектов это возможность их комбинирования. Мы можем вырезать объекты или объединять их, создавая новую форму.
Для этого в меню объекта необходимо указать тип комбинирования. тут их три :
Union - объединение, всё что будет пересекаться удаляется.
Intersection - Остается только та геометрия которая пересекается.
Subtraction - вырезание объекта А из объекта Б. Для того что-бы комбинирование сработало необходимо комбинируемые объекты выстраивать в иерархию. Напр

CSG (Constructive Solid Geometry) примитивы обычно используются для прототипирования уровней.

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

В этой небольшой статье пробежимся по основным моментам.

Создаем 3Д сцену,и находим в объектах отдел с CSG примитивами:

Как видим есть все основные типы, но мы остановимся на сфере и кубе.
Добавляем в сцену Box и две Sphere.

-2

Одна из главных фишек этих объектов это возможность их комбинирования.

Мы можем вырезать объекты или объединять их, создавая новую форму.
Для этого в меню объекта необходимо указать тип комбинирования.

-3

тут их три :
Union - объединение, всё что будет пересекаться удаляется.
Intersection - Остается только та геометрия которая пересекается.
Subtraction - вырезание объекта А из объекта Б.

Для того что-бы комбинирование сработало необходимо комбинируемые объекты выстраивать в иерархию. Например если мы хотим объект Б объединить в один объект с объектом А , то надо просто положить Б под А.

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

-4

Заметно, что наш куб «исчез», и мы видим как у нас образовалась полусфера.
Таким же образом вырезаем из полусферы вторую сферу, но используем режим
Subtraction .

-5

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

Для того чтобы ваш персонаж мог передвигаться и сталкиваться с объектами необходимо поставить галочку Use Collision.

-6

Перенос всей сцены в сторонний 3Д пакет ( в нашем случае - blender)

Набросаем простенькую сценку :

-7

Как можно заметить - у меня всё лежит под нодой level, поэтому в итоге получится один объект ( по умолчанию комбинируется как Union ).

Допустим нас всё устраивает. Пришло время отправить это 3Д художнику.
Экспортируем :

-8

Открываем это в блендере:

-9

Как видим в блендере всё ровно так же как и в годо.
Я решил, что вместо куба будет цилиндр, и раскрасил 'элементы сцена в разные цвета.

-10

Экспорим из блендера , и перетаскиваем в годо

-11
-12

Опять же - всё встало на свои места, где была изначально сцена прототип.

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

На этом всё.
Подписывайтесь на канал, при желании
вступайте в группу в ВК.
Удачи в изучении годо