BufferGeometry
Object3D
Raycaster
Camera
CubeCamera
PerspectiveCamera
OrthographicCamera
StereoCamera
Clock
Curve
CurvePath
Path
Shape
ShapePath
ArrowHelper
AxesHelper
BoxHelper
Box3Helper
CameraHelper
DirectionalLightHelper
GridHelper
PolarGridHelper
HemisphereLightHelper
PlaneHelper
PointLightHelper
SkeletonHelper
SpotLightHelper
Light
PointLight
RectAreaLight
SpotLight
DirectionalLight
HemisphereLight
LightShadow
PointLightShadow
AnimationLoader
AudioLoader
BufferGeometryLoader
CompressedTextureLoader
CubeTextureLoader
DataTextureLoader
FileLoader
ImageBitmapLoader
ImageLoader
Loader
LoaderUtils
MaterialLoader
ObjectLoader
TextureLoader
LoadingManager
Material
Box2
Box3
Color
Cylindrical
Euler
Frustum
Interpolant
Line3
MathUtils
Matrix3
Matrix4
Plane
Quaternion
AnimationAction
AnimationClip
AnimationMixer
AnimationObjectGroup
AnimationUtils
keyframeTrack
PropertyBinding
PropertyMixer
BooleanKeyframeTrack
QuaternionKeyframeTrack
StringKeyframeTrack
Audio
AudioAnalyser
AudioContext
AudioListener
PositionalAudio

CurvePath.getSpacedPoints()

getSpacedPoints() 方法用于获取路径上等距离的离散点集合,默认情况下离散点之间的距离为路径长度的 0.1 倍。

语法

CurvePath.getSpacedPoints(divisions)

参数

  • divisions:可选参数,表示路径分段的数量,默认值为 40

返回值

返回一个存储 Vector3 类型点集合的数组,表示路径上均匀分布的点。

示例

// 创建路径
const path = new THREE.CurvePath();
path.add(new THREE.LineCurve3(
  new THREE.Vector3(-10, 0, 0),
  new THREE.Vector3(0, 10, 0),
  new THREE.Vector3(10, 0, 0)
));

// 获取路径上等距的点集合
const spacedPoints = path.getSpacedPoints(10);

// 循环遍历点集合
for (let i = 0; i < spacedPoints.length; i++) {
  // 在该点创建一个小球表示
  const ball = new THREE.Mesh(
      new THREE.SphereGeometry(0.2, 16, 16),
      new THREE.MeshBasicMaterial({ color: 'blue' })
  );
  ball.position.copy(spacedPoints[i]);
  scene.add(ball);
}

注意事项

  • 当路径上的曲线方向发生变化时,离散点的数量可能会受到影响,导致点之间的距离并非完全相等。
  • 建议使用被连续的 LineCurveCubicBezierCurve 组成的路径,以保证等距性更加准确。
  • 使用 getSpacedPoints() 方法返回的点集合可以用于创建 TubeGeometry 类型的几何体,用于沿着路径建立管道或轨道等形状。