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

three.js开发手册

Three.js是一个基于JavaScript的3D图形库,可以用于创建高质量、交互式的WebGL渲染图形。它提供了大量的功能,包括材质、灯光、阴影、对象管理和3D几何体的创建等。

Hello World

下面是一个简单的Three.js Hello World程序,它在浏览器中创建一个场景,添加一个立方体,并在屏幕上呈现它。

<!DOCTYPE html>
<html>
  <head>
    <title>Three.js Hello World</title>
    <style>
      body {
        margin: 0;
      }
      canvas {
        display: block;
      }
    </style>
  </head>
  <body>
    <script src="https://cdn.jsdelivr.net/npm/three@0.130.2/build/three.min.js"></script>
    <script>
      // 创建场景
      const scene = new THREE.Scene();

      // 创建相机
      const camera = new THREE.PerspectiveCamera(
        75,
        window.innerWidth / window.innerHeight,
        0.1,
        1000
      );

      // 创建渲染器
      const renderer = new THREE.WebGLRenderer();
      renderer.setSize(window.innerWidth, window.innerHeight);
      document.body.appendChild(renderer.domElement);

      // 创建几何体和材质
      const geometry = new THREE.BoxGeometry();
      const material = new THREE.MeshBasicMaterial({ color: 0x00ff00 });
      const cube = new THREE.Mesh(geometry, material);
      scene.add(cube);

      // 调整相机位置
      camera.position.z = 5;

      // 渲染场景
      function animate() {
        requestAnimationFrame(animate);
        cube.rotation.x += 0.01;
        cube.rotation.y += 0.01;
        renderer.render(scene, camera);
      }
      animate();
    </script>
  </body>
</html>

主要API

以下是一些Three.js中常用的主要API:

  • Scene

场景是一个Three.js中最基本的元素,用于容纳3D模型、灯光等。可以通过以下方式创建场景:

const scene = new THREE.Scene();
  • Camera

相机是用于捕捉场景的视角的对象。可以使用不同类型的相机,如透视相机和正交相机。可以通过以下方式创建透视相机:

const camera = new THREE.PerspectiveCamera(fov, aspect, near, far);

其中,fov是视场角、aspect是宽高比、near和far是相机的近截面和远截面。

  • Renderer

渲染器用于将场景和相机中的3D模型渲染到屏幕上。可以通过以下方式创建渲染器:

const renderer = new THREE.WebGLRenderer();
  • Geometry

几何体用于创建3D模型的形状。可以通过添加顶点和面来创建几何体。例如,可以通过以下方式创建一个立方体的几何体:

const geometry = new THREE.BoxGeometry(width, height, depth);

其中,width、height和depth是立方体的宽度、高度和深度。

  • Material

材质定义了几何体表面的外观。可以使用不同类型的材质,如基础材质、光泽材质和透明材质等。可以通过以下方式创建一个基础材质:

const material = new THREE.MeshBasicMaterial({ color: 0xffffff });

其中,color属性指定了材质的颜色。

  • Mesh

网格是由几何体和材质组成的对象。可以通过以下方式创建一个网格:

const mesh = new THREE.Mesh(geometry, material);
  • Light

灯光用于照亮场景中的3D模型。可以使用不同类型的灯光,如环境光、点光源和聚光灯等。可以通过以下方式创建一个点光源:

const light = new THREE.PointLight(color, intensity, distance);

其中,color是光源的颜色、intensity是光源的强度、distance是光线的最大距离。

  • Texture

纹理用于将图像或视频映射到3D模型的表面上。可以通过以下方式创建网格:

const mesh = new THREE.Mesh(geometry, material);
  • Animation

动画可以使场景中的模型进行移动、旋转等操作。可以使用requestAnimationFrame函数在每一帧更新模型的状态。例如:

function animate() {
  requestAnimationFrame(animate);
  mesh.rotation.x += 0.01;
  mesh.rotation.y += 0.01;
  renderer.render(scene, camera);
}
animate();