将带有物理的 collada 场景加载到 SceneKit

Posted

技术标签:

【中文标题】将带有物理的 collada 场景加载到 SceneKit【英文标题】:Loading collada scene with physics to SceneKit 【发布时间】:2014-11-15 13:39:05 【问题描述】:

当我在搅拌机中制作一个立方体并将其设置为 Active,然后导出到 collada 时,在 SceneKit 中这个对象仍然没有物理体,我必须通过 node.physicsBody = [SCNPhysicsBody dynamicBody] 自己制作它;但是 SceneKit 不尊重我在搅拌机中的设置,例如,当我在 SceneKit 中将碰撞形状设置为球体形状时,它仍然是一个盒子形状。 但即使我收到警告“SceneKit:警告,物理形状生成中尚不支持非三角形列表元素类型”

感谢您的帮助:)

【问题讨论】:

【参考方案1】:

SceneKit 的物理系统不直接映射到 Collada 规范中的系统,因此它不会导入在 DAE 文件中定义的物理特性。 (另外,Blender 中的物理特性可能不会全部导出到 DAE。)

在 SceneKit 中设置物理时,您应该设置物理体的类型(通过使用 dynamicBody 创建它)和碰撞形状(physicsShape 属性)。如果您不设置后者,SceneKit 会尝试从网格中生成一个 - 正如您所见,这更昂贵并且不适用于所有网格。相反,从基本几何之一(如SCNSphere)创建SCNPhysicsShape

【讨论】:

【参考方案2】:

好的,现在我知道了……新的 Blender 不再支持物理导出(它曾经支持)。

【讨论】:

以上是关于将带有物理的 collada 场景加载到 SceneKit的主要内容,如果未能解决你的问题,请参考以下文章

带有 collada 文件的 Android vuforia

Android 将 FBX 或 Collada(.dae) 加载到 Android Studio Activity 中

使用 iOS 场景工具包加载未压缩的 collada 文件

如何将 collada 对象加载到 three.js?

无法使用 Three.js 加载从搅拌机导出的纹理 Collada

带有骨骼的 Assimp + COLLADA 模型 = 不正确的顶点位置