我是3D的新手。
我有一个直棍形物体,它是一个SCNBox,在某些阶段我想弯曲它(带动画)。有没有办法实现这个目标?或者我是否必须首先使用多个对象来模拟SCNBox,然后移动并旋转这些对象以模拟弯曲?
答案 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文件中,或者使用物理关节以编程方式构建对象。
这些方法都不是初级技术。