【问题标题】:How many files are required to load 3D object in ARKit?在 ARKit 中加载 3D 对象需要多少个文件?
【发布时间】:2018-07-28 03:51:37
【问题描述】:

我在我的应用程序中加载 3D 模型(3D 模型是从下载的示例应用程序中复制的),但是示例应用程序正在运行,当我尝试更改模型文件时,模型不显示。

在 Apple 示例 AR 应用程序和许多其他示例代码中,我们看到有 .scn 或 .dae 文件用于加载任何 3D 模型。

我的问题是除了 .scn 或 .dae 文件之外,加载 Object 还需要哪些文件?我错过了一些要包含在我的演示应用程序中的文件吗?

【问题讨论】:

  • 您只需要 .dae 文件即可快速使用,您可以使用 .obj 文件,但首选始终是 .dae 文件。
  • 谢谢,我的问题已经解决了。
  • 我投票决定将此问题作为题外话结束,因为在不知道第 3 方,即所谓的 sample 项目(来源不明)和自己的,所谓的 demo 项目。

标签: ios arkit


【解决方案1】:

这是我加载 3D 对象文件的解决方案。

@IBOutlet weak var sceneView: ARSCNView!
private var modelNode: SCNNode!


@objc func addObjectToSceneView(withGestureRecognizer recognizer: UIGestureRecognizer) {

    let tapLocation = recognizer.location(in: sceneView)

    let hitTestResults = sceneView.hitTest(tapLocation, types: .existingPlaneUsingExtent)

    guard let hitTestResult = hitTestResults.first else { return }
    let translation = hitTestResult.worldTransform.translation
    let x = translation.x
    let y = translation.y
    let z = translation.z

    // For load .scn file 
    let tempScene = SCNScene(named:"art.scnassets/cat/cat.scn”)
    modelNode = tempScene.rootNode
    modelNode.position = SCNVector3(x,y,z)
    sceneView.scene.rootNode.addChildNode(modelNode)

    //For load .dae file
    let tempScene = SCNScene(named: "art.scnassets/Petroleum_Lamp/Petroleum_Lamp.dae")
    modelNode = tempScene.rootNode.childNode(withName: "Lamp", recursively: true)!
    modelNode.position = SCNVector3(x,y,z)
    sceneView.scene.rootNode.addChildNode(modelNode)   
  }

【讨论】:

    【解决方案2】:

    您可以从这里将 .dae/.obj 转换为 .scn.. enter image description here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多