3

ファイル (.scn)MDLAssetを読み込んで作成されたインスタンスをトラバースしようとして苦労しています。SCNScene

MDLMeshカメラとライトだけでなく、 も識別して抽出したいと考えています。それを行う直接的な方法はありません。

たとえば、MDLAsset で次のインスタンス メソッドが表示されます。

func childObjects(of objectClass: Swift.AnyClass) -> [MDLObject]

これは私が使っているものですか?

SceneKit モデラーで慎重にラベルを付けました。理想的なものを参照できませんか。確かに、私がアクセスできる ID/ラベルの辞書があります。ここで何が欠けていますか?

更新 0

Apple のドキュメントが完全に不足していたため、Xcode デバッガーでシーン グラフを追加する必要がありました。はぁ ...

ここに画像の説明を入力

いくつかのこと。私はそれを見てMDLMeshMDLSubmeshそれが私が求めているものです。それを取得するためのトラバーサルアプローチは何ですか? ライトやカメラも同様です。

また、シェーダーと同期できるように、頂点記述子のレイアウトを知る必要もあります。解析済みの特定の頂点レイアウトを強制できますSCNSceneか?

4

2 に答える 2

1

すべてのカメラを取得するには、

[asset childObjectsOfClass:[MDLCamera class]]

同様に、すべての MDLObjects を取得するには、

[asset childObjectsOfClass:[MDLObjects class]]

等。

MDLSubmesh は MDLObjects ではないため、MDLMesh でトラバースします。

現在、SCN オブジェクトから作成された MDL オブジェクトに頂点記述子を強制する方法はありませんが、これは便利です。

できることの 1 つは、メッシュの vertexDescriptor プロパティを設定して、既存の MDL オブジェクトに新しい頂点記述子を課すことです。議論については、MDLMesh.h ヘッダーを参照してください。

于 2016-12-15T00:20:45.927 に答える