Swift .usdz模型加载到场景中时没有纹理

Swift .usdz模型加载到场景中时没有纹理,swift,scenekit,augmented-reality,arkit,usdz,Swift,Scenekit,Augmented Reality,Arkit,Usdz,我正在将一个.usdz模型(从苹果下载)加载到我的arscnseneview中,它可以正常工作。但不幸的是,模型总是在没有任何纹理的情况下渲染,并且显示为黑色 // Get the url to the .usdz file guard let usdzURL = Bundle.main.url(forResource: "toy_robot_vintage", withExtension: "usdz") else { return } // Load the SCNNode f

我正在将一个.usdz模型(从苹果下载)加载到我的
arscnseneview
中,它可以正常工作。但不幸的是,模型总是在没有任何纹理的情况下渲染,并且显示为黑色

// Get the url to the .usdz file
guard let usdzURL = Bundle.main.url(forResource:   "toy_robot_vintage", withExtension: "usdz")
else {
    return
}

// Load the SCNNode from file             
let referenceNode = SCNReferenceNode(url: usdzURL)!
referenceNode.load()

// Add node to scene
sceneView.scene.rootNode.addChildNode(referenceNode)

如果您已经在3D场景中实现了灯光,并且这些灯光具有必要的强度级别(默认值为1000流明),则可以。如果没有,只需使用以下代码实现自动照明:

let sceneView = ARSCNView()
sceneView.autoenablesDefaultLighting = true
sceneView.automaticallyUpdatesLighting = true
但是如果您仍然没有看到机器人模型的着色器

let sceneView = ARSCNView()
sceneView.autoenablesDefaultLighting = true
sceneView.automaticallyUpdatesLighting = true
  • 场景检查器的Xcode中
    只需从下拉菜单中打开
    环境
    属性的
    程序天空

您的场景没有灯光,这就是对象显示为暗的原因。只需将平行光添加到场景中:

let spotLight = SCNNode()
spotLight.light = SCNLight()
spotLight.light?.type = .directional

sceneView.scene.rootNode.addChildNode(spotLight)