如果形状复杂,SCNPhysicsHingeJoint 不旋转
Posted
技术标签:
【中文标题】如果形状复杂,SCNPhysicsHingeJoint 不旋转【英文标题】:SCNPhysicsHingeJoint not rotating if shape is complex 【发布时间】:2014-12-29 22:49:34 【问题描述】:我在 SceneKit 中发现 collada 对象的联合旋转有一个奇怪的行为。
想象一下,我用这段代码制作旋转桌(cheeta3d 制作的复杂表格桌):
SCNScene *heroScene = [SCNScene sceneNamed:@"scene.dae"];
b = [heroScene.rootNode childNodeWithName:@"desk" recursively:YES];
b.physicsBody = [SCNPhysicsBody dynamicBody];
b.physicsBody.physicsShape=[SCNPhysicsShape shapeWithNode:b options:@SCNPhysicsShapeTypeKey:SCNPhysicsShapeTypeConcavePolyhedron,SCNPhysicsShapeKeepAsCompoundKey:@YES]; //**HERE we need YES only, if NO it is not rotating**!
[scene.rootNode addChildNode:b];
SCNPhysicsHingeJoint *joint = [SCNPhysicsHingeJoint jointWithBody:b.physicsBody axis:SCNVector3Make(0,1,0) anchor:SCNVector3Make(0,5,0)];
[scene.physicsWorld addBehavior:joint];
看评论 //这里我们只需要 YES,如果 NO 它不旋转!
我测试了所有案例,所有关节。 SCNPhysicsShapeKeepAsCompoundKey 必须为 YES,尽管我认为这里并不那么重要。
为什么会这样?
【问题讨论】:
【参考方案1】:SCNPhysicsShapeKeepAsCompoundKey 默认为 YES。据我所知,这会关闭物理对象的“flattenedCone”版本。当铰链接头仅连接到模型的一个部分而不是整个物体时,您的模型中很可能有一些东西阻止它旋转。
【讨论】:
这很有趣,但是在 ios9.new 中(现在,在问题发生一年后)没有物体旋转,独立于 YES 或 NO :-( 找不到原因。不想改造模型 啊,有趣的是:苹果说:“这种形状类型 [SCNPhysicsShapeTypeKey:SCNPhysicsShapeTypeConcavePolyhedron] 只能用于静态物理体。”所以在旋转之前只是一个错误以上是关于如果形状复杂,SCNPhysicsHingeJoint 不旋转的主要内容,如果未能解决你的问题,请参考以下文章