2

SceneKit と Swift で遊んでいます (ただし、Objective-C での回答は問題ありません)。

collada ファイルをシーンにロードする方法を知っています。(ノードにロードできますか?)

これは私が使用しているSwiftコードです:

    let url = NSBundle.mainBundle().URLForResource("weasel", withExtension: "dae")
    var error: NSErrorPointer? = nil
    let weasel = SCNScene.sceneWithURL(url, options: nil, error: error!)

(エラーを宣言した方法がどれほど慣用的かはわかりません。お気軽に教えてください。)

これはうまくいくようですが、このシーン (またはシーン全体、それは問題ではありません) の何かを別のシーンに挿入したいと考えています。このようなものをコンパイルして実行しましたが、動作していないようです。

    let weaselNode = SCNNode()
    weaselNode.geometry = SCNNode(geometry: weasel.rootNode.geometry)
    scene.rootNode.addChildNode(weaselNode)
4

2 に答える 2

1

ここでは、ルート ノードのジオメトリ (おそらく nil) を取得しているだけです。必要なことは、シーン A から関心のあるノード (ジオメトリだけでなく) を取得し、それらをシーン B に追加することです。

擬似コードは次のようにする必要があります。

SCNNode *weaselNodeTree = [sceneA.rootNode childNodeWithName:
                             @"theObjectNameImLookingFor" recursively:YES];

(シーン A: を変更したくない場合はオプションweaselNodeTree = [weaselNodeTree clone];)

[sceneB.rootNode addChildNode:weaselNodeTree];
于 2014-06-03T23:45:14.410 に答える