返回

Three.js 零基础入门教程:创建基础 3D 场景

前端

Three.js:初学者的 3D 图形指南

步骤 1:创建 3D 场景

在 Three.js 中,场景是放置 3D 对象的虚拟画布。使用 THREE.Scene() 类创建一个新的场景。

var scene = new THREE.Scene();

步骤 2:创建相机

相机负责从特定角度观察场景。THREE.PerspectiveCamera() 类可创建透视相机。

var camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000);
camera.position.z = 5;

步骤 3:创建渲染器

渲染器将场景中的对象绘制到屏幕上。使用 THREE.WebGLRenderer() 创建 WebGL 渲染器。

var renderer = new THREE.WebGLRenderer();
renderer.setSize(window.innerWidth, window.innerHeight);
document.body.appendChild(renderer.domElement);

步骤 4:创建几何体

几何体是 3D 对象的基本形状。THREE.BoxGeometry() 类可以创建一个立方体。

var geometry = new THREE.BoxGeometry(1, 1, 1);

步骤 5:创建材质

材质定义 3D 对象的外观。THREE.MeshBasicMaterial() 类创建一个简单的基本材质。

var material = new THREE.MeshBasicMaterial({ color: 0x00ff00 });

步骤 6:创建网格对象

网格对象是几何体和材质的结合。THREE.Mesh() 类创建一个网格对象。

var cube = new THREE.Mesh(geometry, material);
scene.add(cube);

步骤 7:渲染场景

最后,使用 THREE.WebGLRenderer.render() 方法将场景绘制到屏幕上。

renderer.render(scene, camera);

例子:创建一个立方体

以下是创建一个绿色立方体的完整代码示例:

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
</head>
<body>
  <script src="three.min.js"></script>
  <script>
    var scene = new THREE.Scene();
    var camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000);
    camera.position.z = 5;
    var renderer = new THREE.WebGLRenderer();
    renderer.setSize(window.innerWidth, window.innerHeight);
    document.body.appendChild(renderer.domElement);
    var geometry = new THREE.BoxGeometry(1, 1, 1);
    var material = new THREE.MeshBasicMaterial({ color: 0x00ff00 });
    var cube = new THREE.Mesh(geometry, material);
    scene.add(cube);
    renderer.render(scene, camera);
  </script>
</body>
</html>

常见问题解答

1. 如何移动相机?

使用 camera.position.xcamera.position.ycamera.position.z 来设置相机的 x、y 和 z 坐标。

2. 如何旋转对象?

使用 object.rotation.xobject.rotation.yobject.rotation.z 来设置对象的 x、y 和 z 轴旋转。

3. 如何添加纹理?

使用 THREE.TextureLoader() 加载图像,然后将纹理传递给 THREE.MeshBasicMaterial

4. 如何处理交互?

使用 THREE.EventDispatcherTHREE.Raycaster 处理鼠标事件并与对象交互。

5. 如何在 Three.js 中创建动画?

使用 THREE.Clock 跟踪时间,并在 render() 循环中更新对象的属性以创建动画。