首页 > 解决方案 > 用等于点之间距离的点细分曲线

问题描述

在 three.js 中,我将push一些Vector3()坐标编辑到变量中,然后执行THREE.CatmullRomCurve3(points).getPoints(points*32);以获取曲线。如果我沿着它挤出一个形状,一切看起来都很好。

我现在遇到的问题是我希望相机沿着这条曲线运行,但速度会根据它从一个(原始)点到另一个点的距离而变化。根据threejs.org 中的一个示例,我循环遍历每个新点并将相机的位置设置为这些点。但如果两点相距 1 米,或者相距 2 米,那么每个点之间仍然是 32 个子点,并且相机将在完全相同的时间到达终点。

我怎样才能让 1 米的拉伸得到 32 个子点,2 米的拉伸得到 64 个子点,这样相机完成 2 米拉伸的时间是 1 米拉伸的两倍?

标签: three.jscurve

解决方案


我现在遇到的问题是我希望相机沿着这条曲线运行,但速度会根据它从一个(原始)点到另一个点的距离而变化。

如果您使用Curve.getSpacedPoints()而不是Curve.getPoints(),您将收到沿曲线的等间距点。

three.js R106


推荐阅读