我从blender导出的dae文件。 (Blender是用于制作3D对象和动画的软件)。问题是当我将.dae文件添加到场景工具包中的场景时。盒子会出现,但就是这样。即使使用下面的代码,我仍然无法操纵Box甚至做一些简单的操作,比如设置其位置或向上或向下缩放。就像它拒绝所有的东西,除了它可以放在场景中的事实。所以我决定制作一个测试对象进行操作。我把它称为“sphere1”,我可以通过代码在所有方面对其进行操作。但是.dae文件根本不会做任何事情。
代码:
这是测试圈的好处,这里球体有一个物理体,我可以缩放它并改变它的位置。它甚至落到我设定为-9.8的重力上
var sphere1: SCNNode!
let sphereGeometry = SCNSphere(radius: 4.5)
let sphereMaterial = SCNMaterial()
let collisionCapsuleRadius = CGFloat(3.0)
let collisionCapsuleHeight = CGFloat(3.0)
sphereMaterial.diffuse.contents = UIColor.greenColor()
sphereGeometry.materials = [sphereMaterial]
sphere1 = SCNNode(geometry: sphereGeometry)
sphere1.position = SCNVector3(x: 20.0, y: 10.0, z: 0.05)
sphere1.physicsBody?.mass = 1
sphere1.physicsBody?.rollingFriction = 0
//----Giveing it a physics---------
sphere1.physicsBody = SCNPhysicsBody(type: .Dynamic, shape:SCNPhysicsShape(geometry: SCNCapsule(capRadius: collisionCapsuleRadius, height: collisionCapsuleHeight), options:nil))
sphere1.physicsBody?.affectedByGravity = true
sphere1.physicsBody?.friction = 0
sphere1.physicsBody?.restitution = 1 //bounceness of the object
sphere1.physicsBody?.angularDamping = 1 // rotationess
scnView.scene!.rootNode.addChildNode(sphere1)
这是“盒子”,我甚至不能改变它的位置都是简单的缩放它。
let TestBox = SCNScene(named: "art.scnassets/TestCube.dae")
let Box: SCNNode = TestBox!.rootNode.childNodeWithName("Cube", recursively: true)!
Box.position = SCNVector3(x: 0.0, y: -30.0, z: 0.0)
Box.scale = SCNVector3Make(100, 100, 100)
scnView.scene!.rootNode.addChildNode(Box)
只是为了分享它导入的所有.dae文件的问题,而不仅仅是我早期导入的那个。我导入了另一个.dae / .scn文件,看看我是否可以操作它,但仍然没有运气。
let GuyScene = SCNScene(named: "art.scnassets/FoxMan2.scn")
let Guy: SCNNode = GuyScene!.rootNode.childNodeWithName("Guy", recursively: true)!
let collisionCapsuleRadius2 = CGFloat(0.1)
let collisionCapsuleHeight2 = CGFloat(0.1)
Guy.position = SCNVector3(x: 0.0, y: 30.0, z: 0.0)
Guy.scale = SCNVector3Make(100, 100, 100)
Guy.rotation = SCNVector4Make(0, 1, 0, 1 )
//----Giveing it a physics---------
Guy.physicsBody = SCNPhysicsBody(type: .Dynamic, shape:SCNPhysicsShape(geometry: SCNCapsule(capRadius: collisionCapsuleRadius2, height: collisionCapsuleHeight2), options:nil))
Guy.physicsBody?.affectedByGravity = true
Guy.physicsBody?.friction = 0 //
Guy.physicsBody?.restitution = 1 //bounceness of the object
Guy.physicsBody?.angularDamping = 1 // rotationess
Guy.physicsBody?.mass = 1
Guy.physicsBody?.rollingFriction = 0
GuyScene!.rootNode.addChildNode(Guy)
scnView.scene!.rootNode.addChildNode(Guy)