Сложные формы в SceneKit


person DDPWNAGE    schedule 22.10.2015    source источник


Ответы (1)


В настоящее время Scene Kit предназначен только для рендеринга геометрии и имеет очень ограниченные инструменты генерации геометрии, хотя введение Model I/O кажется первым шагом к поддержке более сложных возможностей 3D-моделирования.

Вы правы в том, что для простых форм вы можете использовать Scene Kit базовую геометрию (коробку, сферу и т. д.) или SCNShape с NSBezierCurve для 3D-экструзии со скосами и фасками. Для более сложной геометрии у вас есть несколько вариантов:

Стороннее программное обеспечение для 3D-моделирования можно использовать для создания геометрии и, в некоторых случаях, анимации, которые затем можно импортировать непосредственно в Scene Kit. Многие люди используют Sketchup, потому что он бесплатный и простой в использовании. Он хорош для базовых фигур, но его возможности очень ограничены. Я бы посоветовал использовать Blender, который также бесплатен, но имеет гораздо больше возможностей для создания геометрии и сетки, а также позволяет создавать анимацию и материалы, которые можно импортировать напрямую. У него крутая кривая обучения, но как только вы его взломаете, это станет большим преимуществом.

Этот тип программного обеспечения лучше всего использовать для сложной геометрии, такой как уровни, персонажи и декорации. У него есть обратная сторона: он довольно нединамичный после импорта, поскольку каждый меш будет выглядеть одинаково, например, если вы создаете камень как часть пейзажа, вам нужно будет создать множество вариаций камней или чтобы каждый камень в вашей игре выглядел одинаково.

Создайте его в Scene Kit, используя классы SCNGeometrySource и SCNGeometryElement. По сути, это ряд точек в 3D-пространстве (каждая SCNVector3), которые определяют углы или вершины вашей сетки. Затем вы объединяете их в сетку, помещая свои точки в массив и определяя, какие точки должны быть соединены вместе, чтобы создать треугольник или элемент вашей сетки. Это задается как еще один массив из SCNVector3 векторов, где каждая часть вектора указывает на индекс в массиве вершин. Вектор со значением [0, 1, 2] создаст треугольник из точек массива с индексами 0, 1 и 2. ="nofollow noreferrer">уроки о том, как это сделать.

Преимущество этого заключается в возможности создавать случайную геометрию, создавая набор псевдослучайных точек, а затем комбинируя их для создания вашей сетки. Затем вы можете запечь фоновую окклюзию с помощью Model I/O (при условии, что Apple исправила это, я не проверял) и продолжать использовать Model I/O для создания довольно реалистичных материалов. Это означает, что вы можете эффективно создавать все, что захотите. Следуя предыдущему примеру, вы можете процедурно генерировать камни, которые будут отличаться друг от друга. Вы можете использовать это, чтобы создать почти бесконечное количество вариантов кусочков головоломки.

В качестве примечания: геометрия и материал - это две разные вещи в 3D-моделировании, и, поскольку вы только начали, вы, похоже, перепутали их в своем вопросе. Геометрия — это сетка, которая определяет форму объекта, а материал определяет, как свет взаимодействует с этой сеткой, создавая его окончательный вид. К геометрии может быть присоединен один или несколько материалов для получения желаемого результата.

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

person Andy Heard    schedule 22.10.2015
comment
Спасибо за подробный ответ! У меня есть друг, который знает, как использовать Blender, но я хотел знать, могу ли я использовать SceneKit для создания моделей на основе 3D-точек. Я не знал о классах, которые вы упомянули; это очень поможет! ???? - person DDPWNAGE; 22.10.2015