2016-11-25 7 views
2

私はMDLMeshを作成し、SCNGeometryに変換してSceneKitでレンダリングすることができました。しかし、私はメッシュやジオメトリに折り目を付けることができませんでした。折り目を付けてMDLメッシュを生成しますか?

メッシュの折り目サポートを追加するための正しい手順を実行していることを確認したかっただけです。

  1. 新しいトポロジオブジェクトの場合MDLSubmeshTopology
  2. を作成し、プロパティをedgeCreaseCountするedgeCreaseIndices、edgeCreasesとINTにMDLMeshBuffersを割り当てます。
  3. トポロジオブジェクトを使用してMDLSubmeshを作成します。

私は具体的な解決策を探しているわけではありません。メッシュに折り目のサポートを追加する方法についての一般的な考え方です。これを経験した人なら誰でも素晴らしいだろう。

+0

私はSceneKit creaseのサンプルコードや記事を見たことがありません。何か見つかったら、それを書き留めてください! –

+0

私は多くを検索しましたが、メッシュやジオメトリに折り目を実装することに関連するものは実際には見つかりませんでした。私が何か役に立つものが見つかったら、その投稿を更新します。これまでは、SceneKitジオメトリとModelIOメッシュに折り目を追加しようとしましたが、運は必要ありません。しかし、このトピックに興味を持っている他の人を見るのは良いことです。コメントしてくれてありがとう。 – Phi

答えて

1

SceneKitはedgeCreasesElementedgeCreasesSourceと同様にvertexCreaseセマンティックです。

詳細については、SCNGeometry.subdivisionLevelのドキュメントをご覧ください。

+0

あなたの答えに基づいて、おそらく問題は、私がedgeCreasesElementとedgeCreasesSourceに与えるデータです。正しい方向に私を向ける時間をとってくれてありがとう。 – Phi

+0

これらのセマンティクスで読めるサードパーティ製のツールからデータをエクスポートするのは誰もが幸運でしたか? BlenderもMaya 2016も折り目をDAEにエクスポートしていないようです。 –

+0

@Erikエッジクリースに関連するデータをエクスポートする唯一の形式はFBXですが、私はMaya LT 2017を使用していますので、オプションが限られています。 – Phi

1

データを4バイト整数のエッジペアとして、折り目値を浮動小数点として準備したと仮定すると、次のように動作します。

geometry.edgeCreasesSource = [SCNGeometrySource geometrySourceWithData:ecsData 
                 semantic:SCNGeometrySourceSemanticEdgeCrease 
                 vectorCount:creaseCount 
                floatComponents:YES 
               componentsPerVector:1 
               bytesPerComponent:4 
                 dataOffset:0 
                 dataStride:sizeof(float)]; 
    geometry.edgeCreasesElement = [SCNGeometryElement geometryElementWithData:eceData 
                 primitiveType:SCNGeometryPrimitiveTypeLine 
                 primitiveCount:creaseCount 
                 bytesPerIndex:4]; 
+0

おかげでニック、私はチャンスを得るときにそれを試してみましょう! – Phi

関連する問題