在Scenekit中无法正确加载3D模型

时间:2018-05-26 14:00:48

标签: ios scenekit blender arkit collada

所以我购买了一辆汽车的3D模型,以便在我的ARKIT应用程序中显示。该文件夹由不同的模型格式和单个图像组成。

我将.dae文件拖放到我的项目中。这是文件结构。

enter image description here

但是,当添加到场景时,轴将完全关闭并且无法正确加载。它没有加载带有纹理的完整模型,并且会加载到我之上。

参见示例:

enter image description here

然后我决定在Blender中加载.Blender文件并再次导出为colada .dae文件。

enter image description here

这是添加到我的项目时的结果。

enter image description here

enter image description here

当在现实世界中加载它时,我会站在一个可笑的大规模的地方。

我已经尝试了一个单独的模型项目,它运行良好。有没有人有任何想法如何使用3D模型在我的应用程序中正确加载?

1 个答案:

答案 0 :(得分:0)

我在购买模型时遇到了一些问题。您不应该发布链接,但它太大而无法粘贴 - 我按照本指南缩小模型并在导出之前将它们旋转到混合器中的正确位置。

https://jibransyed.wordpress.com/2014/06/05/how-to-correct-scale-and-rotation-of-static-blender-models-for-unity/

在大多数型号上我使用它来加载:

func loadCollada(sceneName: String, objName: String) -> SCNNode
    {
        let vScene = SCNScene(named: sceneName)!
        let gObject = vScene.rootNode.childNode(withName: objName, 
 recursively: true)!
        return gObject
      }

在一些较大的模型上,我必须这样做:

func collada2SCNNode(filepath: String) -> SCNNode
{
    let returnNode = SCNNode()
    let scene = SCNScene(named: filepath)
    for vNode in (scene?.rootNode.childNodes)!
    {
        returnNode.addChildNode(vNode)
    }
    return returnNode
}

然后设置Y UP: scntool --convert fighter0.dae --format c3d --output out.dae --force-y-up --force-interleaved --look-for-pvrtc-image