scenekit,如何弯曲对象

时间:2015-12-16 09:11:13

标签: 3d scenekit

我是3D的新手。

我有一个直棍形物体,它是一个SCNBox,在某些阶段我想弯曲它(带动画)。有没有办法实现这个目标?或者我是否必须首先使用多个对象来模拟SCNBox,然后移动并旋转这些对象以模拟弯曲?

2 个答案:

答案 0 :(得分:3)

SCNBox有一个heightSegmentCount属性,可用于生成更多顶点。

使用着色器修改器,您将能够弯曲立方体。这就是Fox: Building a SceneKit Game with the Xcode Scene Editor中草刀片的动画效果。这可以在SceneKit编辑器中查看(来自WWDC 2015的Enhancements to SceneKit)或以编程方式完成。

修改

以下是SCNShaderModifierEntryPointGeometry入口点的修饰符:

float offset = _geometry.color.x * (sin(1.2 * u_time + (_geometry.position.x + _geometry.position.z) * 4.0) + 0.5) * 0.02;
_geometry.position.x += offset;
_geometry.color.xyz = vec3(1.0);

弯曲权重以顶点颜色(SCNGeometrySourceSemanticColor烘焙,但您也可以使用纹理坐标),稍后将其重置为1.0,这样它们就不会影响最终颜色几何。

答案 1 :(得分:1)

您有多种选择,具体取决于您之后的效果。不过,我认为你只能用一个SCNBox做到这一点。

您可以在Blender,Maya或Cheetah3D等3D工具中设计对象。在该工具中创建动画,将模型导出为Collada / DAE格式,并在SceneKit中显示。然后,您可以按名称播放动画。

您也可以使用变形API。这是WWDC 2014 SceneKit sample code的幻灯片34。实时会话为Session 610

如果你希望手杖的末端接触特定点,反向运动学可能对你有用。这将涉及将IK构建到Collada文件中,或者使用物理关节以编程方式构建对象。

这些方法都不是初级技术。