2016-11-15 5 views
1

Я хочу подражать при поведению NSBezierPath до SCNShape. Но вместо использования 2D NSBezierPath я хочу использовать массив SCNVector3, т. Е. Точки в 3D вместо 2D.SCNShape с использованием 3D-координат

В конце концов, я хочу иметь что-то вроде заполненной параболы от this answer, но с 3D вместо 2D-координат, описывающих путь.

Что было бы лучшим способом достичь этого? Возможно ли использовать только SceneKit, не касаясь «реального» кода OpenGL.

ответ

3

Нет! Это простой ответ на этот вопрос.

SCNShape очень строго 2D. Он становится только 3D при скосе/экструзии, который не является гибкой, 3D-деформацией или моделированием, а просто выпрямляется с закругленными скосами.

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

Приложения для 3D-моделирования, вероятно, не дают вам динамических способностей, но делают это в 1000 раз легче делать 3D-сплайны, а затем моделировать их.

Существуют способы программного создания ваших форм в 3D-приложениях, таких как 3ds Max и Maya, если у вас есть данные, которые вы хотите представить, а затем автоматизировать экспорт и т. Д. Если это поможет.

2

Один из способов - спустить в SCNGeometry и предоставить свои собственные вершины, треугольники/линии/полосы и нормали. статьи и образец проект Дэвида Ronnqvist является стоит посмотреть:

Если то, что вы строите достаточно просто, вы могли бы построить его с помощью комбинации консервированных примитивы (SCNBox, SCNPyramid и т. д.).

См. Также Drawing a 3D arc and helix in SceneKit.

Вы также можете использовать инструмент, например Blender или MeshLab, чтобы предварительно сконструировать ваши объекты.