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", () => {
    // 加载完成
});