Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.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
Swift 节点';s几何体(来自DAE文件)仅在生产版本上为零_Swift_Scenekit_Arkit_Scnscene - Fatal编程技术网

Swift 节点';s几何体(来自DAE文件)仅在生产版本上为零

Swift 节点';s几何体(来自DAE文件)仅在生产版本上为零,swift,scenekit,arkit,scnscene,Swift,Scenekit,Arkit,Scnscene,我有一个3D模型,当从Xcode编译时,它在真实设备和模拟器上总是运行良好,即使设置为发行版,并且有任何优化设置,但当上传到TestFlight时,它缺少一些材料 调试之后(使用TF构建,因为无法在本地复制),我发现我使用的两个节点(看起来很糟糕的节点)没有几何体(它们在本地确实有几何体) 我正在使用的代码: self.scene = SCNScene(named: "model.scnassets/Body.dae") self.scene?.rootNode.rotati

我有一个3D模型,当从Xcode编译时,它在真实设备和模拟器上总是运行良好,即使设置为发行版,并且有任何优化设置,但当上传到TestFlight时,它缺少一些材料

调试之后(使用TF构建,因为无法在本地复制),我发现我使用的两个节点(看起来很糟糕的节点)没有几何体(它们在本地确实有几何体)

我正在使用的代码:

self.scene = SCNScene(named: "model.scnassets/Body.dae")
self.scene?.rootNode.rotation = SCNVector4(1, 0, 0, 45.degreesToRadians)
let baseNode = self.scene?.rootNode.childNode(withName: "Body", recursively: true)
let bodyImageMaterial = SCNMaterial()
bodyImageMaterial.isDoubleSided = false
bodyImageMaterial.diffuse.contents = UIImage(named: "Body_Background")
baseNode?.geometry?.materials = [bodyImageMaterial]

baseNode?.geometry
return
nil
在生产过程中,这是我无法理解的部分,因此材料不适用。我还想澄清,几何体的工作原理与预期一致,但它使用的是默认材质,因为未应用任何内容。

尝试通过以下方式访问场景图层次结构中节点的子节点:

var childNodes: [SCNNode] { get }
在实际代码中,它如下所示:

let material = SCNMaterial()
material.diffuse.contents = UIColor.red

let ship = scene.rootNode.childNode(withName: "ship", recursively: true)!        
ship.childNodes[0].geometry?.materials = [material]
有时,层次结构可能更深:

someNode.childNodes[0].childNodes[0].geometry?.materials = [material]

尝试通过以下方式访问场景图层次结构中节点的子节点:

var childNodes: [SCNNode] { get }
在实际代码中,它如下所示:

let material = SCNMaterial()
material.diffuse.contents = UIColor.red

let ship = scene.rootNode.childNode(withName: "ship", recursively: true)!        
ship.childNodes[0].geometry?.materials = [material]
有时,层次结构可能更深:

someNode.childNodes[0].childNodes[0].geometry?.materials = [material]

通过将
.dae
文件转换为
.scn
文件,我终于让它工作了。不确定这里发生了什么,因为我有其他的
.dae
按预期工作。

我最终通过将
.dae
文件转换为
.scn
使它工作起来。不确定这里发生了什么,因为我有其他的
.dae
可以正常工作。

同样的问题,我终于找到了解决方案:

而不是:

node.boundingBox
使用:


同样的问题,我终于找到了解决办法:

而不是:

node.boundingBox
使用: