Skip to content

辅助线

Helper Line

▶ 在线运行案例

辅助线

你将学到什么

  • AxesHelper 辅助线的用途与颜色含义
  • Three.js 右手坐标系 的方向约定
  • 为什么开发时几乎总会加一根坐标轴

效果说明

红色长方体旁边出现三根彩色线段:红=X、绿=Y、蓝=Z,从原点向外延伸 150 单位。这是 AxesHelper 绘制的世界坐标轴,帮助你判断物体的位置和朝向。

核心概念

Three.js 与 OpenGL/WebGL 一样,采用 右手坐标系

颜色方向(默认)
X向右
Y绿向上
Z朝向观察者(屏幕外)

AxesHelper(size) 在场景原点绘制三根线,长度 = size。它本身也是 Object3D,可以 scene.add(axesHelper) 或挂到某个 mesh 下作为局部坐标轴。

与 mesh.position 的关系: 本案例中 mesh 在 y=10,你会看到立方体「坐在」X-Z 平面上方,而坐标轴原点仍在 (0,0,0)——这说明 position 是 mesh 相对父级(scene)的偏移

实现步骤

  1. 沿用 入门 的 Scene / Mesh / Camera / Renderer 结构
  2. new THREE.AxesHelper(150) 创建辅助线
  3. scene.add(axesHelper) 加入场景
  4. 一次性 render

代码要点

js
// AxesHelper(长度) — 仅用于调试,不参与物理/碰撞
const axesHelper = new THREE.AxesHelper(150);
scene.add(axesHelper);

生产环境

AxesHelper 仅用于开发调试,上线前通常移除或使用 axesHelper.visible = false

源码

js
import * as THREE from 'three';

// X:红色方向
// Y:绿色方向
// Z:蓝色方向

// 场景
const scene = new THREE.Scene();// 创建场景
const geometry = new THREE.BoxGeometry(100, 50, 10); //几何体
const material = new THREE.MeshBasicMaterial({ color: 0xff0000 }); //材质 
const mesh = new THREE.Mesh(geometry, material); //网格模型
mesh.position.set(0, 10, 0); //网格模型位置
scene.add(mesh);  //场景添加网格模型

// AxesHelper
const axesHelper = new THREE.AxesHelper(150);
scene.add(axesHelper);

// 相机
const camera = new THREE.PerspectiveCamera();  //相机
camera.position.set(200, 200, 200); //相机位置
camera.lookAt(0, 10, 0);   //相机观察位置

// 渲染器
const renderer = new THREE.WebGLRenderer(); // 创建渲染器
const box = document.getElementById('box');
renderer.setSize(box.clientWidth, box.clientHeight); //渲染区域
renderer.render(scene, camera); //执行渲染
box.appendChild(renderer.domElement);

小结

入门案例 · Three.js · 2/15