【问题标题】:apply morphTargets to ParticleSystem or PointCloud将 morphTargets 应用于 ParticleSystem 或 PointCloud
【发布时间】:2014-07-25 14:50:19
【问题描述】:

我使用的是 Three.js 版本 65。

我正在使用ParticleSystem 在 3D 空间中显示一组点@时间 t=0。而且我在时间 t=1 有下一组点。现在我想像JSONLoader morphTarget 动画一样对其进行动画处理?有人可以建议我实现这一目标的最佳方法吗?

(或)

我可以更喜欢 WebGL 着色器编程吗?请提出建议。

提前致谢。

【问题讨论】:

    标签: three.js webgl


    【解决方案1】:

    是的,你可以用着色器做到这一点。你会例如使用属性vec3 positionvec3 nextPosition 和统一的float scale 为您的粒子系统创建一个自定义着色器,从 0 到 1。 然后,您可以将一些逻辑添加到计算新位置的着色器中,例如vec3 pos = position * scale + nextPosition * (1.0 - scale)(以及通常的广告牌/GL_Point 代码 ofc)。当你达到第 1 级时,你将 positionnextPosition 交换,并用相对的追随者填充 nextPosition。

    祝你玩得开心:)

    PS:我提到的代码仅用于线性插值。在您的情况下,您可能会考虑其他插值。甚至可以添加另外两个属性向量来指示前导点和后点,以便使用贝塞尔曲线计算新位置。

    最后,您迟早要考虑性能。如果您有 10k 个粒子和 1k 个“状态”,您可能会遇到性能问题。

    【讨论】:

    • 您好 Doidel,感谢您的回复。有没有可能在 Three.js 本身中实现它?因为我首先开始了 Three.js,然后是 WebGL :( 所以我对 Three.js 很满意
    • 是的,答案是 Three.js ^^ 您可以将自定义着色器与 THREE.ParticleSystem 一起使用。例如,请参见此处:ianww.com/blog/2012/12/16/…
    • 嗨,Doidel,我仍在努力。新的挑战也随之而来。您是否有通过绘制矩形选择面的经验。 (矩形选择)?
    • 你必须描述你想要达到的目标。而是为此创建一个新的stackoverflow :)
    • 您好 Doidel,感谢您的回复。我想用动画渲染一个 3d 模型。它是网格和粒子的组合。我已经实现了一些基本的操作,比如缩放、平移、旋转等,现在我想在网格中隐藏一些面。也就是说,用户将通过在场景中绘制一个矩形来选择人脸。矩形区域覆盖的面应该消失。希望这会很清楚......
    猜你喜欢
    • 2014-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-31
    相关资源
    最近更新 更多