ファイルから解析した独自のカスタムデータからMDLMeshを作成しようとしています。このファイルには、頂点の位置と三角形のインデックスのみが含まれています。私はそれらを2つのスウィフトData
オブジェクトに抽出します。頂点にはfloat3
フォーマット、インデックスにはuint32
フォーマットです。カスタムデータからのモデルI/Oメッシュ
私の問題は、自分のMDLMeshがSceneKit(結果のSCNGeometryが "空"と思われます)にインポートできず、そこから法線を作成できない(クラッシュする)ため、MDLMeshが正しく動作しないようです。今ここに
がMDLMeshのコードです:
let mesh = MDLMesh()
mesh.vertexBuffers = [MDLMeshBufferData(type: .vertex, data: vertexData)]
mesh.vertexCount = floats.count/3
let vertexDescriptor = MDLVertexDescriptor()
let attribute = MDLVertexAttribute(name: MDLVertexAttributePosition, format: .float3, offset: 0, bufferIndex: 0)
let layout = MDLVertexBufferLayout(stride: MemoryLayout<float3>.stride)
vertexDescriptor.attributes = [attribute]
vertexDescriptor.layouts = [layout]
それから私は、サブメッシュ(つまり、三角形を記述)を作成:
let submesh = MDLSubmesh(indexBuffer: MDLMeshBufferData(type: MDLMeshBufferType.index, data: indexData),
indexCount: uint32Indexes.count-uint32Indexes.count/4,
indexType: .uint32,
geometryType: .triangles,
material: nil)
mesh.submeshes = [submesh]
をあなたは間違って何も見えていますか?それとも、自分のデータが正しくない可能性がありますか?ここで
mesh.addNormals(withAttributeNamed: MDLVertexAttributeNormal, creaseThreshold: 0)
:法線をしようとした場合:indexCount
とvertexCount
がより文脈:)
EDITせずに、両方の権利であっても、その定義は奇妙なようでタフであることに注意してください:
あなたは
NBありがとう
2017-08-04 09:39:24.078436 + 0200 MyAppName [506:706] 57]キャッチされない例外により 'NSRangeException'、理由に アプリを終了*: '* - [__ NSArrayM objectAtIndexedSubscript:]:範囲外のインデックス1 [0 .. 0]' このメソッドの状態に
私はおそらく私の問題を解決した答えを追加する必要があります!問題は明らかに、説明を追加する前にデータを提供していたため、データを追加すると、説明のデフォルト値に置き換えられました。 –