【问题标题】:scenekit, how to bend an objectscenekit,如何弯曲物体
【发布时间】:2016-03-22 08:18:18
【问题描述】:

我是 3D 新手。

我有一个直棒对象,它是一个 SCNBox,在某个阶段我想弯曲它(带有动画)。有什么办法可以做到这一点?还是我必须首先使用多个对象来模拟 SCNBox,然后移动和旋转这些对象来模拟弯曲?

【问题讨论】:

    标签: 3d scenekit


    【解决方案1】:

    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,这样它们就不会影响几何体的最终颜色。

    【讨论】:

    • 这是几何着色器修改器吗?
    • 应该有一条道德法则,禁止使用“着色器”这个词,而无需对其类型进行上下文化,并明确说明它的操作对象;)
    【解决方案2】:

    您有多种选择,具体取决于您所追求的效果。不过,我认为您无法仅使用一个 SCNBox 来做到这一点。

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

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

    如果您希望摇杆的末端接触特定点,则反向运动学可以为您工作。这将涉及将 IK 构建到您的 Collada 文件中,或者使用物理关节以编程方式构建对象。

    这些方法都不是初学者级别的技术。

    【讨论】:

      猜你喜欢
      • 2021-02-21
      • 1970-01-01
      • 1970-01-01
      • 2019-05-30
      • 2016-10-26
      • 1970-01-01
      • 2019-11-05
      • 2014-11-08
      • 2017-06-10
      相关资源
      最近更新 更多