如何在SceneKit中创建柔体

时间:2015-11-12 16:34:26

标签: ios swift scenekit

所以

经过多年的iOS开发,我说是时候尝试为自己做一个小游戏了。现在我选择使用Apple的SceneKit来实现它,因为它看起来像提供了我需要的一切。

我的问题是,我偶然发现了一个巨大的问题(对我来说),在Google上搜索并没有发现任何结果。

任何想法如何让一个物体(这个物体的球体)因为引力而变形。所以基本上它应该与地面相撞。

或者,当它与其他球体相撞时,如何使其变形,如软沙滩球?

沿着这些方向的任何起点都会有所帮助。

我可以在这里发布我的代码,但我担心它与我的问题无关,因为我真的不知道从哪里开始。

谢谢!

更新

在做了一些阅读后,我认为我想要的东西可以用Vertex Shaders。这是一条正确的道路吗?

2 个答案:

答案 0 :(得分:0)

SceneKit仅使用刚体进行物理。如果你想要变形,你必须自己做。

可能是因为SceneKit无法知道对象应该如何变形。如果它只是压缩,它应该向一个方向压缩并在所有其他方向上扩展以保持它的体积,只应该模型的一部分压缩而其余部分保持刚性(如汽车上的轮胎)。

您可以尝试等待发生碰撞并执行以下操作

calculate and store the velocity after the bounce
disable collision checking on the object
run an animation for the "squash"
enable collision checking on the object
apply the calculated velocity

完全取决于你想要弹跳的真实或卡通效果。

答案 1 :(得分:0)

对于复杂的动画,通常最好使用Blender,Maya或Cheetah3D等3D建模工具来构建主体并构建动画。这些工具可以让您在更高的抽象层次上思考。然后,您可以将该模型导出为Collada(DAE)格式,然后将其导入SceneKit。

https://en.wikibooks.org/wiki/Blender_3D:_Noob_to_Pro/Basic_Animation/Bounce有一个使用Blender构建变形弹跳球的教程。