Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在SceneKit-Swift中导入三维模型_Swift_3d_Scenekit - Fatal编程技术网

在SceneKit-Swift中导入三维模型

在SceneKit-Swift中导入三维模型,swift,3d,scenekit,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: main

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

他可以买新的立方体

我创建的基本立方体如下所示:

// 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)
我想知道如何使用在任何软件上创建的立方体的三维模型(dae)(每个示例使用SketchUp)。我真的不明白在创建场景时如何加载3D文件(
scene=SCNScene(名为:“3D.scnassets/cube.dae”)
),因为它是一个场景,所以它会将场景导入到原始场景中,而我只想在节点中导入3D模型,以便像使用基本立方体一样使用它

谢谢你的帮助

SCNScene(命名:)
返回一个
SCNNode
,其中该DAE文件中的所有对象都作为子节点。加载文件,检索感兴趣的实体,然后将它们添加到场景的根节点

下面是一对来自的片段。
字符
类有一个
节点
属性,初始化如下:

    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)
然后将角色添加到场景中,如下所示:

    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)

解决方案

我在这篇文章中找到了一个解决方案:如何在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

}
使用:


非常感谢您的回答,但我收到了错误消息
致命错误:在展开可选值时意外发现nil
,您知道原因吗?在我的post Edits中,所有这些都能很好地与解决方案配合使用。作为猜测,在没有看到代码中出现错误的地方的情况下,我打赌您正在加载的路径在
SCNScene(名为:)
中不存在。将您的
let scene=SCNScene(命名为:filepath)
放入
do/try
如果让
尝试,我喜欢
试试在这种情况下,因为如果找不到文件,则无法继续。请告诉运行时:)认真地说,如果在
SCNScene(名为:)
中出现错误,则说明文件名或文件路径有误,或者可能忘记将DAE文件包含在捆绑包中。运行时无法在iOS上加载外部DAE文件;项目中的DAE文件在编译时使用
scntool
进行压缩。它不起作用,对不起,我是新手,我是法国人^^^没有错误,只是一个黑色屏幕而已。它也是法国人!1:当你出错时,你到底在哪一行?2:通过打开Xcode文件检查器(选项-command-1)并确保选中目标的复选框(针对您尝试加载的每个DAE文件),验证DAE文件和资产文件夹是否位于目标中。3:您可以为通用iOS设备构建,然后检查包内容(目标->在Finder中显示,然后右键单击显示包内容)。确保文件位于您认为的位置。