我有这样的样条曲线。
var spline = new THREE.CatmullRomCurve3([
new THREE.Vector3(100, 0, 100),
new THREE.Vector3(100, 0, 150),
new THREE.Vector3(100, 50, 150),
...
]); // many many vertices with included interpolations
我需要沿着样条曲线采用点之间相同的距离。我尝试使用 spline.getPoints(100)和 spline.getSpacedPoints(100),但它并没有按照我的意愿工作。
答案 0 :(得分:0)
根据documentation,getSpacedPoints
返回沿曲线均匀分布的点。当然,距离在3D中保持相等。因此,根据您的相机渲染的位置,这些点可能看起来更接近实际情况..这是您的情况下发生的事情吗?
或者您可以编写自己的功能。以此为基础 - Uniform discretization of Bezier curve(以2d为例,转换为3D非常简单。)
答案 1 :(得分:0)
https://github.com/mrdoob/three.js/issues/10432
Mugen87回答
如果你的曲线很大,你可以尝试以下方法:创建你的 曲线对象,将
__arcLengthDivisions
设置为高值:curve.__arcLengthDivisions = 1000; // or even higher
这可能会提高计算的精确度......