2016-11-15 11 views
1

NSBezierPathSCNShapeに渡すという動作を模倣したいと思います。しかし、2D NSBezierPathを使用する代わりに、SCNVector3の配列、つまり2Dの代わりに3Dの点を使用したいと考えています。3D座標を使用したSCNShape

最後に、this answerの塗りつぶされた放物線のようなものを持っていますが、パスを説明する2D座標の代わりに3Dを使用したいと思います。

これを達成するにはどうすればよいでしょうか? 「本当の」OpenGLコードに触れることなく、SceneKitだけを使用することは可能ですか?

答えて

3

いいえ!これに対する簡単な答えです。

SCNShapeは非常に厳密に2Dです。これは、斜めにされた/押し出されたときにのみ3Dになります。これは、柔軟な3D変形またはモデリングではなく、丸い斜面を持つまっすぐな押し出しです。

私たちが3Dモデリングで知っているような3Dスプラインは、SceneKitには存在しません。それらを作成しようとすると、あなたが塗りつぶした形を得るために押し出す前に悪夢になるでしょう。

3Dモデリングアプリケーションは、おそらく動的な能力を与えるわけではありませんが、3Dスプラインを作成してモデル化するのが1000倍に簡単になります。

表現したいデータがある場合は、3ds MaxやMayaなどの3Dアプリケーションでプログラムで形状を作成し、エクスポートを自動化するなどの方法があります。

2

1つの方法は、SCNGeometryにドロップして、独自の頂点、三角形/線/ストリップ、法線を指定することです。デビッドRonnqvistの記事とサンプルプロジェクト一見の価値があります:

何を構築していることは十分に簡単である場合、あなたは缶詰の組み合わせでそれを構築することができるかもしれませんプリミティブ(SCNBox、SCNPyramidなど)。

Drawing a 3D arc and helix in SceneKitも参照してください。

また、BlenderやMeshLabなどのツールを使用してオブジェクトを事前構成することも考えられます。

関連する問題