从曲线样条曲线获取相等距离的点

时间:2016-12-20 18:10:22

标签: 3d three.js geometry

我有这样的样条曲线。

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),但它并没有按照我的意愿工作。

使用 getSpacedPoints ,我得到this
使用 getPoints this

2 个答案:

答案 0 :(得分:0)

根据documentationgetSpacedPoints返回沿曲线均匀分布的点。当然,距离在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
     

这可能会提高计算的精确度......