THREE.js
开始
使用three.js的第一步是创建一个场景,然后将相机添加到场景中。
- 一个场景是一个包含所有对象的容器,例如相机,灯光,模型和粒子系统。
- 相机是一个视图,它定义了场景中的对象将如何呈现。
- 光源
- 点光源 - 从一个点发出光线的光源,如太阳。
- 平行光 - 从无限远处发出的光线,如太阳光。
- 聚光灯 - 从一个点发出光线的光源,如手电筒。
- 渲染器 - 用于渲染场景的对象。
- 模型 - 一个对象,它可以是一个几何体,一个几何体的组合,或者一个几何体的组合。
- gltf模型
- fbx模型
安装
npm install three
// 引入three.js - 全量引入
import * as THREE from "three";
// 引入three.js - 按需引入
import { Scene, PerspectiveCamera, WebGLRenderer } from "three";
// gLTF加载器
import { GLTFLoader } from "three/examples/jsm/loaders/GLTFLoader";
// fbx加载器
import { FBXLoader } from "three/examples/jsm/loaders/FBXLoader";
使用
// 初始化three.js
const renderer = new THREE.WebGLRenderer({
canvas: document.getElementById('cesiumContainer'),
alpha: true,
antialias: true,
});
renderer.setClearColor(0x000000, 0);
renderer.setSize(window.innerWidth, window.innerHeight);
renderer.shadowMap.enabled = true;
// 初始化场景
const scene = new THREE.Scene();
// 初始化相机
const camera = new THREE.PerspectiveCamera(45, window.innerWidth / window.innerHeight, 0.1, 1000);
camera.position.set(0, 0, 100);
camera.lookAt(scene.position);
// 初始化光源
const ambientLight = new THREE.AmbientLight(0x0c0c0c);
scene.add(ambientLight);
const spotLight = new THREE.SpotLight(0xffffff);
spotLight.position.set(-40, 60, -10);
spotLight.castShadow = true;
scene.add(spotLight);
// 初始化模型
const loader = new THREE.GLTFLoader();
loader.load('xxx.gltf', (gltf) => {
const model = gltf.scene;
model.position.set(0, 0, 0);
model.scale.set(0.5, 0.5, 0.5);
model.rotation.set(0, 0, 0);
model.castShadow = true;
scene.add(model);
});
// 渲染
function render() {
requestAnimationFrame(render);
renderer.render(scene, camera);
}
render();