跳至主要內容

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} 待加载的资源
  • 返回:Promise

updateAvoid

更新标注避让

  • updateAvoid(viewer)
  • 类型:Function
  • 参数:
    • viewr VT.Viewer 视图对象
  • 返回:元

clearAvoidBillboards

清除避让标注

  • clearAvoidBillboards()
  • 类型:Function
  • 参数:无
  • 返回:元

setDefaultLights

设置默认灯光

  • setDefaultLights(option)
  • 类型:Function
  • 参数:
    • option {Object} 如下
  • 返回:元
{

    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} 如下
  • 返回: 无
{
    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} 如下
  • 返回: 无
{
    visible: false,
    size: 2000,
}

updateGridHelper

更新辅助网格线

  • updateGridHelper(option)
  • 类型:{Function}
  • 参数:
    • option {Object} 如下
  • 返回: 无
{
    visible: false,
    size: 200,
    divisions: 200,
    color1: "#1b1b1b",
    color2: "#050505",
    position: [0, 0, 0],
}

setFog

设置雾效果

  • setFog(option)
  • 类型:{Function}
  • 参数:
    • option {Object} 如下
  • 返回: 无
{
    visible: false, // 默认不可见
    color: "#ffffff", // 颜色
    near: 10, // 代表从该距离起物体开始受雾效果影响
    far: 30, // 代表从该距离之后物体完全看不清
}

add

添加物体

  • add(object, parent)
  • 类型:{Function}
  • 参数:
    • object {THREE.Object3D} 物体
    • parent {THREE.Object3D} 父物体
  • 返回: {THREE.Object3D|this}
// 往场景中添加一个方体
viewer.scene.add(new VT.Box())

remove

移除物体

  • remove(object)
  • 类型:{Function}
  • 参数:
    • object {THREE.Object3D} 物体
  • 返回: this
// 场景删除方体
viewer.scene.remove(box)

clear

清除场景物体

  • clear()
  • 类型:{Function}
  • 参数:无
  • 返回: this

destroy

销毁场景,包括清除所有物体、所有灯光和辅助对象

  • destroy()
  • 类型:{Function}
  • 参数:无

setEnvironment

设置环境贴图

  • setEnvironment(envmap, rendererManager)
  • 类型:{Function}
  • 参数:
    • envmap {String} hdr文件地址,必要参数
    • rendererManager VT.RendererManager 渲染管理器,可选参数
  • 返回:无
viewer.scene.setEnvironment("./resources/hdr/3.hdr");

setBackground

设置场景背景

  • setBackground(background)
  • 类型:{Function}
  • 参数:
    • background {Object|String} 背景参数
  • 返回:无
// 设置背景为透明
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} 物体类型过滤关键字
  • 返回:{Array}

事件

loaded

场景中所有资源从远程加载到本地后触发

scene.addEventListener("loaded", () => {
    // 加载完成
});
上次编辑于:
贡献者: dashun