在SceneKit中导入3D模型 - Swift

时间:2015-11-26 19:03:36

标签: swift 3d scenekit

我正在创建一个玩家可以控制立方体的游戏。

他可以购买新的立方体。

我创建了基本的多维数据集:

// MAIN CUBE

mainCubeGeometry = SCNBox(width: 0.2, height: 0.2, length: 0.2, chamferRadius: 0.0)
mainCubeGeometry.firstMaterial?.diffuse.contents = UIColor.redColor()
mainCubeNode = SCNNode(geometry: mainCubeGeometry)
mainCubeNode.position = SCNVector3(x: 0.0, y: 0.0, z: 0.0)
scene.rootNode.addChildNode(mainCubeNode)

我想知道如何使用在任何软件上创建的立方体的3D模型(dae)(SketchUp per exemple)。我不太了解如何在创建场景时加载3D文件(scene = SCNScene(named: "3d.scnassets/cube.dae")),因为它是一个场景,所以它将一个场景导入我的原始场景,而我只想导入一个3D模型像我的基本多维数据集一样使用它的节点。

感谢您的帮助!

2 个答案:

答案 0 :(得分:2)

SCNScene(named:)返回SCNNode,其中包含该DAE文件中的所有对象作为子节点。加载文件,检索您感兴趣的实体,并将它们添加到场景的根节点。

以下是Fox sample app from WWDC 2015的几个片段。 Character类的node属性初始化如下:

    let characterScene = SCNScene(named: "game.scnassets/panda.scn")!
    let characterTopLevelNode = characterScene.rootNode.childNodes[0]
    node.addChildNode(characterTopLevelNode)

然后将角色添加到场景中:

    // Add the character to the scene.
    scene.rootNode.addChildNode(character.node)

答案 1 :(得分:2)

<强>解

我在这篇文章中找到了一个解决方案:如何在IOS SceneKit中将.dae文件加载到SCNNode中?

class func collada2SCNNode(filepath:String) -> SCNNode {

    var node = SCNNode()
    let scene = SCNScene(named: filepath)
    var nodeArray = scene!.rootNode.childNodes

    for childNode in nodeArray {

        node.addChildNode(childNode as SCNNode)

    }

    return node

}

使用:

let myNode = collada2SCNNode("nodes.scnassets/node.dae")
scene.rootNode.addChildNode(myNode)