М.9: Совсем обобщённое рисование 3д фигур жесть
#Gamedev · 1 месяц назад
avatarcommunity
Gamedev1 месяц назад

М.9: Совсем обобщённое рисование 3д фигур жесть

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

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

Это размышление не было слишком долгим, потому что все мы знаем главный примитив трёхмерной графики. Он встречает нас своей улыбкой в каждом стартовом проекте блендера:

Косит лиловым глазом

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

Так как эта формула прямоугольника точная, она вычисляется строго в евклидовом пространстве. А как я уже говорил, в этом случае, работает операция скругления.

И если выдавленный квадрат - это куб, то выдавленный круг уже цилиндр, успех. Но скруглять можно не только на уровне 2д. Если сначала мы получим куб, а затем скруглим его, то получится сфера. А из цилиндра можно сделать капсулу, как видно на фигуре слева.

С эллипсоидом не всё так просто. Корректную сферу можно сделать исключительно из куба, растягивать его перед скруглением нельзя. Следовательно, всё-таки придётся искажать пространство. На практике это не сказать, что слишком страшно, но неприятно.

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

А как нарисовать всё в одну инструкцию, я пока не придумал.

toadassCubeapBrenner
6
Cubeap

Игровая индустрия умерла в 93-ем

6комментариев