Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to place a 3D model of type OBJ with ARKit?

I need some help with placing a 3D model with the new apple ARKit. Is it possible to place an object of type OBJ? I'm trying to place a 3d model of a skull.

//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)

I don't know why nothing shows up in front of the camera. It works if I use the following line instead of the nodeCranial from above:

let cubeNode = SCNNode(geometry: SCNBox(width: 0.1, height: 0.1, length: 0.1, chamferRadius: 0))

Why doesn't it work for OBJ file too? The code above is in the func viewDidLoad().

like image 305
CoderOfTheForce Avatar asked Jul 17 '17 12:07

CoderOfTheForce


People also ask

What is being preferred for 3D model in AR?

3D model structuring for AR has been attracting a lot of attention from many industries in the past few years. The objectives of these models are to represent the relationship among objects in different dimensions. 3D scanning technique is highly accurate compared to photogrammetry.


1 Answers

    let tempScene = SCNScene(named: "art.scnassets/cat/cat.obj")!
    modelNode = tempScene.rootNode
    modelNode.simdPosition = float3(0, 0, 0.5)
    sceneView.scene.rootNode.addChildNode(modelNode)

you can load .obj, .scn or .dae files like this way.

like image 87
Mayuri R Talaviya Avatar answered Sep 17 '22 03:09

Mayuri R Talaviya