ios - How to use geometry from scene file with multiple objects (geometries)? -


i have blender file i've exported dae/collada , converted scenekit's scene file using xcode. i'm having trouble using geometry scene file.

the scene file ("model.scn") pretty basic:

  • group (no geometry element)
    • shape1 (geometry element)
    • shape2 (geometry element)
    • shape3 (geometry element)

when i'm trying use model, i'm unable use combined geometry of 3 shapes scngeometry used scnphysicsbody.

i've tried various approaches, don't work:

approach 1

let scene = scnscene(named: "art.scnassets/model.scn")! let node = scene.rootnode.childnode(withname: "group", recursively: true)! guard let geo = node.geometry else { return } // node.geometry nil returns here  let physicsbody = scnphysicsbody(type: .kinematic, shape: scnphysicsshape(geometry: geo)) // need custom/aggregate geometry 

approach 2

let scene = scnscene(named: "art.scnassets/model.scn")! let geonode = scnnode() let node1 = scene.rootnode.childnode(withname: "shape1", recursively: true)! let node2 = scene.rootnode.childnode(withname: "shape2", recursively: true)! let node3 = scene.rootnode.childnode(withname: "shape3", recursively: true)! geonode.addchildnode(node1) geonode.addchildnode(node2) geonode.addchildnode(node3)  // expected geonode.geometry not nil, 

according apple's documentation

a node can have 1 geometry attached it. combine geometries can controlled or animated together, create node no geometry , add other nodes it.

but doesn't appear working parent node's geometry optional still nil.

what i'm trying should simple, i'm going wrong way. want use geometry dae/collada/scene file. not want use defaults (cubes, cylinders, pyramids, spheres, torus, etc).

what doing wrong? thanks!

scenekit not merge scngeometry instances automatically you. have create new scngeometrysource , scngeometryelement objects before creating merged scngeometry.

the documentation might little misleading. it's trying if want manipulate multiple geometries @ same time, grouping multiple nodes under common parent make things easier manipulating single node affect (translate, rotate, scale) child nodes.

note in case can use init(shapes:transforms:) explicitly merge multiple scnphysicsshape instance. start creating shape each geometry, , create combined shape. transforms parameter made of transform of nodes grouped under common parent.


Comments

Popular posts from this blog

ubuntu - PHP script to find files of certain extensions in a directory, returns populated array when run in browser, but empty array when run from terminal -

php - How can i create a user dashboard -

javascript - How to detect toggling of the fullscreen-toolbar in jQuery Mobile? -