【发布时间】:2017-12-21 23:17:12
【问题描述】:
在使用新的 Apple ARKit 放置 3D 模型时,我需要一些帮助。是否可以放置OBJ 类型的对象?我正在尝试放置一个头骨的 3d 模型。
//Load the OBJ file
let bundle = Bundle.main
guard let url = bundle.url(forResource: "Cranial", withExtension: "obj") else {
fatalError("Failed to find model file")
}
let asset = MDLAsset(url:url)
guard let object = asset.object(at: 0) as? MDLMesh else {
fatalError("Failed to get mesh from asset")
}
let scene = SCNScene()
let nodeCranial = SCNNode.init(mdlObject: object)
nodeCranial.simdPosition = float3(0, 0, 0.5)
sceneView.scene.rootNode.addChildNode(nodeCranial)
我不知道为什么镜头前什么都没有。如果我使用以下行而不是上面的 nodeCranial,它会起作用:
let cubeNode = SCNNode(geometry: SCNBox(width: 0.1, height: 0.1, length: 0.1, chamferRadius: 0))
为什么它也不适用于OBJ 文件?上面的代码在函数viewDidLoad() 中。
【问题讨论】:
-
你的头有多大? 3D 资产通常以任意比例构建,但在 ARKit 中,一个单位的场景空间映射到一个真实世界的仪表。例如,如果您的 OBJ 网格有几十个单位宽,那么它在 AR 中的显示方式可能不是您想要的。您可以在运行时使用
boundingBox属性或通过在 Xcode 的场景编辑器中加载 OBJ 文件来检查其大小。
标签: ios swift augmented-reality arkit .obj