<!DOCTYPE html>
<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8" />
<title>three.js从入门到精通系列教程 - 《three.js第一个3D案例—创建3D场景》</title>
<script src="ThreeJS/three.js"></script>
</head>
<body>
<div id="webgl"></div>
<script>
//1、创建虚拟场景 new THREE.Scene();三维场景Scene (opens new window)对象理解为虚拟的3D场景,用来表示模拟生活中的真实三维场景,或者说三维世界(例如一个房间Scene)。
const scene = new THREE.Scene();
//2、创建一个长方体几何对象Geometry(例如一个椅子外形Geometry)
const geometry = new THREE.BoxGeometry(100, 100, 100);
//3、描述物体外观:材质Material 例如最简单的网格基础材质MeshBasicMaterial(例如椅子的材质MeshBasicMaterial)
//物体外观:材质Material 如果你想定义物体的外观效果,比如颜色,就需要通过材质Material相关的API实现。 创建一个材质对象Material
const material = new THREE.MeshBasicMaterial({
color: 0xff0000, //0xff0000设置材质颜色为红色
});
// 4、加载到网格模型Mesh 例如际生活中有各种各样的物体,在threejs中可以通过网格模型Mesh (opens new window)表示一个虚拟的物体
//(整个过程类似利用椅子外形Geometry和材质MeshBasicMaterial制作出一把椅子Mesh)
// 两个参数分别为几何体geometry、材质material
const mesh = new THREE.Mesh(geometry, material);
//5、定义网格模型Mesh 在三维场景Scene中的位置。实际生活中,一个物体往往是有位置的,对于threejs而言也是一样的,你可以通过位置属性.position定义网格模型Mesh在三维场景Scene中的位置。
//(类似于指定椅子Mesh在房间Scene的放置位置)
mesh.position.set(0, 10, 0);
//6、把网格模型mesh添加到三维场景scene中。(类似于按上面的位置,把椅子Mesh放置到房间Scene指定位置)
scene.add(mesh);
//7、你生活中相机拍照的照片是有大小的,对于threejs而言一样,需要定义相机在网页上输出的Canvas画布(照片)尺寸,大小可以根据需要定义,这里先随机定义一个尺寸。
// 定义相机渲染输出的画布尺寸(类似相机输出照片的大小,单位:像素px)
const width = 1000; //宽度
const height = 800; //高度
//8、创建投影相机 Threejs如果想把三维场景Scene渲染到web网页上,还需要定义一个虚拟相机Camera,就像你生活中想获得一张照片,需要一台用来拍照的相机。
/*
Threejs提供了正投影相机OrthographicCamera (opens new window)和透视投影相机PerspectiveCamera (opens new window)。比较常用的透视投影相机PerspectiveCamera。
透视投影相机PerspectiveCamera本质上就是在模拟人眼观察这个世界的规律。
我们需要给透视相机传进去四个参数:
fov(视野):照相机拍摄范围的一个角度。角度越大,视野就越宽。就好比普通相机和广角相机一样,广角相机拍摄的景物更多 默认50。
aspect(纵横比):相机拍摄的图像的宽高比,一般与画布的宽高比一致 默认1;
near(近端距离):相机视锥体近裁截面相对相机距离 默认0.1;
far(远端距离):相机视锥体远裁截面相对相机距离,far-near构成了视锥体高度方向 默认2000;
*/
const camera = new THREE.PerspectiveCamera(30, width / height, 1, 3000);
//更多源码,请移步代码下载,谢谢。
</script>
</body>
</html>
在线下载地址