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
Post a Comment