【问题标题】:SCNPhysicsHingeJoint not rotating if shape is complex如果形状复杂,SCNPhysicsHingeJoint 不旋转
【发布时间】: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,尽管我认为这里并不那么重要。

为什么会这样?

【问题讨论】:

    标签: ios8 scenekit


    【解决方案1】:

    SCNPhysicsShapeKeepAsCompoundKey 默认为 YES。据我所知,这会关闭物理对象的“flattenedCone”版本。当铰链接头仅连接到模型的一个部分而不是整个物体时,您的模型中很可能有一些东西阻止它旋转。

    【讨论】:

    • 这很有趣,但是在 iOs9.new 中(现在,在问题发生一年后)没有物体旋转,独立于 YES 或 NO :-( 找不到原因。不想改造模型
    • 啊,有趣的是:苹果说:“这种形状类型 [SCNPhysicsShapeTypeKey:SCNPhysicsShapeTypeConcavePolyhedron] 只能用于静态物理体。”所以在旋转之前只是一个错误
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-20
    • 1970-01-01
    • 1970-01-01
    • 2011-12-28
    • 2019-07-23
    相关资源
    最近更新 更多