【发布时间】:2016-03-22 08:18:18
【问题描述】:
我是 3D 新手。
我有一个直棒对象,它是一个 SCNBox,在某个阶段我想弯曲它(带有动画)。有什么办法可以做到这一点?还是我必须首先使用多个对象来模拟 SCNBox,然后移动和旋转这些对象来模拟弯曲?
【问题讨论】:
我是 3D 新手。
我有一个直棒对象,它是一个 SCNBox,在某个阶段我想弯曲它(带有动画)。有什么办法可以做到这一点?还是我必须首先使用多个对象来模拟 SCNBox,然后移动和旋转这些对象来模拟弯曲?
【问题讨论】:
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,这样它们就不会影响几何体的最终颜色。
【讨论】:
您有多种选择,具体取决于您所追求的效果。不过,我认为您无法仅使用一个 SCNBox 来做到这一点。
您可以在 Blender、Maya 或 Cheetah3D 等 3D 工具中设计您的对象。在该工具中创建动画,将模型导出为 Collada/DAE 格式,并在 SceneKit 中显示。然后,您可以按名称播放动画。
您也许还可以使用变形 API。这是WWDC 2014 SceneKit sample code 的第 34 张幻灯片。实时会话是Session 610。
如果您希望摇杆的末端接触特定点,则反向运动学可以为您工作。这将涉及将 IK 构建到您的 Collada 文件中,或者使用物理关节以编程方式构建对象。
这些方法都不是初学者级别的技术。
【讨论】: