构建Three.js场景基本组件
在Three.js中最基础的就是THREE.Scene(建立一个场景),我们拥有一个场景后才能往场景里添加摄像机、对象和光源,让用户能看到东西在浏览器上。
THREE.Sence
对象有时候被称为场景图,可以用来保存所有图形场景的必要信息。在Three.js中,这意味这THREE.Sence
保存所有对象、光源和渲染所需要的其他对象。有趣的是,场景图,顾名思义,不仅仅是一个对象数组,甚至包括THREE.Sence
本身,都是继承自一个THREE.Object3D
的对象。
场景的基本功能
创建一个场景对象很简单:
let Scene = new THREE.Sence()
向场景里添加对象,比如摄像机:
let camera = new THREE.PerspectiveCamera(45,window.innerWidthwindow.innerHeight,0.1,1000)
Scene.add(camera)
你还可以获取到场景里,你添加过的对象列表
Scene.children
sence还有一个方法,你可以获取场景中特定的对象(当然,你在创建这个对象的时候就给这个对象命名了)
Scene。getObjectbyName()
有添加对象,就有移除对象
Scene.remove(obj) //这里的obj就是指你想删除的对象
给场景添加雾化效果
使用fog属性就可以给整个场景添加雾化效果。雾化效果就是:场景中的物体里的越远就会变得越模糊。
Scene.fog = new THREE.Fog(0xffffff,0.015,100)
new THREE.Fog(color,near,far) | 备注 |
---|---|
color | 颜色值 |
near | (近处)属性的值,雾化开始的地方 |
far | (远处),雾化结束的地方 |
Scene.fog = new THREE.FogExp2(0xffffff,0.01)
这个方法中不在指定near和far属性,只需要设置雾的颜色和浓度即可。需要注意的是,该雾的浓度不再是线性增长的,而是随着距离呈 指数增长。
new THREE.FogExp2( color : Integer, density : Float ) | 备注 |
---|---|
color | 颜色值 |
density | 指数值 |
使用overrideMaterial属性
当设置了这个属性,场景中的所有物体就会使用该属性指向的材质,即物体本身也设置了材质。
scene.overrideMaterial = new `THREE.MeshLambertMateria`l({color:0xffffff})
注意:在这里我们使用了THREE.MeshLambertMateria
材质类型。后面材质专栏还会仔细说明。
- 这种材质可以用来创建暗淡的并不光亮的表面。
- 无光泽表面的材质,无镜面高光。
- 这可以很好地模拟一些表面(如未经处理的木材或石头),但不能用镜面高光(如上漆木材)模拟光泽表面。
- 该材质非常易用,而且会对场景中的光源产生反应。
- 可以配置的前面的提高的属性:color、opacity、shading、blending、depthTest、depthWrite、wireframe、wireframeLinewidth、wireframeLinecap、wireframeLineJoin、vertexColors和fog。