场景
场景(Scene)是一个容器或者说是一个“舞台”,用于存放所有的 3D 对象(如网格、模型)、光源、相机等,场景是一个树形结构,所有对象都可以通过父子关系组织起来,进行管理和操作,它继承自 Object3D
。
文档:https://threejs.rocyuan.top/docs/?q=scene#api/zh/scenes/Scene
创建场景
场景的创建非常简单,只需要使用 THREE.Scene
即可,其详细属性和方法见 文档。
1 2 3 4
| import * as THREE from "three";
const scene = new THREE.Scene();
|
常见操作
它集成自 Object3D
类,所以 Scene
也有 Object3D
的一些方法和属性。
添加对象
删除对象
清空场景
1 2 3
| while (scene.children.length > 0) { scene.remove(scene.children[0]); }
|
设置背景
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| scene.background = new THREE.Color(0x000000);
scene.background = new THREE.TextureLoader().load("images/texture.jpg");
scene.background = new THREE.CubeTextureLoader().setPath("/images/").load([ "px.jpg", "nx.jpg", "py.jpg", "ny.jpg", "pz.jpg", "nz.jpg", ]);
|
添加雾效果
线性雾:雾的密度是随着设置的 近距离 到 远距离 线性增大的,相机到近距离是看不到雾的。
指数雾:在相机附近提供清晰的视野,随着距离相机越远,雾的浓度随着设置的指数增长。
1 2 3 4
| scene.fog = new THREE.Fog(0x000000, 0, 1000);
scene.fog = new THREE.FogExp2(0x000000, 0.00025);
|
遍历场景中的对象
1 2 3 4 5 6 7 8 9
| scene.traverse(function (object) { console.log(object); if (object.type === "Mesh") { object.rotation.x += 0.01; object.rotation.y += 0.01; object.rotation.z += 0.01; } });
|