Scene
大约 3 分钟
Scene
场景是应用交互的内容载体,场景对象Scene继承自THREE.Scene
,在原场景的基础上添加了默认光源、辅助对象以及一些基础逻辑。
属性成员
isScene
- 类型:
{Boolean}
不可更改 - 默认值:
true
option
- 类型:
{Object}
配置项 - 默认值:
{
helper: {
grid: {
visible: false,
size: 200,
divisions: 200,
color1: "#1b1b1b",
color2: "#050505",
position: [0, 0, 0],
},
axes: {
visible: false,
size: 2000,
},
},
defaultLights: {
enable: true,
csm: {
enable: true,
maxFar: 100,
cascades: 4,
lightColor: "#FFFFFF",
lightIntensity: 0.15,
lightDirection: [-0.577, -0.577, 0.577]
},
ambientLight: {
intensity: 0.8,
color: 0xffffff
},
hemisphereLight: {
intensity: 0.5,
color: 0xffffff,
groundColor: 0x888888
},
secondaryLight: {
intensity: 0.2,
color: 0xFFFFFF,
alpha: 0.5,
beta: 0.866
},
},
fog: {
visible: false, // 默认不可见
color: "#ffffff", // 颜色
near: 10, // 代表从该距离起物体开始受雾效果影响
far: 30, // 代表从该距离之后物体完全看不清
},
background: "#3C3C3C",
envmap: "",
avoid: false,
avoidPadding: 4,
// 加载对象
meta: [],
}
root
根节点,默认通过scene.add
方法添加的对象将自动加入root
对象中
- 类型:
VT.Group
defaultLightGroup
默认灯光组
- 类型:
VT.Group
helperGroup
辅助组
- 类型:
VT.Group
billboards
标注组,所有添加到场景中的VT.Billboard
对象将自动加入到此链表中,用于计算是否避让。
- 类型:
List
boxCollision
标注边缘冲突检测
- 类型:
BoxCollision
mixer
动画混合器
- 类型:
THREE.AnimationMixer
gridHelperVisible
- 类型:
{Boolean}
- 默认值:
false
方法
preload
加载资源,异步方法
- preload(meta)
- 类型:
Function
- 参数:
- meta
{Object}
{things, models, textures} 待加载的资源
- meta
- 返回:
Promise
updateAvoid
更新标注避让
- updateAvoid(viewer)
- 类型:
Function
- 参数:
- viewr
VT.Viewer
视图对象
- viewr
- 返回:元
clearAvoidBillboards
清除避让标注
- clearAvoidBillboards()
- 类型:
Function
- 参数:无
- 返回:元
setDefaultLights
设置默认灯光
- setDefaultLights(option)
- 类型:
Function
- 参数:
- option
{Object}
如下
- option
- 返回:元
{
enable: true,
csm: {
enable: true,
maxFar: 100,
cascades: 4,
lightColor: "#FFFFFF",
lightIntensity: 0.15,
lightDirection: [-0.577, -0.577, 0.577]
},
ambientLight: {
intensity: 0.8,
color: 0xffffff
},
hemisphereLight: {
intensity: 0.5,
color: 0xffffff,
groundColor: 0x888888
},
secondaryLight: {
intensity: 0.2,
color: 0xFFFFFF,
alpha: 0.5,
beta: 0.866
},
}
setHelper
- setHelper(option)
- 类型:
{Function}
- 参数:
- option
{Object}
如下
- option
- 返回: 无
{
grid: {
visible: false,
size: 200,
divisions: 200,
color1: "#1b1b1b",
color2: "#050505",
position: [0, 0, 0],
},
axes: {
visible: false,
size: 2000,
},
}
updateAxesHelper
更新辅助轴
- updateAxesHelper(option)
- 类型:
{Function}
- 参数:
- option
{Object}
如下
- option
- 返回: 无
{
visible: false,
size: 2000,
}
updateGridHelper
更新辅助网格线
- updateGridHelper(option)
- 类型:
{Function}
- 参数:
- option
{Object}
如下
- option
- 返回: 无
{
visible: false,
size: 200,
divisions: 200,
color1: "#1b1b1b",
color2: "#050505",
position: [0, 0, 0],
}
setFog
设置雾效果
- setFog(option)
- 类型:
{Function}
- 参数:
- option
{Object}
如下
- option
- 返回: 无
{
visible: false, // 默认不可见
color: "#ffffff", // 颜色
near: 10, // 代表从该距离起物体开始受雾效果影响
far: 30, // 代表从该距离之后物体完全看不清
}
add
添加物体
- add(object, parent)
- 类型:
{Function}
- 参数:
- object
{THREE.Object3D}
物体 - parent
{THREE.Object3D}
父物体
- object
- 返回:
{THREE.Object3D|this}
// 往场景中添加一个方体
viewer.scene.add(new VT.Box())
remove
移除物体
- remove(object)
- 类型:
{Function}
- 参数:
- object
{THREE.Object3D}
物体
- object
- 返回:
this
// 场景删除方体
viewer.scene.remove(box)
clear
清除场景物体
- clear()
- 类型:
{Function}
- 参数:无
- 返回:
this
destroy
销毁场景,包括清除所有物体、所有灯光和辅助对象
- destroy()
- 类型:
{Function}
- 参数:无
setEnvironment
设置环境贴图
- setEnvironment(envmap, rendererManager)
- 类型:
{Function}
- 参数:
- envmap
{String}
hdr文件地址,必要参数 - rendererManager
VT.RendererManager
渲染管理器,可选参数
- envmap
- 返回:无
viewer.scene.setEnvironment("./resources/hdr/3.hdr");
setBackground
设置场景背景
- setBackground(background)
- 类型:
{Function}
- 参数:
- background
{Object|String}
背景参数
- background
- 返回:无
// 设置背景为透明
viewer.scene.setBackground(null);
// 设置背景颜色
viewer.scene.setBackground("#ff0000");
// 设置天空盒子
viewer.scene.setBackground({
skyboxPath: "./resources/skybox/cloudy/"
});
// 设置背景为全景图
viewer.scene.setBackground({
hdr: "./resources/hdr/3.hdr"
});
toJSON
- toJSON()
- 类型:
{Function}
- 参数:无
- 返回:
{Object}
viewer.scene.toJSON();
getRootTree
获取场景树
- getRootTree(option)
- 类型:
Function
- 参数:
- option
{Object}
过滤参数,均可选- keyword
{String}
名称过滤关键字 - type
{String}
物体类型过滤关键字
- keyword
- option
- 返回:
{Array}
事件
loaded
场景中所有资源从远程加载到本地后触发
scene.addEventListener("loaded", () => {
// 加载完成
});