1. 视图类

位于:BOS3D.Viewer

1.1. 属性

1.1.1. viewerImpl

视图类具体实现

1.2. 视图、场景相关方法

1.2.1. addView

添加视图

名称 说明 类型 是否必须 示例
modelKey 模型 key 或者 documentKey 字符串 string M123456
projectKey 项目 key 字符串 string bos3d
token 令牌 字符串 string "sdfgasdfasdhg"
share 分享 key 字符串 string "sdfgasdfasdhg"
返回值说明 类型 示例

调用方式:

/**
 * 添加视图
 * @function addView
 * @param {string} modelKey  模型的Key或者documentKey
 * @param {string} projectKey  项目Key
 * @param {string} [token=""]  用户令牌
 * @param {string} [share=""]  分享key
 * @return {void}
 */
var viewer3D = new BOS3D.Viewer();
viewer3D.addView("M123456", "bos3d");

demo 示例

示例名称 示例地址
添加视图 去体验

1.2.2. addViews

添加视图

名称 说明 类型 是否必须 示例
groupKey 组的 Key 字符串 string "G123"
modelKeys 模型 key 数组 数组 array ["M123456"]
projectKey 项目 key 字符串 string bos3d
token 令牌 字符串 string "sdfgasdfasdhg"
返回值说明 类型 示例

调用方式:

/**
 * 添加视图组
 * @function addView
 * @param {string} groupKey  组的Key
 * @param {array} modelKeys  模型Key数组
 * @param {string} projectKey  项目Key
 * @param {string} [token=""]  用户令牌
 * @return {void}
 */
var viewer3D = new BOS3D.Viewer();
viewer3D.addViews("G123", ["M123456"], "bos3d", "asdfasdf");

1.2.3. removeView

移除视图、模型

名称 说明 类型 是否必须 示例
modelKey 模型 key 字符串 string M123456
返回值说明 类型 示例
返回是否执行成功 布尔值 Boolean true

调用方式:

/**
 * 卸载指定模型
 * @function removeView
 * @param {String} modelKey - 模型Key
 * @return {void}
 */
var viewer3D = new BOS3D.Viewer();
var result = viewer3D.removeView("M123456");

1.2.4. removeAllView

移除视图、模型

名称 说明 类型 是否必须 示例
返回值说明 类型 示例

调用方式:

/**
 * 卸载所有模型
 * @function removeAllView
 * @return {void}
 */
var viewer3D = new BOS3D.Viewer();
viewer3D.removeAllView();

1.2.5. loadComponents

加载指定的构件

名称 说明 类型 是否必须 示例
key 构件 key 字符串 string 或数组 Array M123456_123456 或 [M123456_123,M123456_456]
startCallback 加载开始的回调 方法 function function(){}
progressCallback 加载过程的回调 方法 function function(){}
finishCallback 加载结束的回调 方法 function function(){}
返回值说明 类型 示例

使用方法如下: 依赖:最新的服务端版本(提供构件和几何包的关系),研发环境已经提供。 当没有服务端支持时,也可以试验加载指定构件的功能。 1、修改 BIMWINNER.BOS3D.GlobalData.DEBUG = true; 2、在加载模型之前执行 window.geoidToFileKeyMap={}; 3、模型正常加载完成之后,保存 window.geoidToFileKeyMap 中的数据 4、修改 BIMWINNER.BOS3D.GlobalData.DEBUG = false; 5、在按需加载之前定义 window.geoidToFileKeyMap={"1":" Z3JvdXAxLE0wMC9BRC85QS93S2dIQmwxeUx4U0FDZVRGQUFzUzBoM0VDTG8wNTI0Lmd6"} (第三步中保存的数据)

加载、卸载指定构件:
               1、修改 BIMWINNER.BOS3D.GlobalData.LoadComponentOnDemand = true;
 2、执行addview 方法,这时只加载基本数据,不会显示模型和构件
 3、在模型加载完成的回调之后执行 viewer3D.loadComponents 可以加载指定构件
 4、执行 viewer3D.unloadComponents 可以卸载指定构件

说明: 1、加载、卸载方法可以重复调用 2、如果要加载的构件不存在于已经加载的模型中,那么不会有结果

调用方式:

/**
 * 加载指定的构件
 * @function loadComponents
 * @param {string|array} keys  构件key
 * @param {function} startCallback  开始时的回调
 * @param {function} progressCallback  过程中的回调
 * @param {function} finishCallback  完成之后的回调
 * @return {void}
 */
viewer3D.loadComponents(
    "M123456_456",
    function () {
        //开始加载
    },
    function () {
        //加载进度
    },
    function () {
        //加载完成
    }
);

1.2.6. unloadComponents

卸载指定的构件

名称 说明 类型 是否必须 示例
key 构件 key 字符串 string 或数组 Array M123456_123456 或 [M123456_123,M123456_456]
finishCallback 卸载结束的回调 方法 function function(){}
返回值说明 类型 示例

调用方式:

/**
 * 卸载指定的构件
 * @function unloadComponents
 * @param {string|array} keys  构件key
 * @param {function} finishCallback  完成之后的回调
 * @return {void}
 */
viewer3D.unloadComponents("M123456_456", function () {
    //卸载完成完成
});

1.2.7. getOriginalView

获取初始视角

名称 说明 类型 是否必须 示例
返回值说明 类型 示例
初始视角 对象 object {position:{},target:{},up:{}}

调用方式:

/**
 * 获取初始视角
 * @function getOriginalView
 * @return {object} {position:{},target:{},up:{}}
 */
var view = viewer3D.getOriginalView();

1.2.8. setOriginalView

设置复位的视角

名称 说明 类型 是否必须 示例
position 相机位置 对象 object 或 数组 Array {x:1,y:1,z:1}或 [1,1,1]
target 相机焦点 对象 object 或 数组 Array {x:1,y:1,z:1}或 [1,1,1]
up 相机正方向 对象 object 或 数组 Array {x:0,y:0,z:1}或 [0,0,1]
返回值说明 类型 示例

调用方式:

/**
 * 设置复位的视角
 * @function setOriginalView
 * @param {object} position  相机位置
 * @param {object} target  相机焦点
 * @param {object} up  相机正方向
 * @return {void}
 */
viewer3D.setOriginalView(
    {
        x: 1,
        y: 1,
        z: 1,
    },
    {
        x: 1,
        y: 1,
        z: 1,
    },
    {
        x: 1,
        y: 1,
        z: 1,
    }
);

1.2.9. render

渲染

名称 说明 类型 是否必须 示例
返回值说明 类型 示例

调用方式:

/**
 * 渲染视图
 * @function render
 */
viewer3D.render();

1.2.10. syncRender

同步的方式渲染视图(如果没有必要,请不要使用同步的方式渲染视图)

名称 说明 类型 是否必须 示例
返回值说明 类型 示例

调用方式:

/**
 * 同步的方式渲染视图(如果没有必要,请不要使用同步的方式渲染视图)
 * @function syncRender
 * @return {void}
 */
viewer3D.syncRender();

1.2.11. setSceneBackGroundColor

设置场景背景色

名称 说明 类型 是否必须 示例
color 颜色 字符串 string 值域(#000000-#ffffff) #00ff00
opacity 不透明度 数字 number 值域(0-1) 1
返回值说明 类型 示例

调用方式:

/**
 * 设置场景背景色
 * @function setSceneBackGroundColor
 * @param {string}  color 要设置的颜色,范围 #000000-#FFFFFF
 * @param{number} opacity   要设置的不透明度,范围 0-1
 * @return {void}
 */
viewer3D.setSceneBackGroundColor("#00ff00");

demo 示例

示例名称 示例地址
设置场景背景色 去体验

1.2.12. resetSceneBackgroundColor

重置场景背景色,恢复到初始的渐变色

名称 说明 类型 是否必须 示例
返回值说明 类型 示例

调用方式:

/**
 * 重置场景背景色,恢复到初始的渐变色
 * @function resetSceneBackGroundColor
 * @return {void}
 */
viewer3D.resetSceneBackGroundColor();

demo 示例

示例名称 示例地址
重置场景背景色 去体验

1.2.13. resize

设置场景大小,修改窗口大小,单位 px

名称 说明 类型 是否必须 示例
width 窗口宽 整型数字 number 100
height 窗口高 整型数字 number 200
返回值说明 类型 示例

调用方式:

/**
 * 修改窗口大小,单位 px
 * @function resize
 * @param {Number} width - 窗口宽
 * @param {Number} height - 窗口高
 */
viewer3D.resize(100, 200);

1.2.14. autoResize

自动计算并修改窗口大小。在单三维展示以外的页面中,您应该使用 resize 方法明确指定画布大小。

名称 说明 类型 是否必须 示例
返回值说明 类型 示例

调用方式:

/**
 * 自动修改窗口大小,单位 px
 * @function autoResize
 * @return {void}
 */
viewer3D.autoResize();

1.2.15. resetScene

复原场景

名称 说明 类型 是否必须 示例
state 复原参数 对象 object {}
state.visible 是否复位构件的可见性 布尔值 boolean true
state.selected 是否清空高亮列表 布尔值 boolean true
state.transparent 是否清空半透明列表 布尔值 boolean true
state.colorfully 是否复位构件的颜色、透明度 布尔值 boolean true
state.view 是否复位视角到初始位置 布尔值 boolean true
返回值说明 类型 示例

调用方式:

/**
 * 复原场景
 * @function resetScene
 * @param {object} [state]  复原的选项(不传参时恢复所有选项)
 * @param {boolean} [state.visible]   是否复位构件的可见性
 * @param {boolean} [state.selected]   是否清空高亮列表
 * @param {boolean} [state.transparent]  是否清空半透明列表
 * @param {boolean} [state.colorfully]   是否复位构件的颜色、透明度
 * @param {boolean} [state.view]   是否复位视角到初始位置
 * @return {void}
 */
viewer3D.resetScene({ view: true });

1.2.16. getSceneState

获取场景的状态,包括:相机状态、构件状态、模型状态,选中状态

名称 说明 类型 是否必须 示例
返回值说明 类型 示例
场景状态 对象 {state: "",camera: "",selection: [],modelSelection: []}

调用方式:

/**
 * 获取场景的状态,包括:相机状态、构件状态、模型状态,选中状态
 * @function getSceneState
 * @return {Object} 场景状态 {
            state: state,
            camera: camera,
            selection: selection,
            modelSelection: modelSelection
        }
 */
let state = viewer3D.getSceneState();

1.2.17. setSceneState

还原场景的状态,包括:相机状态、构件状态、模型状态,选中状态

名称 说明 类型 是否必须 示例
state 场景状态 对象 object {}
state.state 构件和模型的状态 JSON 字符串类型 string {"isolateAction":null,"modelIsolateAction":null,"modelActions":[],"actions":[],"sceneState":0,"version":"1.0"}
state.camera 相机的状态 JSON 字符串类型 string {"name":"persp","position":{"x":6527,"y":12408,"z":3452},"target":{"x":-1873,"y":1005,"z":670},"up":{"x":0,"y":0,"z":1},"fov":45}
state.selection 选中构件数组 数组 array ["M123_456"]
state.modelSelection 选中模型数组 数组 array ["M123"]
返回值说明 类型 示例

调用方式:

/**
 * 还原场景的状态,包括:相机状态、构件状态、模型状态,选中状态
 * @function setSceneState
 * @param {Object} state 场景状态
 * @param {String} [state.state] 构件和模型的状态
 * @param {String} [state.camera] 相机的状态
 * @param {Array} [state.selection] 选中构件数组
 * @param {Array} [state.modelSelection] 选中模型数组
 * @return {void}
 */
viewer3D.setSceneState({
    state: "",
    camera: "",
    selection: [],
    modelSelection: [],
});

1.2.18. getScreenShot

获取场景截图

名称 说明 类型 是否必须 示例
option 截图参数,若指定了参数,则只能使用回调函数才能获取到数据,无法使用返回值。 对象 object {}
option.color 背景颜色值 ,默认为透明 JSON字符串类型 string new BOS3D.Color()
option.width 场景截图的宽度,要求大于0,默认为场景显示的大小 JSON字符串类型 string 100
option.height 场景截图的高度 ,要求大于0,默认为场景显示的大小 数组 array 100
option.callback 回调函数,参数为base64格式图片 数组 array function(){}
返回值说明 类型 示例
base64 图形数据 String "data:image/png;base64,iVBORw0"

调用方式:

/**
 * 获取场景截图
 * @function getScreenShot
 * @param {Object} option 截图参数,若指定了参数,则只能使用回调函数才能获取到数据,无法使用返回值。
 * @param {BOS3D.Color} [option.color] 背景颜色值,默认为透明
 * @param {Number} [option.width] 场景截图的宽度,要求大于0,默认为场景显示的大小
 * @param {Number} [option.height] 场景截图的高度,要求大于0,默认为场景显示的大小
 * @param {function} [option.callback] 回调函数,参数为base64格式图片,
 * @return {String} 如果存在回调函数,则返回 null, 否则 返回 base64 图形数据
 */
viewer3D.getScreenShot({
    color: new BOS3D.Color(),
    width: 100,
    height: 100,
    callback: function (a) {},
});

1.2.19. destroy

销毁整个 Viewer 实例

名称 说明 类型 是否必须 示例
返回值说明 类型 示例
null null

调用方式:

/**
 * 销毁整个Viewer实例
 * @function destroy
 * @return {void}
 */
viewer3D.destroy();

1.2.20. getCanvasSize

获取绘制画布的大小

名称 说明 类型 是否必须 示例
返回值说明 类型 示例
画布大小 THREE.Vector2 {x:100,y:200},{width:100,height:200}

调用方式:

/**
 * 获取绘制画布的大小
 * @function getCanvasSize
 * @return {THREE.Vector2} 画布大小{x:100,y:200},{width:100,height:200}
 */
let size = viewer3D.getCanvasSize();

1.3. 视图控制器相关

1.3.1. enableViewController

使视图控制器可用,当初始化时没有启用,也可以通过这个接口开启

名称 说明 类型 是否必须 示例
返回值说明 类型 示例
执行是否成功 布尔值 Boolean true

调用方式:

/**
 * 使视图控制器可用
 * @function enableViewController
 * @return {Boolean} 执行是否成功
 */
viewer3D.enableViewController();

demo 示例

示例名称 示例地址
视图控制器 去体验

1.3.2. disableViewController

使视图控制器不可用

名称 说明 类型 是否必须 示例
返回值说明 类型 示例
执行是否成功 布尔值 Boolean true

调用方式:

/**
 * 使视图控制器不可用
 * @function disableViewController
 * @return {Boolean} 执行是否成功
 */
viewer3D.disableViewController();

1.4. 获取数据

1.4.1. getAllComponentsKey

获取所有构件的 key

名称 说明 类型 是否必须 示例
返回值说明 类型 示例
构件 key 的列表 Array ["c1","c2","c3"])

调用方式:

/**
 * 获取所有构件的key
 * @function getAllComponentsKey
 * @return {Array} ["c1","c2","c3"]
 */
let list = viewer3D.getAllComponentsKey();

demo 示例

示例名称 示例地址
获取所有构件的 key 去体验

1.4.2. getComponentsKeyByModelKey

获取指定模型的所有构件的 key

名称 说明 类型 是否必须 示例
modelKey 模型 key 字符串 String "M123"
返回值说明 类型 示例
构件 key 的列表 Array ["c1","c2","c3"])

调用方式:

/**
 * 获取指定模型的所有构件的key
 * @function getComponentsKeyByModelKey
 * @param {String} modelKey 模型key
 * @return {Array} ["c1","c2","c3"]
 */
let list = viewer3D.getComponentsKeyByModelKey("M123");

1.4.3. getComponentKeysByName

获取构件的 key,通过构件名称

名称 说明 类型 是否必须 示例
name 名称 字符串 String "墙"
option 选项 对象 Object {regExp:".*(墙){1,}",matchAll:false,{matchCase:false}}
option.matchCase 是否区分大小写,默认 true 布尔值 boolean false
option.matchAll 是否完全匹配,默认 true,否则只要构件名称中包含 name 参数就认为匹配。 布尔值 boolean false
option.regExp 用正则表达式匹配字符串,如果该参数不为空,则忽略 matchAll 选项。 字符串 string ".*(墙){1,}"
返回值说明 类型 示例
构件 key 的列表 Array ["c1","c2","c3"])

调用方式:

/**
 * 获取构件的key,通过构件名称
 * @method getComponentKeysByName
 * @param {String} name 名称
 * @param {Object} [option] 选项
 * @param {boolean} [option.matchCase] 是否区分大小写,默认true
 * @param {boolean} [option.matchAll] 是否完全匹配,默认true,否则只要构件名称中包含name参数就认为匹配。
 * @param {string} [option.regExp] 用正则表达式匹配字符串,如果该参数不为空,则忽略matchAll选项。
 * @return {Array} ["c1","c2","c3"]
 */
let list = viewer3D.getComponentKeysByName("基础墙");

1.4.4. getComponentKeysByType

获取构件的 key,通过构件类型

名称 说明 类型 是否必须 示例
type 类型 字符串 String "墙"
option 选项 对象 Object {regExp:".*(墙){1,}",matchAll:false,{matchCase:false}}
option.matchCase 是否区分大小写,默认 true 布尔值 boolean false
option.matchAll 是否完全匹配,默认 true,否则只要构件类型中包含 type 参数就认为匹配。 布尔值 boolean false
option.regExp 用正则表达式匹配字符串,如果该参数不为空,则忽略 matchAll 选项。 字符串 string ".*(墙){1,}"
返回值说明 类型 示例
构件 key 的列表 Array ["c1","c2","c3"])

调用方式:

/**
 * 获取构件的key,通过构件类型
 * @method getComponentKeysByType
 * @param {String} type 类型
 * @param {Object} [option] 选项
 * @param {boolean} [option.matchCase] 是否区分大小写,默认true
 * @param {boolean} [option.matchAll] 是否完全匹配,默认true,否则只要构件类型中包含type参数就认为匹配。
 * @param {string} [option.regExp] 用正则表达式匹配字符串,如果该参数不为空,则忽略matchAll选项。
 * @return {Array} ["c1","c2","c3"]
 */
let list = viewer3D.getComponentKeysByType("墙");

1.4.5. getComponentKeysByProperty

获取构件的 key,通过指定的构件属性

名称 说明 类型 是否必须 示例
key 属性 key 字符串 String "name"
value 属性值 字符串 String "123"
option 选项 ,属性值为字符串时生效 对象 Object {regExp:".*(墙){1,}",matchAll:false,{matchCase:false}}
option.matchCase 是否区分大小写,默认 true 布尔值 boolean false
option.matchAll 是否完全匹配,默认 true,否则只要构件属性中包含 value 参数就认为匹配。 布尔值 boolean false
option.regExp 用正则表达式匹配字符串,如果该参数不为空,则忽略 matchAll 选项。 字符串 string ".*(墙){1,}"
返回值说明 类型 示例
构件 key 的列表 Array ["c1","c2","c3"])

调用方式:

/**
 * 获取构件的key,通过指定的构件属性
 * @method getComponentKeysByProperty
 * @param {String} key 属性key
 * @param {String} value 属性值
 * @param {Object} [option] 选项,属性值为字符串时生效
 * @param {boolean} [option.matchCase] 是否区分大小写,默认true
 * @param {boolean} [option.matchAll] 是否完全匹配,默认true,否则只要构件属性中包含value参数就认为匹配。
 * @param {string} [option.regExp] 用正则表达式匹配字符串,如果该参数不为空,则忽略matchAll选项。
 * @return {Array} ["c1","c2","c3"]
 */
let list = viewer3D.getComponentKeysByProperty("name", "123");

1.4.6. getComponentsByKey

获取指定构件的信息

名称 说明 类型 是否必须 示例
keys 构件 key 字符串 string 或数组 Array M123456_123456 或 [M123456_123,M123456_456]
返回值说明 类型 示例
数组中是构件对象,对象内部是节点数组 Array [{componentKey:[{node}]},{componentKey:[{node}]},{componentKey:[{node}]}]

调用方式:

/**
 * 获取指定构件的信息
 * @function getComponentsByKey
 * @param {array/string} keys  构件key数组或构件key
 * @return {Array} [{componentKey:[{node}]},{componentKey:[{node}]},{componentKey:[{node}]}] 数组中是构件对象,对象内部是节点数组
 */
let list = viewer3D.getComponentsByKey("M123_123");

demo 示例

示例名称 示例地址
获取指定模型的所有构件的 key 去体验

1.4.7. getModelFloorMapsByKey

获取模型的小地图信息

名称 说明 类型 是否必须 示例
keys 模型标识 字符串 string M123456
callback 回调函数,参数:{msg: string, data: object 或 undefined}。4.18.0 版本开始支持,如果传了该参数,那么从服务端获取小地图。否则从前端获取小地图,如果需要从前端生成小地图,需要在模型加载之前调整 GlobalData.EnableCreateMiniMap 为 true 方法 function function(){}
返回值说明 类型 示例
包含 msg 和 data 属性,如果 msg 为"success"则 data 值有效,否则 msg 表示错误信息 Object {msg:"success", data:[地图数据]

调用方式:

/**
 * 获取模型的小地图信息
 * msg为"success"的时候,data为有效值
 * @param {string} key 模型key
 * @param {function} callback 回调函数
 * @return {object} {msg: string, data: object | undefined}
 */
let list = viewer3D.getModelFloorMapsByKey("M123", function () {});

1.4.8. sortComponentsById

通过构件 id,根据构件类型从一组构件中筛选出符合指定类型的构件 id

名称 说明 类型 是否必须 示例
ids 构件 id 字符串 string 或数组 Array 123456 或 [123,456]
modelKey 模型 key 字符串 string M123456
type 构件类型 字符串 string "门"

调用方式:

/**
 * 根据构件类型筛选出构件id,通过id
 * @function sortComponentsById
 * @param ids {array/string} 构件id数组或构件id
 * @param modelKey {string} 构件所属的模型的Key
 * @param type {string} 构件类型 ,如墙、窗等
 * @return ids{Array} id数组
 */
viewer3D.sortComponentsById(["123456", "234567"], "M123456", "门");

1.4.9. sortComponentsByKey

通过构件 key,根据构件类型从一组构件中筛选出符合指定类型的构件 key

名称 说明 类型 是否必须 示例
key 构件 key 字符串 string 或数组 Array M123456_123456 或 [M123456_123,M123456_456]
type 构件类型 字符串 string "窗"

调用方式:

/**
 * 根据构件类型筛选出构件key,通过key
 * @sortComponentsById
 * @param key {array/string} 构件key数组或构件key
 * @param type {string} 构件类型 ,如墙、窗等
 * @return keys{Array} 构件key数组
 */
viewer3D.sortComponentsByKey(["M123456_123456", "M123456_123457"], "门");

1.4.10. getComponentsAttributeById

通过构件 id 获取构件的属性

名称 说明 类型 是否必须 示例
ids 构件 id 字符串 string 123456
modelKey 模型 key 字符串 string M123456
callback 回调函数 函数 function function(){}
返回值说明 类型 示例

调用方式:

/**
 * 通过构件id获取构件的属性
 * @function getComponentsAttributeById
 * @param {string} id  构件id
 * @param {string}  modelKey 构件所属的模型的Key
 * @param {function} callback  回调函数
 * @return {void}
 */
viewer3D.getComponentsAttributeById("234567", "M123456", function (result) {
    console.log(result);
});

1.4.11. getComponentsAttributeByKey

通过构件 key 获取构件的属性

名称 说明 类型 是否必须 示例
key 构件 key 字符串 string M123456_123456
callback 回调函数 函数 function function(){}
返回值说明 类型 示例

调用方式:

/**
 * 通过构件id获取构件的属性
 * @function getComponentsAttributeByKey
 * @param {string} key  构件key
 * @param {function} callback 回调函数
 * @return {void}
 */
viewer3D.getComponentsAttributeByKey("M123_234567", function (result) {
    console.log(result);
});

demo 示例

示例名称 示例地址
获取构件信息 去体验

1.4.12. cloneComponentByKey

克隆构件,从 5.1.0 版本开始,第二个参数无效,克隆出来的构件(一个原生的 THREE.Mesh 对象)不会添加到场景中。

名称 说明 类型 是否必须 示例
key 构件 key 字符串 string M123456_123456
controllerName(5.1.0 版本开始不再支持) 构件变换控制器名称 string:["translate"|"scale"|"rotate"] "translate"
返回值说明 类型 示例
克隆构件mesh THREE.Mesh THREE.Mesh

调用方式:

/**
 * 从5.1.0版本开始,第二个参数无效,克隆出来的构件(一个原生的THREE.Mesh对象)不会添加到场景中。
 * 根据指定的构件key,克隆构件(只针对BOS3D解析生成的场景内部构件使用)
 * 克隆出来的构件会自带两个额外属性
 * xxx.byClone {boolean} 标识构件此对象时被克隆出来的
 * xxx.originMId {string} 标识构件的原始材质Id
 * xxx.originComponentKey 标识构件原始构件key
 * @function cloneComponentByKey
 * @param {string} key -构件key
 * @param {"translate"|"scale"|"rotate"} [controllerName] -(从5.1.0版本开始该参数无效)控制器名称
 *  1:克隆完成后,克隆构件会显示在原始构件位置,不易区分克隆是否完成,此时可以通过添加控制器表现克隆以完成
 *  2:在业务上,克隆构件绘制的位置也并非是用户期望的位置,此时也可以通过此参数生成的变换控制器拖动旋转缩放构件至用户期望位置
 * @returns {object} -返回被克隆的构件及构件key,用户可以自行修改mesh及通过key调用BOS3D方法.(从5.5.0版本开始只返回构件mesh对象)
 如: THREE.Mesh|MeshEx
 */
viewer3D.cloneComponentByKey("M123_234567", "translate");

1.4.13. setCloneComponentMaterialsByKey

设置克隆构件材质

名称 说明 类型 是否必须 示例
CloneComponentByKey 克隆构件的构件 key 字符串 string M123456_123456
materials THREE.Material|THREE.Material[] 对象 object | obejct[] THREE.Material
orders 材质顺序或顺序数组 数字 number | number[] [0,2]
返回值说明 类型 示例
result:指定构件 key 的 mesh 不存在或者 mesh 不是克隆构件时会有错误返回 boolean false
code:指定构件 key 的 mesh 不存在或者 mesh 不是克隆构件时会有错误返回 number -1:表示 key 对应的构件不错在,-2:表示构件不是克隆接口克隆出的构件

调用方式:

/**
 * 修改cloneComponentByKey方法生成克隆构件的材质
 * @function setCloneComponentMaterialsByKey
 * @param {string} CloneComponentByKey -克隆出来构件的构件key
 * @param {THREE.Material[]|THREE.Material} materials -材质数组
 * @param {number[]|number} [orders] -材质顺序,orders表明材质参数与mesh材质对象的对应关系,
 *  例如:1:当表示材质参数第一个材质对象对应mesh中第二个材质对象的时候,就可以设置orders=[1],对应下标以0开始
 *      2:当orders不存在时,会根据材质参数的长度依次替换mesh材质对象的参数,
 *      3:当mesh材质对象长度为2的时候,如果orders序号大于0时,方法将跳出,不在继续向下执行
 */
viewer3D.setCloneComponentMaterialsByKey("M123_234567", materials.orders);

1.4.14. pickByPoint

根据屏幕坐标点,模拟点击操作得到选中构件

名称 说明 类型 是否必须 示例
point 坐标点 对象 object {x:0,y:0}
返回值说明 类型 示例
拾取结果的对象 object
object.componentKey object
object.worldPosition object
object.worldBoundingBox object
object.faceIndex object

调用方式:

/**
 * 根据屏幕坐标点,模拟点击操作得到选中构件,返回选中信息,包括:
 *  componentKey :选中构件的Key
 *  worldPosition : 选中构件被选中的点的世界坐标
 *  worldBoundingBox : 选中构件的包围盒
 *  faceIndex : 选中构件被选中的面
 * @method pickByPoint
 * @param {Object} point - 坐标点({x:0, y: 0})
 * @return {Object} - 选中构件信息,如果没有构件选中,返回null
 */
viewer3D.pickByPoint({
    x: 0,
    y: 0,
});

1.4.15. calculateMinDistance

计算两个构件之间的最小距离

名称 说明 类型 是否必须 示例
componentKey 构件 key 字符串 string "M123_456"
componentKey2 第二个构件 key 字符串 string "M123_456"
返回值说明 类型 示例
返回结果的对象 object
object.start THREE.Vector3
object.end THREE.Vector3
object.minDistance Number

调用方式:

/**
 * 计算两个构件之间的最小距离,返回的信息包括:
 *  start :起点坐标
 *  end : 终点坐标
 *  minDistance : 最小距离
 * @method calculateMinDistance
 * @param {string} componentKey 构件key
 * @param {string} componentKey2 第二个构件key
 * @return {Object} - 最小距离信息
 */
viewer3D.calculateMinDistance({
    x: 0,
    y: 0,
});

1.5. 坐标转换

1.5.1. getScreenCoordFromSceneCoord

获取场景坐标(三维)对应的屏幕坐标(二维)

名称 说明 类型 是否必须 示例
coord 三维空间坐标 数组 Array 或 对象 object [1,2,1]或{x:1,y:2,z:1}
返回值说明 类型 示例
屏幕坐标 数组 Array [100,200,1]

调用方式:

/**
 * 获取场景坐标(三维)对应的屏幕坐标(二维)
 * @function getScreenCoordFromSceneCoord
 * @param {array/THREE.Vector3} coord  三维空间向量
 * @return {Array} 屏幕坐标,第三个数值表示是否在相机后边,1表示是,0表示否
 */
viewer3D.getScreenCoordFromSceneCoord([1, 2, 3]);

1.5.2. getWorldPositionFromLocalPositionByModelKey

从模型的局部坐标空间点获取世界空间坐标点

名称 说明 类型 是否必须 示例
point 模型局部坐标点 数组 Array 或 对象 object [1,2,1]或{x:1,y:2,z:1}
modelKey 模型 key 字符串 string M123456
返回值说明 类型 示例
世界坐标数组 数组 Array [100,200,1]

调用方式:

/**
 * 从模型的局部坐标空间点获取世界空间坐标点
 * @function getWorldPositionFromLocalPositionByModelKey
 * @param {array/THREE.Vector3} point  模型局部坐标点
 * @param {string} modelKey  模型key
 * @return {Array} 世界坐标数组
 */
viewer3D.getWorldPositionFromLocalPositionByModelKey([1, 2, 3], "M123");

1.5.3. getLocalPositionFromWorldPositionByModelKey

从世界坐标空间点获取模型局部空间坐标点

名称 说明 类型 是否必须 示例
point 世界坐标点 数组 Array 或 对象 object [1,2,1]或{x:1,y:2,z:1}
modelKey 模型 key 字符串 string M123456
返回值说明 类型 示例
模型局部坐标点数组 数组 Array [100,200,1]

调用方式:

/**
 * 从世界坐标空间点获取模型局部空间坐标点
 * @function getLocalPositionFromWorldPositionByModelKey
 * @param {array/THREE.Vector3} point  世界坐标点
 * @param {string} modelKey  模型key
 * @return {Array} 模型局部坐标点数组
 */
viewer3D.getLocalPositionFromWorldPositionByModelKey([1, 2, 3], "M123");

1.5.4. getWorldPositionListFromLocalPositionListByModelKey

从模型的局部坐标空间点获取世界空间坐标点

名称 说明 类型 是否必须 示例
list 模型局部坐标点 数组 Array [THREE.Vector3,[x,y,z]]
modelKey 模型 key 字符串 string M123456
返回值说明 类型 示例
世界坐标数组 数组 Array [[x,y,z],[x,y,z]]

调用方式:

/**
 * 从模型的局部坐标空间点获取世界空间坐标点
 * @function getWorldPositionListFromLocalPositionListByModelKey
 * @param {array} list  模型局部坐标点数组[THREE.Vector3,[x,y,z]]
 * @param {string} modelKey  模型key
 * @return {Array} 世界坐标点数组 [[x,y,z],[x,y,z]]
 */
viewer3D.getWorldPositionListFromLocalPositionListByModelKey([new THREE.Vector3(), [1, 2, 3]], "M123");

1.5.5. getLocalPositionListFromWorldPositionListByModelKey

从世界坐标空间点获取模型局部空间坐标点

名称 说明 类型 是否必须 示例
list 世界坐标点数组 数组 Array 或 对象 object [THREE.Vector3,[x,y,z]]
modelKey 模型 key 字符串 string M123456
返回值说明 类型 示例
模型局部坐标点数组 数组 Array [[x,y,z],[x,y,z]]

调用方式:

/**
 * 从世界坐标空间点获取模型局部空间坐标点
 * @function getLocalPositionListFromWorldPositionListByModelKey
 * @param {array} list  世界坐标点 [THREE.Vector3,[x,y,z]]
 * @param {string} modelKey  模型key
 * @return {Array} 模型局部坐标点数组 [[x,y,z],[x,y,z]]
 */
viewer3D.getLocalPositionListFromWorldPositionListByModelKey([new THREE.Vector3(), [1, 2, 3]], "M123");

1.5.6. getWorldPositionArrayFromLocalPositionArrayByModelKey

从模型的局部坐标空间点获取世界空间坐标点

名称 说明 类型 是否必须 示例
array 模型局部坐标点 数组 Array [x,y,z,x,y,z,x,y,z]
modelKey 模型 key 字符串 string M123456
返回值说明 类型 示例
世界坐标数组 数组 Array [[x,y,z],[x,y,z]]

调用方式:

/**
 * 从模型的局部坐标空间点获取世界空间坐标点
 * @function getWorldPositionArrayFromLocalPositionArrayByModelKey
 * @param {array} array  模型局部坐标点数组 [x,y,z,x,y,z,x,y,z]
 * @param {string} modelKey  模型key
 * @return {Array} 世界坐标点数组 [x,y,z,x,y,z,x,y,z]
 */
viewer3D.getWorldPositionArrayFromLocalPositionArrayByModelKey([1, 2, 3, 4, 5, 6], "M123");

1.5.7. getLocalPositionArrayFromWorldPositionArrayByModelKey

从世界坐标空间点获取模型局部空间坐标点

名称 说明 类型 是否必须 示例
array 世界坐标点数组 数组 Array 或 对象 object [x,y,z,x,y,z,x,y,z]
modelKey 模型 key 字符串 string M123456
返回值说明 类型 示例
模型局部坐标点数组 数组 Array [x,y,z,x,y,z,x,y,z]]

调用方式:

/**
 * 从世界坐标空间点获取模型局部空间坐标点
 * @function getLocalPositionArrayFromWorldPositionArrayByModelKey
 * @param {array} array  世界坐标点 [x,y,z,x,y,z,x,y,z]
 * @param {string} modelKey  模型key
 * @return {Array} 模型局部坐标点数组 [x,y,z,x,y,z,x,y,z]
 */
viewer3D.getLocalPositionArrayFromWorldPositionArrayByModelKey([1, 2, 3, 4, 5, 6], "M123");

1.6. 构件操作相关方法

1.6.1. showComponentsByKey

通过 key 将构件设置为可见

名称 说明 类型 是否必须 示例
key 构件 key 字符串 string 或数组 Array M123456_123456 或 [M123456_123,M123456_456]
返回值说明 类型 示例

调用方式:

/**
 * 将指定的构件设置为可见,通过key
 * @showComponentsByKey
 * @param {array/string} key  构件key数组或构件key
 * @return {void}
 */
viewer3D.showComponentsByKey("M123456_123456");

1.6.2. hideComponentsByKey

通过 key 将构件设置为不可见

名称 说明 类型 是否必须 示例
key 构件 key 字符串 string 或数组 Array M123456_123456 或 [M123456_123,M123456_456]
返回值说明 类型 示例

调用方式:

/**
 * 将指定的构件设置为不可见,通过key
 * @hideComponentsByKey
 * @param {array/string} key  构件key数组或构件key
 * @return {void}
 */
viewer3D.hideComponentsByKey("M123456_123456");

1.6.3. activateComponentsByKey

将指定的构件设置为有效状态,比如默认被失效的“房间”类型的构件。有效状态的构件才可以进行显示隐藏高亮上色等操作

名称 说明 类型 是否必须 示例
key 构件 key 字符串 string 或数组 Array M123456_123456 或 [M123456_123,M123456_456]
返回值说明 类型 示例

调用方式:

/**
 * 将指定的构件设置为有效状态,通过key
 * @activateComponentsByKey
 * @param {array|string} key  构件key数组或构件key
 * @return {void}
 */
viewer3D.activateComponentsByKey("M123456_123456");

1.6.4. deactivateComponentsByKey

将指定的构件设置为无效状态,(只能通过对应接口复原) 通过 key。 BOS3D.DefaultInvisibleComponentType 中的类型会默认失效

名称 说明 类型 是否必须 示例
key 构件 key 字符串 string 或数组 Array M123456_123456 或 [M123456_123,M123456_456]
返回值说明 类型 示例

调用方式:

/**
 * 将指定的构件设置为无效状态,(只能通过对应接口复原) 通过key
 * @deactivateComponentsByKey
 * @param {array|string} key  构件key数组或构件key
 * @return {void}
 */

viewer3D.deactivateComponentsByKey("M123456_123456");

1.6.5. getInvisibleComponentList

获取隐藏的构件 key,(不包括失活状态的构件)

名称 说明 类型 是否必须 示例
返回值说明 类型 示例
构件 key 数组 array ["M123_456"]

调用方式:

/**
 * 获取隐藏的构件key(不包括失活状态的构件)
 * @function getInvisibleComponentList
 * @return {array} 构件key数组
 */
viewer3D.getInvisibleComponentList();

1.6.6. getInactivatedComponentList

获取处于失活状态的构件

名称 说明 类型 是否必须 示例
返回值说明 类型 示例
构件 key 数组 array ["M123_456"]

调用方式:

/**
 * 获取处于失活状态的构件
 * @function getInactivatedComponentList
 * @return {array} 构件key数组
 */
viewer3D.getInactivatedComponentList();

1.6.7. hideAllComponents

隐藏所有构件

名称 说明 类型 是否必须 示例
返回值说明 类型 示例

调用方式:

/**
 * 隐藏所有构件
 * @hideAllComponents
 * @return {void}
 */
viewer3D.hideAllComponents();

demo 示例

示例名称 示例地址
隐藏所有构件 去体验

1.6.8. showAllComponents

显示所有构件

名称 说明 类型 是否必须 示例
返回值说明 类型 示例

调用方式:

/**
 * 显示所有构件
 * @showAllComponents
 * @return {void}
 */
viewer3D.showAllComponents();

demo 示例

示例名称 示例地址
显示所有构件 去体验

1.6.9. highlightComponentsByKey

通过 key 将构件设置为高亮

名称 说明 类型 是否必须 示例
key 构件 key 字符串 string 或数组 Array M123456_123456 或 [M123456_123,M123456_456]
返回值说明 类型 示例

调用方式:

/**
 * 将指定的构件设置为高亮,通过key
 * @highlightComponentsByKey
 * @param {array/string} key  构件key数组或构件key
 * @return {void}
 */
viewer3D.highlightComponentsByKey("M123456_123456");

demo 示例

示例名称 示例地址
高亮 去体验

1.6.10. addHighlightComponentsByKey

通过 key 将构件添加到高亮列表

名称 说明 类型 是否必须 示例
key 构件 key 字符串 string 或数组 Array M123456_123456 或 [M123456_123,M123456_456]
返回值说明 类型 示例

调用方式:

/**
 * 将指定的构件添加为高亮,通过key
 * @addHighlightComponentsByKey
 * @param {array/string} key  构件key数组或构件key
 * @return {void}
 */
viewer3D.addHighlightComponentsByKey("M123456_123456");

1.6.11. closeHighlightComponentsByKey

通过 key 将构件设置为不高亮

名称 说明 类型 是否必须 示例
key 构件 key 字符串 string 或数组 Array M123456_123456 或 [M123456_123,M123456_456]
返回值说明 类型 示例

调用方式:

/**
 * 将指定的构件设置为不高亮,通过key
 * @closeHighlightComponentsByKey
 * @param {array/string} key  构件key数组或构件key
 * @return {void}
 */
viewer3D.closeHighlightComponentsByKey("M123456_123456");

demo 示例

示例名称 示例地址
取消高亮 去体验

1.6.12. getHighlightComponentsKey

获取高亮的构件的 key

名称 说明 类型 是否必须 示例
返回值说明 类型 示例
构件的 key 数组 数组 Array ["M123_123"]

调用方式:

/**
 * 获取高亮的构件的key
 * @function getHighlightComponentsKey
 * @return {Array} 构件的key数组
 */
viewer3D.getHighlightComponentsKey();

1.6.13. clearHighlightList

清空高亮列表

名称 说明 类型 是否必须 示例
返回值说明 类型 示例

调用方式:

/**
 * 清空高亮列表
 * @function clearHighlightList
 * @return {void}
 */
viewer3D.clearHighlightList();

1.6.14. setComponentsOpacityState

设置构件显示状态(透明、不透明)

名称 说明 类型 是否必须 示例
keys 构件 key 集合 数组 Array [111,222]
state 状态 枚举字符串 BOS3D.EnumTransparentState BOS3D.EnumTransparentState.TRANSLUCENT
返回值说明 类型 示例

调用方式:

/**
 * 设置构件显示状态(透明、不透明)
 * @setComponentsOpacityState
 * @param {array} keys 构件 Id 集合
 * @param {BOS3D.EnumTransparentState} state 构件显示状态
 * @return {void}
 */
viewer3D.setComponentsOpacityState([111], BOS3D.EnumTransparentState.TRANSLUCENT);

1.6.15. transparentComponentsByKey

通过 key 将构件设置为透明

名称 说明 类型 是否必须 示例
key 构件 key 字符串 string 或数组 Array M123456_123456 或 [M123456_123,M123456_456]
返回值说明 类型 示例

调用方式:

/**
 * 将指定的构件设置为透明,通过key
 * @transparentComponentsByKey
 * @param {array/string} key  构件key数组或构件key
 * @return {void}
 */
viewer3D.transparentComponentsByKey("M123456_123456");

demo 示例

示例名称 示例地址
透明化构件 去体验

1.6.16. transparentOtherComponentsByKey

将指定构件之外的其他构件设置为透明,通过 key

名称 说明 类型 是否必须 示例
key 构件 key 字符串 string 或数组 Array M123456_123456 或 [M123456_123,M123456_456]
返回值说明 类型 示例

调用方式:

/**
 * 将指定构件之外的其他构件设置为透明,通过key
 * @transparentOtherComponentsByKey
 * @param {array/string} key  构件key数组或构件key
 * @return {void}
 */
viewer3D.transparentOtherComponentsByKey("M123456_123456");

1.6.17. transparentAllComponents

透明所有构件

名称 说明 类型 是否必须 示例
返回值说明 类型 示例

调用方式:

/**
 * 透明所有构件
 * @function transparentAllComponents
 * @return {void}
 */
viewer3D.transparentAllComponents();

1.6.18. getTransparentComponentList

获取半透明(冻结)的构件

名称 说明 类型 是否必须 示例
返回值说明 类型 示例
构件 key 数组 array ["M123_456"]

调用方式:

/**
 * 获取半透明(冻结)的构件
 * @function getTransparentComponentList
 * @return {array} 构件key数组
 */
viewer3D.getTransparentComponentList();

1.6.19. closeTransparentComponentsByKey

通过 key 将指定的构件的透明度设置为原始状态

名称 说明 类型 是否必须 示例
key 构件 key 字符串 string 或数组 Array M123456_123456 或 [M123456_123,M123456_456]
返回值说明 类型 示例

调用方式:

/**
 * 将指定的构件的透明度设置为原始状态,通过key
 * @function  closeTransparentComponentsByKey
 * @param {array/string} key  构件key数组或构件key
 * @return {void}
 */
viewer3D.closeTransparentComponentsByKey("M123456_123456");

demo 示例

示例名称 示例地址
初始化透明状态 去体验

1.6.20. clearTransparentList

清理透明模型和构件列表

名称 说明 类型 是否必须 示例
返回值说明 类型 示例

调用方式:

/**
 * 清理透明模型和构件列表
 * @function clearTransparentList
 * @return {void}
 */
viewer3D.clearTransparentList();

1.6.21. clearComponentTransparentList

清理透明构件列表

名称 说明 类型 是否必须 示例
返回值说明 类型 示例

调用方式:

/**
 * 清理透明构件列表
 * @function clearComponentTransparentList
 * @return {void}
 */
viewer3D.clearComponentTransparentList();

1.6.22. colorfulComponentsByKey

通过 key 为构件设置颜色

名称 说明 类型 是否必须 示例
key 构件 key 字符串 string 或数组 Array M123456_123456 或 [M123456_123,M123456_456]
color 颜色 数字 number 值域(0x000000-0xffffff) 0x00ff00
opacity 不透明度 数字 number 值域(0-1,要求两位小数的精度) 0.50
返回值说明 类型 示例

调用方式:

/**
 * 将指定的构件设置为变色,通过key
 * @colorfulComponentsByKey
 * @param {array/string} key 构件key数组或构件key
 * @param {number}  color  要设置的颜色,范围 0x000000-0xFFFFFF  16进制
 * @param {number} opacity  要设置的不透明度(默认为1),范围 0-1  10进制
 * @return {void}
 */
viewer3D.colorfulComponentsByKey("M123456_123456", 0x00ff00, 1);

1.6.23. closeColorfulComponentsByKey

通过 key 将指定的构件的颜色设置为原始状态

名称 说明 类型 是否必须 示例
key 构件 key 字符串 string 或数组 Array M123456_123456 或 [M123456_123,M123456_456]
返回值说明 类型 示例

调用方式:

/**
 * 将指定的构件取消变色,通过Key
 * @closeColorfulComponentsByKey
 * @param {array/string} key 构件id数组或构件id
 * @return {void}
 */
viewer3D.closeColorfulComponentsByKey("M123456_123456");

demo 示例

示例名称 示例地址
颜色变化 去体验

1.6.24. clearColorfulList

取消所有构件的变色

名称 说明 类型 是否必须 示例
返回值说明 类型 示例

调用方式:

/**
 * 取消所有构件的变色
 * @clearColorfulList
 * @return {void}
 */
viewer3D.clearColorfulList();

1.6.25. wireFrameComponentsByKey

通过 key 为构件设置为线框模式

名称 说明 类型 是否必须 示例
key 构件 key 字符串 string 或数组 Array M123456_123456 或 [M123456_123,M123456_456]
返回值说明 类型 示例

调用方式:

/**
 * 将指定的构件设置为线框,通过key
 * @wireFrameComponentsByKey
 * @param {array/string} keys  构件key数组或构件key
 * @return {void}
 */
viewer3D.wireFrameComponentsByKey("M123456_123456");

demo 示例

示例名称 示例地址
线框化构件 去体验

1.6.26. closeWireFrameComponentsByKey

通过 key 将指定的构件的线框模式设置为原始状态

名称 说明 类型 是否必须 示例
key 构件 key 字符串 string 或数组 Array M123456_123456 或 [M123456_123,M123456_456]
返回值说明 类型 示例

调用方式:

/**
 * 将指定的构件取消线框,通过key
 * @function closeColorfulComponentsByKey
 * @param {array/string} keys  构件key数组或构件key
 * @return {void}
 */
viewer3D.closeWireFrameComponentsByKey("M123456_123456");

demo 示例

示例名称 示例地址
取消线框化构件 去体验

1.6.27. isolateComponentsByKey

通过构件 key 将指定的构件隔离,即仅显示隔离的构件

名称 说明 类型 是否必须 示例
key 构件 key 字符串 string 或数组 Array M123456_123456 或 [M123456_123,M123456_456]
state 构件状态 true 为隐藏,false 为略微可见,默认 true 布尔值 boolean true
返回值说明 类型 示例

调用方式:

/**
 * 将指定的构件隔离,通过key
 * @isolateComponentsByKey
 * @param {array/string} key 构件key数组或构件key
 * @param {boolean} state  构件状态,true为隐藏,false为略微可见,默认true
 * @return {void}
 */
viewer3D.isolateComponentsByKey("M123456_123456", true);

demo 示例

示例名称 示例地址
隔离构件 去体验

1.6.28. closeIsolateComponentsByKey

将指定的构件从隔离列表中移除,如果移除之后列表为空,那么显示所有构件

名称 说明 类型 是否必须 示例
key 构件 key 字符串 string 或数组 Array M123456_123456 或 [M123456_123,M123456_456]
返回值说明 类型 示例

调用方式:

/**
 * 将指定的构件从隔离列表中移除,通过key
 * @closeIsolateComponentsByKey
 * @param {array/string}  key 构件key数组或构件key
 * @return {void}
 */
viewer3D.closeIsolateComponentsByKey("M123456_123456");

demo 示例

示例名称 示例地址
取消隔离构件 去体验

1.6.29. clearIsolation

取消所有构件的隔离

名称 说明 类型 是否必须 示例
返回值说明 类型 示例

调用方式:

/**
 * 取消所有构件隔离
 * @clearIsolation
 * @return {void}
 */
viewer3D.clearIsolation();

1.6.30. disableComponentsSelectionByKey

将指定的构件设置为不可选中

名称 说明 类型 是否必须 示例
key 构件 key 字符串 string 或数组 Array M123456_123456 或 [M123456_123,M123456_456]
返回值说明 类型 示例

调用方式:

/**
 * 将指定的构件设置为不可选中
 * @function disableComponentsSelectionByKey
 * @param {array/string}  key 构件key数组或构件key
 * @return {void}
 */
viewer3D.disableComponentsSelectionByKey("M123456_123456");

demo 示例

示例名称 示例地址
冻结构件 去体验

1.6.31. enableComponentsSelectionByKey

将指定的构件设置为可选中

名称 说明 类型 是否必须 示例
key 构件 key 字符串 string 或数组 Array M123456_123456 或 [M123456_123,M123456_456]
返回值说明 类型 示例

调用方式:

/**
 * 将指定的构件设置为可选中
 * @function enableComponentsSelectionByKey
 * @param {array/string}  key 构件key数组或构件key
 * @return {void}
 */
viewer3D.enableComponentsSelectionByKey("M123456_123456");

demo 示例

示例名称 示例地址
取消冻结 去体验

1.6.32. clearDisableSelectionList

清理不可选中的构件列表

名称 说明 类型 是否必须 示例

调用方式:

/**
 * 清理不可选中的构件列表
 * @function clearDisableSelectionList
 * @return {void}
 */
viewer3D.clearDisableSelectionList();

1.6.33. setBlinkByComponentKeys

设置构件闪烁

名称 说明 类型 是否必须 示例
key 构件 key,或者构件 key 数组 string/array "M12345"
color 构件颜色透明度值 BOS3D.Color new BOS3D.Color(1,0,0,1)
interval 闪烁间隔,毫秒为单位 num 1000
返回值说明 类型 示例

调用方式:

viewer3D.setBlinkByComponentKeys(["M1234_234936"], new BOS3D.Color(1, 0, 0, 1), 1000);

1.6.34. closeBlinkByComponentKeys

关闭构件闪烁

名称 说明 类型 是否必须 示例
key 构件 key,或者构件 key 数组 string/array "M12345"
返回值说明 类型 示例

调用方式:

/**
 * 关闭构件闪烁
 * @function closeBlinkByComponentKeys
 * @return {void}
 */
viewer3D.closeBlinkByComponentKeys(["M1234_234936"]);

清除所有构件闪烁

名称 说明 类型 是否必须 示例
返回值说明 类型 示例

调用方式:

/**
 * 清除所有构件闪烁
 * @function clearBlinkList
 * @return {void}
 */
viewer3D.clearBlinkList();

1.7. 吸附功能相关方法

1.7.1. initAdsorbControl

初始化吸附控件,该方法只需要初始化一次

名称 说明 类型 是否必须 示例

调用方式:

//初始化吸附控件(只需要初始化一次)
viewer3D.initAdsorbControl();

1.7.2. enableAdsorbControl

开启吸附功能

参数名称 说明 类型 是否必须 示例
value 是否开启吸附功能 Boolean true

调用方式

/**
 * 是否开启吸附功能
 * @param {Boolean} value
 * @returns void
 */
viewer3D.enableAdsorbControl(true);

1.8. 构件变换相关方法

1.8.1. translateComponentByKey

对构件进行平移操作

参数名称 说明 类型 是否必须 示例
key 构件 key 字符串 string M123456_123456
updateCallback 每次拖拽都调用的回调 方法 function function(){}
pauseCallback 连续拖拽之后松手之后的回调 方法 function function(){}
options 一个有以下参数的对象 Object false { isAdsorb:false }
isAdsorb 是否开启吸附功能,默认为 false Boolean false { isAdsorb:false }

调用方式:

/**
 * 对构件进行平移操作
 * @function translateComponentByKey
 * @param {String} key 构件key
 * @param { function } updateCallback 每次拖拽都调用的回调
 * @param { function } pauseCallback 连续拖拽之后松手之后的回调
 * @param { Object}  [options = {}] 一个有以下参数的对象
 * @param { Boolean } [options.isAdsorb = false] 是否开启吸附功能,默认为false
 * @return {void}
 */
viewer3D.translateComponentByKey(
    key,
    function () {},
    function () {},
    { isAdsorb: false }
);

1.8.2. scaleComponentByKey

对构件进行缩放操作

参数名称 说明 类型 是否必须 示例
key 构件 key 字符串 string M123456_123456
updateCallback 每次拖拽都调用的回调 方法 function function(){}
pauseCallback 连续拖拽之后松手之后的回调 方法 function function(){}
options 一个有以下参数的对象 Object false { isAdsorb:false }
isAdsorb 是否开启吸附功能,默认为 false Boolean false { isAdsorb:false }

调用方式:

/**
 * 对构件进行缩放操作
 * @function scaleComponentByKey
 * @param {String} key 构件key
 * @param { function } updateCallback 每次拖拽都调用的回调
 * @param { function } pauseCallback 连续拖拽之后松手之后的回调
 * @param { Object}  [options = {}] 一个有以下参数的对象
 * @param { Boolean } [options.isAdsorb = false] 是否开启吸附功能,默认为false
 * @return {void}
 */
viewer3D.scaleComponentByKey(
    key,
    function () {},
    function () {},
    { isAdsorb: false }
);

1.8.3. isometricScaleComponentByKey

对构件进行等比缩放操作

参数名称 说明 类型 是否必须 示例
key 构件 key 字符串 string M123456_123456
updateCallback 每次拖拽都调用的回调 方法 function function(){}
pauseCallback 连续拖拽之后松手之后的回调 方法 function function(){}
options 一个有以下参数的对象 Object false { isAdsorb:false }
isAdsorb 是否开启吸附功能,默认为 false Boolean false { isAdsorb:false }

调用方式:

/**
 * 对构件进行缩放操作
 * @function isometricScaleComponentByKey
 * @param {String} key 构件key
 * @param { function } updateCallback 每次拖拽都调用的回调
 * @param { function } pauseCallback 连续拖拽之后松手之后的回调
 * @param { Object}  [options = {}] 一个有以下参数的对象
 * @param { Boolean } [options.isAdsorb = false] 是否开启吸附功能,默认为false
 * @return {void}
 */
viewer3D.isometricScaleComponentByKey(
    key,
    function () {},
    function () {},
    { isAdsorb: false }
);

1.8.4. axialScaleComponentByKey

对构件进行等比缩放操作

参数名称 说明 类型 是否必须 示例
key 构件 key 字符串 string M123456_123456
updateCallback 每次拖拽都调用的回调 方法 function function(){}
pauseCallback 连续拖拽之后松手之后的回调 方法 function function(){}
options 一个有以下参数的对象 Object false { isAdsorb:false }
isAdsorb 是否开启吸附功能,默认为 false Boolean false { isAdsorb:false }

调用方式:

/**
 * 对构件进行缩放操作
 * @function axialScaleComponentByKey
 * @param {String} key 构件key
 * @param { function } updateCallback 每次拖拽都调用的回调
 * @param { function } pauseCallback 连续拖拽之后松手之后的回调
 * @param { Object}  [options = {}] 一个有以下参数的对象
 * @param { Boolean } [options.isAdsorb = false] 是否开启吸附功能,默认为false
 * @return {void}
 */
viewer3D.axialScaleComponentByKey(
    key,
    function () {},
    function () {},
    { isAdsorb: false }
);

1.8.5. rotateComponentByKey

对构件进行旋转操作

参数名称 说明 类型 是否必须 示例
key 构件 key 字符串 string M123456_123456
updateCallback 每次拖拽都调用的回调 方法 function function(){}
pauseCallback 连续拖拽之后松手之后的回调 方法 function function(){}
options 一个有以下参数的对象 Object false { isAdsorb:false }
isAdsorb 是否将该对象设置为被吸附对象,默认为 false Boolean false { isAdsorb:false }

调用方式:

/**
 * 对构件进行旋转操作
 * @function rotateComponentByKey
 * @param {String} key 构件key
 * @param { function } updateCallback 每次拖拽都调用的回调
 * @param { function } pauseCallback 连续拖拽之后松手之后的回调
 * @param { Object}  [options = {}] 一个有以下参数的对象
 * @param { Boolean } [options.isAdsorb = false] 是否将该对象设置为被吸附对象
 * @param { Boolean } [options.rotateSpace = TransformSpace.WORLD] 当前构件的旋转方式,默认是在世界坐标系下旋转
 * @return {void}
 */
viewer3D.rotateComponentByKey(
    key,
    function () {},
    function () {},
    {
        isAdsorb: false,
        rotateSpace: BOS3D.TransformSpace.LOCAL,
    }
);

demo 示例

示例名称 示例地址
构件旋转 去体验

1.8.6. cancelTransformComponent

取消变换构件

参数名称 说明 类型 是否必须 示例
needRestore 是否需要重置变换状态 boolean true

调用方式:

/**
 * 取消变换
 * @param needRestore 是否需要重置为变换以前的状态,不传或者传false表示不重置
 */
viewer3D.cancelTransformComponent(true);

1.8.7. restoreComponentTransform

只是重置构件的变换,恢复到初始状态,不会取消变换

调用方式:

/**
 * 只是重置构件的变换,恢复到初始状态,不会取消变换
 */
viewer3D.restoreComponentTransform();

1.8.8. getComponentLocalMatrixByKey

获取构件的本地矩阵,相对于世界矩阵(worldMatrix)而言

参数名称 说明 类型 是否必须 示例
key 构件 key 字符串 string M123456_123456
返回值说明 类型 示例
本地矩阵 矩阵 THREE.Matrix4

调用方式:

/**
 * 获取构件的本地矩阵,相对于世界矩阵(worldMatrix)而言
 * @param key 构件的key
 */
var matrix = viewer3D.getComponentLocalMatrixByKey(key);

1.8.9. getComponentWorldMatrixByKey

获取构件的世界矩阵,相对于本地矩阵(matrix)而言

参数名称 说明 类型 是否必须 示例
key 构件 key 字符串 string M123456_123456
返回值说明 类型 示例
世界矩阵 矩阵 THREE.Matrix4

调用方式:

/**
 * 获取构件的世界矩阵,相对于本地矩阵(matrix)而言
 * @param key 构件的key
 */
var matrix = viewer3D.getComponentWorldMatrixByKey(key);

1.8.10. setComponentLocalMatrixByKey

设置构件的本地矩阵,相对于世界矩阵(matrixWorld)而言

参数名称 说明 类型 是否必须 示例
key 构件 key 字符串 string M123456_123456
matrixArray 矩阵 数组 [float] [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]
返回值说明 类型 示例
是否成功 boolean true

调用方式:

/**
 * 设置构件的本地矩阵,相对于世界矩阵(matrixWorld)而言
 * @param key 构件的key
 * @param matrixArray 矩阵
 */
var matrix = viewer3D.setComponentLocalMatrixByKey(key, matrixArray);

1.8.11. resetComponentMatrix

重置构件的矩阵到模型加载的初始状态

参数名称 说明 类型 是否必须 示例
key 构件 key 字符串 string M123456_123456
needUpdateSceneBBox 是否需要更新场景包围盒 布尔值 Boolean true
返回值说明 类型 示例
是否成功 boolean true

调用方式:

/**
 * 重置构件的矩阵到模型加载的初始状态
 * @function resetComponentMatrix
 * @param {String} key 构件key
 * @param {Boolean} needUpdateSceneBBox 是否需要更新场景包围盒
 */
var matrix = viewer3D.resetComponentMatrix("M123456_123456", true);

1.8.12. increaseComponentTransformControlSize

增大构件变换控制器的大小(坐标轴的长短、旋转轴的大小等等),有最大值

调用方式:

/**
 * 增大构件变换控制器的大小(坐标轴的长短、旋转轴的大小等等)
 */
viewer3D.increaseComponentTransformControlSize();

1.8.13. decreaseComponentTransformControlSize

减小构件变换控制器的大小(坐标轴的长短、旋转轴的大小等等),有最小值

调用方式:

/**
 * 减小构件变换控制器的大小(坐标轴的长短、旋转轴的大小等等)
 */
viewer3D.decreaseComponentTransformControlSize();

1.8.14. setComponentTransformControlSize

设置构件变换控制器的大小(坐标轴的长短、旋转轴的大小等等)

名称 说明 类型 是否必须 示例
size 控制器的大小 number 2
返回值说明 类型 示例

调用方式:

/**
 * 设置构件变换控制器的大小(坐标轴的长短、旋转轴的大小等等)
 * @function setComponentTransformControlSize
 * @param {number} size 控制器的大小,默认为1.
 * @return {void}
 */
viewer3D.setComponentTransformControlSize(2);

1.8.15. getComponentTransformControlSize

获取构件变换控制器的大小(坐标轴的长短、旋转轴的大小等等)

名称 说明 类型 是否必须 示例
返回值说明 类型 示例
变换控制器的大小 number 1

调用方式:

/**
 * 获取构件变换控制器的大小(坐标轴的长短、旋转轴的大小等等)
 * @function getComponentTransformControlSize
 * @return {number} 变换控制器的大小
 */
viewer3D.getComponentTransformControlSize();

1.8.16. setComponentTransformSpaceToLocalSpace

设置变换空间为局部的,构件的局部坐标轴会随构件一起变换

调用方式:

/**
 * 设置变换空间为局部的,构件的局部坐标轴会随构件一起变换
 */
viewer3D.setComponentTransformSpaceToLocalSpace();

1.8.17. setComponentTransformSpaceToWorldSpace

设置变换空间为世界的,构件的坐标轴不会随构件一起变换

调用方式:

/**
 * 设置变换空间为世界的,构件的坐标轴不会随构件一起变换
 */
viewer3D.setComponentTransformSpaceToWorldSpace();

1.8.18. switchComponentTransformSpaceBetweenLocalAndWorld

设置构件变换空间,在局部和世界空间来回切换

调用方式:

/**
 * 设置构件变换空间,在局部和世界空间来回切换
 */
viewer3D.switchComponentTransformSpaceBetweenLocalAndWorld();

1.8.19. showComponentTransformOnAxis

显示 axis 轴的变换

参数名称 说明 类型 是否必须 示例
axis 坐标轴的名字,大小写不敏感 字符串 string 'x'

调用方式:

/**
 * 显示axis轴的变换
 */
viewer3D.showComponentTransformOnAxis("x");

1.8.20. hideComponentTransformOnAxis

隐藏 axis 轴的变换

参数名称 说明 类型 是否必须 示例
axis 坐标轴的名字,大小写不敏感 字符串 string 'x'

调用方式:

/**
 * 隐藏axis轴的变换
 */
viewer3D.hideComponentTransformOnAxis("x");

1.8.21. disableComponentTransform

禁用构件变换,但是变换控制器仍然还在显示

调用方式:

/**
 * 禁用构件变换,但是变换控制器仍然还在显示
 */
viewer3D.disableComponentTransform();

1.8.22. enableComponentTransform

重新启用构件变换

调用方式:

/**
 * 重新启用构件变换
 */
viewer3D.enableComponentTransform();

1.8.23. getMatrix4FromEuler

从欧拉角获取矩阵

名称 说明 类型 是否必须 示例
euler 在 xyz 轴上的旋转角度 对象 object 或 数组 array {x:1,y:1,z:1}或者[1,1,1]
position 旋转中心 对象 object 或 数组 array 否,默认[0,0,0] {x:1,y:1,z:1}或者[1,1,1]
order 旋转的执行顺序 枚举字符串 string 否,默认"XYZ" 'XYZ', 'YZX', 'ZXY', 'XZY', 'YXZ', 'ZYX'
返回值说明 类型 示例
矩阵 THREE.Matrix4 new THREE.Matrix4()

调用方式:

/**
 * 从欧拉角获取矩阵
 * @function getMatrix4FromEuler
 * @param {object/array}  euler 在xyz轴上的旋转角度(弧度制)例如:{x:1,y:1,z:1}或者[1,1,1]
 * @param {object/array}  position 旋转中心  例如:{x:1,y:1,z:1}或者[1,1,1]
 * @param {BOS3D.RotationOrders} order 旋转的执行顺序 可选值 ['XYZ', 'YZX', 'ZXY', 'XZY', 'YXZ', 'ZYX']
 * @return {void}
 */
let m4 = viewer3D.getMatrix4FromEuler(
    {
        x: 1,
        y: 1,
        z: 1,
    },
    [1, 1, 1],
    "XYZ"
);

1.8.24. componentApplyMatrix

对构件应用矩阵

名称 说明 类型 是否必须 示例
key 构件 key 字符串 string M123456_123456
matrix4 4*4 矩阵 THREE.Matrix4 new THREE.Matrix4()
返回值说明 类型 示例
执行是否成功 布尔值 Boolean true

调用方式:

/**
 * 对构件应用矩阵
 * @function componentApplyMatrix
 * @param {string}  key 要应用矩阵的构件的key
 * @param {THREE.Matrix4}  matrix4 矩阵
 * @return {void}
 */
let m4 = new THREE.Matrix4();
viewer3D.componentApplyMatrix("M123456_123456", m4);

1.8.25. setComponentMatrix

设置构件的矩阵

名称 说明 类型 是否必须 示例
key 构件 key 字符串 string M123456_123456
matrix4 4*4 矩阵 THREE.Matrix4 new THREE.Matrix4()
返回值说明 类型 示例
执行是否成功 布尔值 Boolean true

调用方式:

/**
 * 设置构件的矩阵
 * @function setComponentMatrix
 * @param {string}  key 设置矩阵的构件的key
 * @param {THREE.Matrix4}  matrix4 矩阵
 * @return {Boolean} 执行是否成功
 */
let m4 = new THREE.Matrix4();
viewer3D.setComponentMatrix("M123456_123456", m4);

1.8.26. setComponentPositionByKey

通过构件 key 设置构件的位置

名称 说明 类型 是否必须 示例
key 构件的 key 字符串 string C123456_123456
position 构件空间位置 数组 Array [100,200,300]

调用方式:

/**
 * 通过构件key设置构件的位置
 * @function setComponentPositionByKey
 * @param key {string} 构件key
 * @param position {array} 构件新的空间位置
 */
viewer3D.setComponentPositionByKey("M123456_123456", [100, 200, 300]);

demo 示例

示例名称 示例地址
移动构件位置 去体验

1.8.27. componentsRotate

构件旋转 支持多个构件一起旋转 支持内部构件和外部构件

名称 说明 类型 是否必须 示例
componentKeys 构件 key Array or string ['M123456'] or 'M123456'
rotateMatrix 旋转矩阵 矩阵实例 Matrix4
返回值说明 类型 示例

调用方式:

/**
 * 构件旋转
 * @function componentsRotate
 * @param {Array<string> | string} componentKeys
 * @param {Matrix4} rotateMatrix
 * @return {void}
 */
viewer3D.componentsRotate(["M123456"], matrix);

1.8.28. rotateMatrixFromAxes

根据旋转轴获取旋转矩阵 支持内部构件和外部构件

名称 说明 类型 是否必须 示例
startVector 旋转轴起始点 向量实例 Vector3 new THREE.Vector3(0, 0, 1)
endVector 旋转轴终点 向量实例 Vector3 new THREE.Vector3(0, 0, 2)
rad 旋转角度 数字 number 1
clockwise 旋转方向 布尔值 bool false
返回值说明 类型 示例
旋转矩阵 Matrix4

调用方式:

/**
 * 根据旋转轴获取旋转矩阵
 * @function rotateMatrixFromAxes
 * @param {Vector3} startVector
 * @param {Vector3} endVector
 * @param {number} rad
 * @param {boolean} clockwise
 * @return {Matrix4}
 */
let matrix = viewer3D.rotateMatrixFromAxes(new THREE.Vector3(0, 0, 1), new THREE.Vector3(0, 0, 2), 1, true);

1.8.29. componentCenterFromKey

获取一个构件的中心点 支持内部构件和外部构件

名称 说明 类型 是否必须 示例
key 构件 key 字符串 string 'M123456'
返回值说明 类型 示例
构件中心点 向量实例 Vector3 new THREE.Vector3(0, 0, 1)

调用方式:

/**
 * 根据构件key获取构件的中心点
 * @function componentCenterFromKey
 * @param {string} key
 * @return {Vector3}
 */
let center = viewer3D.componentCenterFromKey("M123456");

1.9. 模型级别相关操作方法

1.9.1. showModelsByKey

通过 key 将模型设置为可见

名称 说明 类型 是否必须 示例
key 模型 key 字符串 string 或数组 Array M123456 或 [M123456,M1234567]
返回值说明 类型 示例

调用方式:

/**
 * 将指定的模型设置为可见,通过key
 * @showModelsByKey
 * @param {array/string} key  模型key数组或模型key
 * @return {void}
 */
viewer3D.showModelsByKey("M123456");

1.9.2. hideModelsByKey

通过 key 将模型设置为不可见

名称 说明 类型 是否必须 示例
key 模型 key 字符串 string 或数组 Array M123456 或 [M123456,M1234567]
返回值说明 类型 示例

调用方式:

/**
 * 将指定的模型设置为不可见,通过key
 * @hideModelsByKey
 * @param {array/string} key  模型key数组或模型key
 * @return {void}
 */
viewer3D.hideModelsByKey("M123456");

1.9.3. hideAllModels

隐藏所有模型

名称 说明 类型 是否必须 示例
返回值说明 类型 示例

调用方式:

/**
 * 隐藏所有模型
 * @hideAllModels
 * @return {void}
 */
viewer3D.hideAllModels();

1.9.4. showAllModels

显示所有模型

名称 说明 类型 是否必须 示例
返回值说明 类型 示例

调用方式:

/**
 * 显示所有模型
 * @showAllModels
 * @return {void}
 */
viewer3D.showAllModels();

1.9.5. highlightModelsByKey

通过 key 将模型设置为高亮

名称 说明 类型 是否必须 示例
key 模型 key 字符串 string 或数组 Array M123456_123456 或 [M123456_123,M123456_456]
返回值说明 类型 示例

调用方式:

/**
 * 将指定的模型设置为高亮,通过key
 * @highlightModelsByKey
 * @param {array/string} key  模型key数组或模型key
 * @return {void}
 */
viewer3D.highlightModelsByKey("M123456_123456");

1.9.6. addHighlightModelsByKey

通过 key 将模型添加到高亮列表

名称 说明 类型 是否必须 示例
key 模型 key 字符串 string 或数组 Array M123456_123456 或 [M123456_123,M123456_456]
返回值说明 类型 示例

调用方式:

/**
 * 将指定的模型添加为高亮,通过key
 * @addHighlightModelsByKey
 * @param {array/string} key  模型key数组或模型key
 * @return {void}
 */
viewer3D.addHighlightModelsByKey("M123456_123456");

1.9.7. closeHighlightModelsByKey

通过 key 将模型设置为不高亮

名称 说明 类型 是否必须 示例
key 模型 key 字符串 string 或数组 Array M123456_123456 或 [M123456_123,M123456_456]
返回值说明 类型 示例

调用方式:

/**
 * 将指定的模型设置为不高亮,通过key
 * @closeHighlightModelsByKey
 * @param {array/string} key  模型key数组或模型key
 * @return {void}
 */
viewer3D.closeHighlightModelsByKey("M123456_123456");

1.9.8. getHighlightModelsKey

获取高亮的模型的 key

名称 说明 类型 是否必须 示例
返回值说明 类型 示例
模型的 key 数组 数组 Array ["M123"]

调用方式:

/**
 * 获取高亮的模型的key
 * @function getHighlightModelsKey
 * @return {Array} 构件的id数组
 */
viewer3D.getHighlightModelsKey();

1.9.9. clearModelHighlightList

清空模型高亮列表

名称 说明 类型 是否必须 示例
返回值说明 类型 示例

调用方式:

/**
 * 清空模型高亮列表
 * @function clearModelHighlightList
 * @return {void}
 */
viewer3D.clearModelHighlightList();

1.9.10. transparentModelsByKey

通过 key 将模型设置为透明

名称 说明 类型 是否必须 示例
key 模型 key 字符串 string 或数组 Array M123456 或 [M123456,M123456]
originColor 是否基于原始材质透明,true 为开启 boolean true
opacity 基于原始材质透明时,模型的透明度值 0-1,默认值 0.5 float 0.5

调用方式:

/**
 * 将指定的模型设置为透明,通过key
 * @transparentModelsByKey
 * @param {array/string} key  模型key数组或模型key
 * @param {boolean} [originColor]  是否基于原始材质透明,true为开启,false或者无参数则表示基于bos3d内部单色材质透明
 * @param {float} [opacity]  基于原始材质透明时,模型的透明度值0-1
 * @return {void}
 */
viewer3D.transparentModelsByKey("M123456", true, 0.3);

1.9.11. transparentOtherModelsByKey

将指定模型之外的其他模型设置为透明,通过 key

名称 说明 类型 是否必须 示例
key 模型 key 字符串 string 或数组 Array M123456 或 [M123456,M123456]
originColor 是否基于原始材质透明,true 为开启 boolean true
opacity 基于原始材质透明时,模型的透明度值 0-1,默认值 0.5 float 0.5
返回值说明 类型 示例

调用方式:

/**
 * 将指定模型之外的其他模型设置为透明,通过key
 * @transparentOtherModelsByKey
 * @param {array/string} key  模型key数组或模型key
 * @param {boolean} [originColor]   是否基于原始材质透明,true为开启,false或者无参数则表示基于bos3d内部单色材质透明
 * @param {float} [opacity]  基于原始材质透明时,模型的透明度值0-1
 * @return {void}
 */
viewer3D.transparentOtherModelsByKey("M123456_123456");

1.9.12. transparentAllModels

透明所有模型

名称 说明 类型 是否必须 示例
originColor 是否基于原始材质透明,true 为开启 boolean true
opacity 基于原始材质透明时,模型的透明度值 0-1,默认值 0.5 float 0.5
返回值说明 类型 示例

调用方式:

/**
 * 透明所有模型
 * @function transparentAllModels
 * @param {boolean} [originColor]   是否基于原始材质透明,true为开启,false或者无参数则表示基于bos3d内部单色材质透明
 * @param {float} [opacity]  基于原始材质透明时,模型的透明度值0-1
 * @return {void}
 */
viewer3D.transparentAllModels();

1.9.13. closeTransparentModelsByKey

将指定的模型的透明度设置为原始状态,通过 key

名称 说明 类型 是否必须 示例
key 模型 key 字符串 string 或数组 Array M123456_123456 或 [M123456_123,M123456_456]
返回值说明 类型 示例

调用方式:

/**
 * 将指定的模型的透明度设置为原始状态,通过key
 * @function  closeTransparentModelsByKey
 * @param {array/string} key  模型key数组或模型key
 * @return {void}
 */
viewer3D.closeTransparentModelsByKey("M123456_123456");

1.9.14. clearModelTransparentList

清理透明模型列表

名称 说明 类型 是否必须 示例
返回值说明 类型 示例

调用方式:

/**
 * 清理透明模型列表
 * @function clearModelTransparentList
 * @return {void}
 */
viewer3D.clearModelTransparentList();

1.9.15. colorfulModelsByKey

通过 key 为模型设置颜色

名称 说明 类型 是否必须 示例
key 模型 key 字符串 string 或数组 Array M123456_123456 或 [M123456_123,M123456_456]
color 颜色 数字 number 值域(0x000000-0xffffff) 0x00ff00
opacity 不透明度 数字 number 值域(0-1,要求两位小数的精度) 0.50
返回值说明 类型 示例

调用方式:

/**
 * 将指定的模型设置为变色,通过key
 * @colorfulModelsByKey
 * @param {array/string} key 模型key数组或模型key
 * @param {number}  color  要设置的颜色,范围 0x000000-0xFFFFFF  16进制
 * @param {number} opacity  要设置的不透明度(默认为1),范围 0-1  10进制
 * @return {void}
 */
viewer3D.colorfulModelsByKey("M123456_123456", 0x00ff00, 1);

1.9.16. closeColorfulModelsByKey

通过 key 将指定的模型的颜色设置为原始状态

名称 说明 类型 是否必须 示例
key 模型 key 字符串 string 或数组 Array M123456 或 [M123456,M123456]
返回值说明 类型 示例

调用方式:

/**
 * 将指定的模型取消变色,通过Key
 * @closeColorfulModelsByKey
 * @param {array/string} key 模型key数组或模型key
 * @return {void}
 */
viewer3D.closeColorfulModelsByKey("M123456");

1.9.17. clearModelColorfulList

取消所有模型的变色

名称 说明 类型 是否必须 示例
返回值说明 类型 示例

调用方式:

/**
 * 取消所有模型的变色
 * @clearModelColorfulList
 * @return {void}
 */
viewer3D.clearModelColorfulList();

1.9.18. isolateModelsByKey

通过模型 key 将指定的模型隔离,即仅显示隔离的模型

名称 说明 类型 是否必须 示例
key 模型 key 字符串 string 或数组 Array M123456_123456 或 [M123456_123,M123456_456]
state 模型状态 true 为隐藏,false 为略微可见,默认 true 布尔值 boolean true
返回值说明 类型 示例

调用方式:

/**
 * 将指定的模型隔离,通过key
 * @isolateModelsByKey
 * @param {array/string} key 模型key数组或模型key
 * @param {boolean} state  模型状态,true为隐藏,false为略微可见,默认true
 * @return {void}
 */
viewer3D.isolateModelsByKey("M123456_123456", true);

1.9.19. closeIsolateModelsByKey

将指定的模型从隔离列表中移除

名称 说明 类型 是否必须 示例
key 模型 key 字符串 string 或数组 Array M123456_123456 或 [M123456_123,M123456_456]
返回值说明 类型 示例

调用方式:

/**
 * 将指定的模型从隔离列表中移除,通过key
 * @closeIsolateModelsByKey
 * @param {array/string}  key 模型key数组或模型key
 * @return {void}
 */
viewer3D.closeIsolateModelsByKey("M123456_123456");

1.9.20. clearModelIsolation

取消所有模型的隔离

名称 说明 类型 是否必须 示例
返回值说明 类型 示例

调用方式:

/**
 * 取消所有模型隔离
 * @clearModelIsolation
 * @return {void}
 */
viewer3D.clearModelIsolation();

1.9.21. disableModelsSelectionByKey

将指定的模型设置为不可选中

名称 说明 类型 是否必须 示例
key 模型 key 字符串 string 或数组 Array M123456 或 [M123456,M12345]
返回值说明 类型 示例

调用方式:

/**
 * 将指定的模型设置为不可选中
 * @function disableModelsSelectionByKey
 * @param {array/string}  key 模型key数组或模型key
 * @return {void}
 */
viewer3D.disableModelsSelectionByKey("M123456");

1.9.22. enableModelsSelectionByKey

将指定的模型设置为可选中

名称 说明 类型 是否必须 示例
key 模型 key 字符串 string 或数组 Array M123456 或 [M123456,M12345]
返回值说明 类型 示例

调用方式:

/**
 * 将指定的模型设置为可选中
 * @function enableModelsSelectionByKey
 * @param {array/string}  key 模型key数组或模型key
 * @return {void}
 */
viewer3D.enableModelsSelectionByKey("M123456");

1.9.23. setModelMatrix

设置指定的模型的矩阵,该操作会覆盖原始数据,请谨慎操作

名称 说明 类型 是否必须 示例
modelKey 模型 key 字符串 string "M123456"
matrix 4*4 转换矩阵 对象 Matrix4 new THREE.Matrix4()
返回值说明 类型 示例

调用方式:

/**
 * 设置指定的模型的矩阵,该操作会覆盖原始数据,请谨慎操作
 * @setModelMatrix
 * @param {string}  modelKey 模型key
 * @param {THREE.Matrix4}  matrix 4*4转换矩阵
 * @return {void}
 */
viewer3D.setModelMatrix("M123456", new THREE.Matrix4());

demo 示例

示例名称 示例地址
设置模型位置 去体验

1.9.24. applyModelMatrix

应用指定的模型的矩阵

名称 说明 类型 是否必须 示例
modelKey 模型 key 字符串 string "M123456"
matrix 4*4 转换矩阵 对象 Matrix4 new THREE.Matrix4()
返回值说明 类型 示例

调用方式:

/**
 * 应用指定的模型的矩阵(当前模型矩阵乘参数矩阵)
 * @applyModelMatrix
 * @param {string}  modelKey 模型key
 * @param {THREE.Matrix4}  matrix 4*4转换矩阵
 * @return {void}
 */
viewer3D.applyModelMatrix("M123456", new THREE.Matrix4());

1.9.25. getModelMatrix

获取指定的模型的矩阵的拷贝

名称 说明 类型 是否必须 示例
modelKey 模型 key 字符串 string "M123456"
返回值说明 类型 示例
4*4 转换矩阵 对象 Matrix4 new THREE.Matrix4()

调用方式:

/**
 * 获取指定的模型的矩阵的拷贝
 * @getModelMatrix
 * @param {string}  modelKey 模型key
 * @return {THREE.Matrix4} 4*4转换矩阵
 */
var matrix = viewer3D.getModelMatrix("M123456");

1.9.26. setModelMatrixFromTransform

通过坐标,旋转,缩放变换参数设置模型矩阵,该操作会覆盖模型的原始数据

名称 说明 类型 是否必须 示例
modelKey 模型 key 字符串 string "M123456"
transform 模型变换的坐标参数 Object {}
transform.position 保存变换结果的对象 THREE.Vector3 new THREE.Vector3()
transform.quaternion 模型变换的旋转参数 THREE.Quaternion new THREE.Quaternion()
transform.scale 模型变换的缩放参数 THREE.Vector3 new THREE.Vector3(1, 1, 1)

调用方式:

let transformObject = {
    position: new THREE.Vector3(10, 10, 10),
    quaternion: new THREE.Quaternion(),
    scale: new THREE.Vector3(1, 1, 1),
};
viewer3D.setModelMatrixFromTransform("123123", transformObject);

1.9.27. getTransformByModelKey

根据模型 key,获取模型的变换参数,即坐标,旋转,缩放值

名称 说明 类型 是否必须 示例
modelKey 模型 key 字符串 string "M123456"
transform 保存结果的对象 Object {}
transform.position 保存坐标结果的对象 THREE.Vector3 new THREE.Vector3()
transform.quaternion 保存旋转结果的对象 THREE.Quaternion new THREE.Quaternion()
transform.scale 保存缩放结果的对象 THREE.Vector3 new THREE.Vector3(1, 1, 1)

调用方式:

//创建保存结果的对象
let transformObject = {
    position: new THREE.Vector3(),
    quaternion: new THREE.Quaternion(),
    scale: new THREE.Vector3(1, 1, 1),
};
//模型的坐标,旋转,缩放值会报存在transformObject对象中
viewer3D.getTransformByModelKey("123123", transformObject);

1.9.28. overturnYAndZaxis

基于原点翻转模型的 Y 轴和 Z 轴(针对建模时 Y 轴向上的模型)

名称 说明 类型 是否必须 示例
modelKey 模型 key 字符串 string "M123456"
返回值说明 类型 示例

调用方式:

/**
 * 基于原点翻转模型的Y轴和Z轴(针对建模时Y轴向上的模型)
 * @overturnYAndZaxis
 * @param {string}  modelKey 模型key
 * @return {void}
 */
viewer3D.overturnYAndZaxis("M123456");

1.9.29. translateModel

整体移动模型,会出现辅助箭头

名称 说明 类型 是否必须 示例
modelKey 模型 key 字符串 string "M123456"
返回值说明 类型 示例

调用方式:

/**
 * 整体移动模型
 * @param {string} modelKey 模型key
 * @return {void}
 */
viewer3D.translateModel("M123456");

1.9.30. rotateModel

整体旋转模型,会出现辅助箭头

名称 说明 类型 是否必须 示例
modelKey 模型 key 字符串 string "M123456"
返回值说明 类型 示例

调用方式:

/**
 * 整体旋转模型
 * @param {string} modelKey 模型key
 * @return {void}
 */
viewer3D.rotateModel("M123456");

1.10. 离散(爆炸、分解)相关方法

1.10.1. modelsExplosion

通过 key 将指定的模型离散(爆炸)

名称 说明 类型 是否必须 示例
[options] 参数对象 对象 object {modelKey:["123"],coefficientX: 1,coefficientY: 1,coefficientZ: 5}
[options.modelKey] 模型 key 字符串 string 或数组 Arrayy M123456_123456 或 [M123456_123,M123456_456]
[options.coefficientX] x 轴上的离散系数 数字 number 否(默认为 1) 1
[options.coefficientY] y 轴上的离散系数 数字 number 否(默认为 1) 1
[options.coefficientZ] z 轴上的离散系数 数字 number 否(默认为 1) 1
[options.center] 模型离散的中心 数组 Array 否(默认为所有场景的包围盒中心) [100,220,300]
返回值说明 类型 示例

demo 示例

示例名称 示例地址
模型爆炸 去体验

调用方式:

/**
 * 模型离散
 * @function modelsExplosion
 * @param {object} [options] 参数对象
 * @param {array} [options.modelKey] 要要离散的模型key数组或模型key
 * @param {number} [options.coefficientX] x轴上的离散系数,新的x轴数值为模型中构件到center的距离乘系数。默认系数为1,即保持原始位置不变
 * @param {number} [options.coefficientY] y轴上的离散系数,新的y轴数值为模型中构件到center的距离乘系数。默认系数为1,即保持原始位置不变
 * @param {number} [options.coefficientZ] z轴上的离散系数,新的z轴数值为模型中构件到center的距离乘系数。默认系数为1,即保持原始位置不变
 * @param {array} [options.center] 模型离散的中心 默认为所有场景的包围盒中心
 * @return {void}
 */
viewer3D.modelsExplosion({
    modelKey: ["123"],
    coefficientX: 1,
    coefficientY: 1,
    coefficientZ: 5,
});

1.10.2. closeModelsExplosion

通过 key 将指定的模型内所有构件的位置复原

名称 说明 类型 是否必须 示例
key 模型 key 字符串 string 或数组 Array M123456_123456 或 [M123456_123,M123456_456]
返回值说明 类型 示例

调用方式:

/**
 * 关闭构件离散
 * @function closeModelsExplosion
 * @param {array/string}  keys 模型key或模型key数组
 * @return {void}
 */
viewer3D.closeModelsExplosion("M123456_123456");

1.10.3. componentsExplosion

通过 key 将指定的构件离散(爆炸)

名称 说明 类型 是否必须 示例
[options] 参数对象 对象 object {componentKey:["123"],coefficientX: 1,coefficientY: 1,coefficientZ: 5}
[options.componentKey] 构件 key 字符串 string 或数组 Arrayy M123456_123456 或 [M123456_123,M123456_456]
[options.coefficientX] x 轴上的离散系数 数字 number 否(默认为 1) 1
[options.coefficientY] y 轴上的离散系数 数字 number 否(默认为 1) 1
[options.coefficientZ] z 轴上的离散系数 数字 number 否(默认为 1) 1
[options.offsetX] x 轴上的偏移距离 数字 number 否(默认为 0) 0
[options.offsetY] y 轴上的偏移距离 数字 number 否(默认为 0) 0
[options.offsetZ] z 轴上的偏移距离 数字 number 否(默认为 0) 0
[options.center] 模型离散的中心 数组 Array 否(默认为所有场景的包围盒中心) [100,220,300]
返回值说明 类型 示例

调用方式:

/**
 * 构件离散
 * @function componentsExplosion
 * @param {object} [options] 参数对象
 * @param {number} [options.coefficientX] x轴上的离散系数,新的x轴数值为模型中构件到center的距离乘系数+偏移。默认系数为1,即保持原始位置不变
 * @param {number} [options.coefficientY] y轴上的离散系数,新的y轴数值为模型中构件到center的距离乘系数+偏移。默认系数为1,即保持原始位置不变
 * @param {number} [options.coefficientZ] z轴上的离散系数,新的z轴数值为模型中构件到center的距离乘系数+偏移。默认系数为1,即保持原始位置不变
 * @param {number} [options.offsetX] x轴上的偏移距离,新的x轴数值为模型中构件到center的距离乘系数+偏移。默认值为0,即保持原始位置不变
 * @param {number} [options.offsetY] y轴上的偏移距离,新的y轴数值为模型中构件到center的距离乘系数+偏移。默认值为0,即保持原始位置不变
 * @param {number} [options.offsetZ] z轴上的偏移距离,新的z轴数值为模型中构件到center的距离乘系数+偏移。默认值为0,即保持原始位置不变
 * @param {array} [options.center] 模型离散的中心 默认为所有场景的包围盒中心
 * @return {void}
 */
viewer3D.componentsExplosion({
    componentKey: ["123"],
    coefficientX: 1,
    coefficientY: 1,
    coefficientZ: 5,
});

1.10.4. closeComponentsExplosion

通过 key 将指定的构件的位置复原

名称 说明 类型 是否必须 示例
key 构件 key 字符串 string 或数组 Array M123456_123456 或 [M123456_123,M123456_456]
返回值说明 类型 示例

调用方式:

/**
 * 关闭构件离散
 * @function closeComponentsExplosion
 * @param {array/string}  keys 构件key数组或构件key
 * @return {void}
 */
viewer3D.closeComponentsExplosion("M123456_123456");

1.11. 相机、动画相关方法

1.11.1. setAnimatorDuration

设置 flyto、adaptiveSizeByKey、zoomTo 等方法的动画持续时间,这个值是全局的,会影响所有动画过程

参数名称 说明 类型 是否必须 示例
duration 动画持续时间 整型数字 Number 1000
返回值说明 类型 示例
执行是否成功 布尔值 Boolean true

调用方式:

/**
 * 设置flyto、adaptiveSizeByKey、zoomTo等方法的动画持续时间,这个值是全局的,会影响所有动画过程
 * @function setAnimatorDuration
 * @param {Number} duration 动画持续时间,单位毫秒 默认800ms
 * @return {Boolean} 执行是否成功
 */
viewer3D.setAnimatorDuration(1000);

1.11.2. zoomToBox

将视图缩放到指定包围盒大小

名称 说明 类型 是否必须 示例
box 包围盒 对象 THREE.Box3 {min:{x:10,y:100,z:100},max:{x:20,y:200,z:200}}
margin 包围盒缩放比例 数字 number 0.5
ratio 相机与中心距离的拉伸比例 数字 number 0.5

调用方式:

/**
 * 缩放到指定包围包围盒大小
 * @function zoomToBox
 * @param {THREE.Box3} box - 包围盒(世界坐标系)
 * @param {Number} margin - 包围盒缩放比例, 缺省值: 0, 当margin > 0 模型缩小(包围盒变大),当margin < 0 模型放大(包围盒变小)
 * @param {Number} ratio - 相机与中心距离的拉伸比例, 缺省值: 1
 */
var box = viewer3D.getBoxByComponentsKey(["M123456_123456", "M123456_123457"]); //获取包围盒
viewer3D.zoomToBox(box, 1, 1);

1.11.3. zoomIn

放大视图

名称 说明 类型 是否必须 示例
factor 缩小因子 正数 数字 number 0.5
cx 缩放点的 x 轴屏幕坐标 正数 数字 number 100
cy 缩放点的 y 轴屏幕坐标 正数 数字 number 200

调用方式:

/**
 * 放大视图
 * @function zoomIn
 * @param {Number} factor - 缩小因子 正数
 * @param {Number} cx - 缩放点的x轴屏幕坐标 正数
 * @param {Number} cy - 缩放点的y轴屏幕坐标 正数
 * @return {void}
 */
viewer3D.zoomIn(0.5, 100, 100);

1.11.4. zoomOut

缩小视图

名称 说明 类型 是否必须 示例
factor 缩小因子 正数 数字 number 0.5
cx 缩放点的 x 轴屏幕坐标 正数 数字 number 100
cy 缩放点的 y 轴屏幕坐标 正数 数字 number 200

调用方式:

/**
 * 缩小视图
 * @function zoomOut
 * @param {Number} factor - 放大因子 正数
 * @param {Number} cx - 缩放点的x轴屏幕坐标 正数
 * @param {Number} cy - 缩放点的y轴屏幕坐标 正数
 * @return {void}
 */
viewer3D.zoomOut(0.5, 100, 100);

1.11.5. flyToStandardView

飞跃到预设的标准视角

名称 说明 类型 是否必须 示例
stdView 视角 数字 number BOS3D.EnumStandardView.Top
margin 包围盒缩放比例, 默认值: 0, margin > 0 模型缩小(包围盒变大),margin < 0 模型放大(包围盒变小) 数字 number 2
callbackProcess 过程中回调函数 函数 function function(){}
callbackFinished 完成回调函数 函数 function function(){}

调用方式:

/**
 * 飞跃到预设的标准视角
 * @function flyToStandardView
 * @param {Number} stdView - 视角 枚举类型 {@link EnumStandardView.Top}
 * @param {Number} margin - 包围盒缩放比例, 默认值: 0, margin > 0 模型缩小(包围盒变大),margin < 0 模型放大(包围盒变小)
 * @param {function} callbackProcess - 过程中回调函数
 * @param {function} callbackFinished - 完成回调函数
 * @return {void}
 */
viewer3D.flyToStandardView(
    BOS3D.EnumStandardView.Top,
    0.5,
    function () {},
    function () {}
);

1.11.6. setStandardViewWithBox

根据指定视角及包围盒进行飞跃和缩放

名称 说明 类型 是否必须 示例
stdView 视角 数字 number BOS3D.EnumStandardView.Top
box 包围盒 对象 THREE.Box3 new BOS3D.THREE.Box3();
margin 包围盒缩放比例, 默认值: 0, margin > 0 模型缩小(包围盒变大),margin < 0 模型放大(包围盒变小) 数字 number 2
ratio 相机与中心距离的拉伸比例 数字 number 0.5

调用方式:

/**
 * 根据指定视角及包围盒进行飞跃和缩放
 * @function setStandardViewWithBox
 * @param {Number} stdView - 视角 枚举类型 {@link EnumStandardView.Top}
 * @param {THREE.Box3} box - 包围盒
 * @param {Number} margin - 包围盒缩放比例, 默认值: 0.0, margin > 0 模型缩小(包围盒变大),margin < 0 模型放大(包围盒变小)
 * @param {Number} ratio - 相机与中心距离的拉伸比例, 默认值: 1.0
 * @return {void}
 */
var box = new BOS3D.THREE.Box3();
viewer3D.setStandardViewWithBox(BOS3D.EnumStandardView.Top, box, 1, 1);

1.11.7. adaptiveSize

将视图缩放到选中构件的大小

名称 说明 类型 是否必须 示例
返回值说明 类型 示例

调用方式:

/**
 * 将视图缩放到选中构件的大小
 * @function adaptiveSize
 * @return {void}
 */
viewer3D.adaptiveSize();

1.11.8. adaptiveSizeByKey

将视图缩放到指定构件的大小

名称 说明 类型 是否必须 示例
key 构件 key 字符串 string 或数组 Array M123456_123456 或 [M123456_123,M123456_456]
返回值说明 类型 示例

调用方式:

/**
 * 聚焦到指定构件的大小
 * @function adaptiveSizeByKey
 * @param {array/string} key  构件key数组或构件key
 * @return {void}
 */
viewer3D.adaptiveSizeByKey("M123456_123456");

demo 示例

示例名称 示例地址
聚焦构件 去体验

1.11.9. getBoxByComponentsKey

通过构件 key 获取指定构件组的世界包围盒

参数名称 说明 类型 是否必须 示例
key 构件key 字符串 string 或 数组 Array "M123456_123" 或[M123456_123,M123456_456]
includeInvisible 是否包含不可见构件的包围盒,默认true boolean true
返回值说明 类型 示例
包围盒 对象 THREE.Box3 {min:{x:10,y:100,z:100},max:{x:20,y:200,z:200}}

调用方式:

/**
 * 获取指定构件组的世界包围盒
 * @function getBoxByComponentsKey
 * @param key {string/array} 构件key或构件key数组
 * @param {boolean} includeInvisible 是否包含不可见构件的包围盒,默认false
 * @return {THREE.Box3} box - 包围盒(世界坐标系)
 */
var box = viewer3D.getBoxByComponentsKey(["M123456_123456", "M123456_123457"], false);

demo 示例

示例名称 示例地址
聚焦构件(包围盒) 去体验

1.11.10. flyTo

从相机当前位置飞跃到指定的相机姿态,内部调用

参数名称 说明 类型 是否必须 示例
[cameraInfo] 相机姿态对象 对象 object {position:{x:1,y:2,z:3},target:{x:1,y:2,z:3},up:{x:0,y:0,z:1}}
[cameraInfo.position] 相机姿态对象- 相机位置 对象 object {x:1,y:2,z:3}
[cameraInfo.target] 相机姿态对象-相机焦点 对象 object {x:1,y:2,z:3}
[cameraInfo.up] 相机姿态对象-相机正方向 对象 object {x:0,y:0,z:1}
callback 回调函数 函数 function function(){}
返回值说明 类型 示例

调用方式:

/**
 * 从相机当前位置飞跃到指定的相机姿态
 * @function flyTo
 * @param {object}[cameraInfo] 相机姿态对象
 * @param {object}[cameraInfo.position] - 相机位置
 * @param {object}[cameraInfo.target] - 相机焦点
 * @param {object}[cameraInfo.up] - 相机正方向
 * @param {function} callback - 动画完成之后的回调函数
 */
viewer3D.flyTo(
    {
        position: {
            x: 1,
            y: 2,
            z: 3,
        },
        target: {
            x: 1,
            y: 2,
            z: 3,
        },
        up: {
            x: 0,
            y: 0,
            z: 1,
        },
    },
    function () {}
);

demo 示例

示例名称 示例地址
相机视角飞跃 去体验

1.11.11. linearFlyTo

从相机当前位置飞跃到指定的相机姿态(线性差值)

参数名称 说明 类型 是否必须 示例
[cameraInfo] 相机姿态对象 对象 object {position:{x:1,y:2,z:3},target:{x:1,y:2,z:3},up:{x:0,y:0,z:1}}
[cameraInfo.position] 相机姿态对象- 相机位置 对象 object {x:1,y:2,z:3}
[cameraInfo.target] 相机姿态对象-相机焦点 对象 object {x:1,y:2,z:3}
[cameraInfo.up] 相机姿态对象-相机正方向 对象 object {x:0,y:0,z:1}
callback 回调函数 函数 function function(){}
返回值说明 类型 示例

调用方式:

/**
 * 从相机当前位置飞跃到指定的相机姿态
 * @function linearFlyTo
 * @param {object}[cameraInfo] 相机姿态对象
 * @param {object}[cameraInfo.position] - 相机位置
 * @param {object}[cameraInfo.target] - 相机焦点
 * @param {object}[cameraInfo.up] - 相机正方向
 * @param {function} callback - 动画完成之后的回调函数
 */
viewer3D.linearFlyTo(
    {
        position: {
            x: 1,
            y: 2,
            z: 3,
        },
        target: {
            x: 1,
            y: 2,
            z: 3,
        },
        up: {
            x: 0,
            y: 0,
            z: 1,
        },
    },
    function () {}
);

1.11.12. slerpFlyTo

从相机当前位置飞跃到指定的相机姿态(球形差值)

参数名称 说明 类型 是否必须 示例
[cameraInfo] 相机姿态对象 对象 object {position:{x:1,y:2,z:3},target:{x:1,y:2,z:3},up:{x:0,y:0,z:1}}
[cameraInfo.position] 相机姿态对象- 相机位置 对象 object {x:1,y:2,z:3}
[cameraInfo.target] 相机姿态对象-相机焦点 对象 object {x:1,y:2,z:3}
[cameraInfo.up] 相机姿态对象-相机正方向 对象 object {x:0,y:0,z:1}
callback 回调函数 函数 function function(){}
返回值说明 类型 示例

调用方式:

/**
 * 从相机当前位置飞跃到指定的相机姿态(球形差值)
 * @function slerpFlyTo
 * @param {object}[cameraInfo] 相机姿态对象
 * @param {object}[cameraInfo.position] - 相机位置
 * @param {object}[cameraInfo.target] - 相机焦点
 * @param {object}[cameraInfo.up] - 相机正方向
 * @param {function} callback - 动画完成之后的回调函数
 */
viewer3D.slerpFlyTo(
    {
        position: {
            x: 1,
            y: 2,
            z: 3,
        },
        target: {
            x: 1,
            y: 2,
            z: 3,
        },
        up: {
            x: 0,
            y: 0,
            z: 1,
        },
    },
    function () {}
);

1.11.13. enabledCameraRotateOfVerticalPolarAngle

设置是否启用相机垂直方向的旋转极值,默认不开启

参数名称 说明 类型 是否必须 示例
enabled 是否启用控制 布尔值 boolean true
返回值说明 类型 示例

调用方式:

/**
 * 设置是否启用相机垂直方向的旋转极值
 * @function enabledCameraRotateOfVerticalPolarAngle
 * @param {boolean}enabled 是否开启极值控制
 **/
viewer3D.enabledCameraRotateOfVerticalPolarAngle(true);

1.11.14. lockAxisZ

锁定相机绕轴旋转范围,range 不填则为禁止绕该轴旋转

参数名称 说明 类型 是否必须 示例
isLock 是否锁定 bool true
range 相机在竖直方向转动时可变化的范围 数组 [Math.PI / 6, Math.PI / 3]
返回值说明 类型 示例

调用方式:

/**
 * 锁定相机绕轴旋转范围,range不填则为禁止绕该轴旋转
 * @param {Boolean} isLock - true 锁定, 否则 解锁
 * @param {Array} range 相机在竖直方向转动时可变化的范围,如[Math.PI / 6, Math.PI / 3]
 */
viewer3D.lockAxisZ(true, [Math.PI / 6, Math.PI / 3]);

demo 示例

示例名称 示例地址
锁定相机绕轴旋转范围 去体验

1.11.15. setMinPolarAngle

设置垂直方向可旋转的最小角度 (默认 0),该方法受 enabledCameraRotateOfVerticalPolarAngle 方法影响

参数名称 说明 类型 是否必须 示例
angle 角度(弧度制) 数字 number 值域(0-π) 3.13 或 Math.PI
返回值说明 类型 示例

调用方式:

/**
 * 设置垂直方向可旋转的最小角度
 * @function setMinPolarAngle
 * @param {number}angle 最小角度(弧度制)
 **/
viewer3D.setMinPolarAngle(Math.PI / 2);

1.11.16. setMaxPolarAngle

设置垂直方向可旋转的最大角度(默认 π),该方法受 enabledCameraRotateOfVerticalPolarAngle 方法影响

参数名称 说明 类型 是否必须 示例
angle 角度(弧度制) 数字 number 值域(0-π) 3.13 或 Math.PI
返回值说明 类型 示例

调用方式:

/**
 * 设置垂直方向可旋转的最大角度
 * @function setMaxPolarAngle
 * @param {number}angle 最大角度(弧度制)
 **/
viewer3D.setMaxPolarAngle(Math.PI / 2);

1.11.17. getMinPolarAngle

获取垂直方向可旋转的最小角度

参数名称 说明 类型 是否必须 示例
返回值说明 类型 示例
当前垂直方向可旋转的最小值(默认 0) 数字 number 1.5

调用方式:

/**
 * 获取垂直方向可旋转的最小角度
 * @function getMinPolarAngle
 * @return {number}最小角度(弧度制)
 **/
var angle = viewer3D.getMinPolarAngle();

1.11.18. getMaxPolarAngle

获取垂直方向可旋转的最大角度

参数名称 说明 类型 是否必须 示例
返回值说明 类型 示例
当前垂直方向可旋转的最大值(默认 π) 数字 number 1.5

调用方式:

/**
 * 获取垂直方向可旋转的最大角度
 * @function getMaxPolarAngle
 * @return {number}最大角度(弧度制)
 **/
var angle = viewer3D.getMaxPolarAngle();

1.11.19. enableRotate

是否允许用户旋转

参数名称 说明 类型 是否必须 示例
enabled 是否启用 布尔值 boolean true
返回值说明 类型 示例
当前是否允许旋转 布尔值 Boolean true

调用方式:

/**
 * 是否允许用户旋转
 * @function enableRotate
 * @param {Boolean} enable  true为允许,false为不允许
 * @return {Boolean} 当前是否允许旋转
 */
viewer3D.enableRotate(true);

demo 示例

示例名称 示例地址
允许/禁止构件旋转 去体验

1.11.20. enablePan

是否允许用户平移

参数名称 说明 类型 是否必须 示例
enabled 是否启用 布尔值 boolean true
返回值说明 类型 示例
当前是否允许平移 布尔值 Boolean true

调用方式:

/**
 * 是否允许用户平移
 * @function enablePan
 * @param {Boolean} enable  true为允许,false为不允许
 * @return {Boolean} 当前是否允许平移
 */
viewer3D.enablePan(true);

demo 示例

示例名称 示例地址
允许/禁止构件平移 去体验

1.11.21. enableZoom

是否允许用户缩放

参数名称 说明 类型 是否必须 示例
enabled 是否启用 布尔值 boolean true
返回值说明 类型 示例
当前是否允许缩放 布尔值 Boolean true

调用方式:

/**
 * 是否允许用户缩放
 * @function enableZoom
 * @param {Boolean} enable  true为允许,false为不允许
 * @return {Boolean} 当前是否允许缩放
 */
viewer3D.enableZoom(true);

demo 示例

示例名称 示例地址
允许/禁止构件缩放 去体验

1.11.22. setPointRotateMode

设置相机的绕点旋转模式

参数名称 说明 类型 是否必须 示例
mode 旋转模式 枚举类型 Enum BOS3D.RotatePivotMode.CENTER
返回值说明 类型 示例
当前的旋转点设置 数值 Number 0

调用方式:

/**
 * 设置相机的绕点旋转模式
 * @function setPointRotateMode
 * @param {Enum} mode  旋转模式,枚举类型,参见BOS3D.RotatePivotMode
 * @return {Number} 当前的旋转点设置
 */

viewer3D.setPointRotateMode(BOS3D.RotatePivotMode.CENTER);

1.11.23. setWalkSpeedRate

设置漫游速度速率

参数名称 说明 类型 是否必须 示例
rate 运动速度比例 Number 0.5
返回值说明 类型 示例

调用方式:

/**
 * 设置漫游速度速率
 * @function setWalkSpeedRate
 * @param {Number} rate  运动速度比例,0.5表示速度为原始的一半。2表示原始的两倍
 * @return {void}
 */

viewer3D.setWalkSpeedRate(0.5);

1.11.24. getWalkSpeedRate

获取漫游速度速率

名称 说明 类型 是否必须 示例
返回值说明 类型 示例
速度速率 数值 Number 1

调用方式:

/**
 * 获取漫游速度速率
 * @function getWalkSpeedRate
 * @return {Number} 速度速率
 */

viewer3D.getWalkSpeedRate();

1.11.25. rotateCamera

绕指定中心旋转相机

参数名称 说明 类型 是否必须 示例
rotationDelta 旋转的值 数组 Array 或 THREE.Vector2 对象 [100,100]或{x:100,y:100}
pivot 旋转的支点 数组 Array 或 THREE.Vector3 对象 [100,100,100]或{x:100,y:100,z:100}

调用方式:

/**
 *  旋转相机
 * @function rotateCamera
 * @param {THREE.Vector2|Array} rotationDelta - 旋转的值:屏幕坐标中的像素值
 * @param {THREE.Vector3|Array} pivot - 旋转的支点:三维空间向量,默认为场景中心点
 *  @return {void}
 */

viewer3D.rotateCamera([10, 0], [100, 100, 100]);

1.11.26. requestPointerLock

自由漫游进入沉浸模式,只有处在自由漫游模式才有效

参数名称 说明 类型 是否必须 示例
返回值说明 类型 示例

调用方式:

/**
 *  自由漫游进入沉浸模式
 * @function requestPointerLock
 *  @return {void}
 */
viewer3D.requestPointerLock();

1.12. 显示效果相关方法

1.12.1. enableLogarithmicDepthBuffer

设置是否允许启用对数深度缓冲区

参数名称 说明 类型 是否必须 示例
enabled 是否启用 布尔值 boolean true

调用方式:

/**
 * 设置是否允许启用对数深度缓冲区
 * @function enableLogarithmicDepthBuffer
 * @param{Boolean} enable - 是否启用
 * @return {void}
 */
viewer3D.enableLogarithmicDepthBuffer(true);

1.12.2. setDrawingStyle

设置构件绘制风格

参数名称 说明 类型 是否必须 示例
style 构件绘制风格 枚举类型 见 BOS3D.DrawingStyle BOS3D.DrawingStyle.BOARDLINE
返回值说明 类型 示例

调用方式:

/**
 * 设置构件绘制风格
 * @function setDrawingStyle
 * @param{Enumerator} style - 构件绘制风格 见常量 BOS3D.DrawingStyle {@link DrawingStyle}
 * @return {void}
 */
viewer3D.setDrawingStyle(BOS3D.DrawingStyle.BOARDLINE);

1.12.3. setExposure

设置曝光系数

参数名称 说明 类型 是否必须 示例
value 曝光值 值域 -1 到 1 。0 保持不变,大于 1 时变亮,小于 1 时变暗 数字 number 0.5
返回值说明 类型 示例

调用方式:

/**
 * 设置曝光系数
 * @function setExposure
 * @param{Number} value - 曝光值 值域 -1到1 。0保持不变,大于1时变亮,小于1时变暗
 * @return {void}
 */
viewer3D.setExposure(0.5);

1.12.4. getBoardlineColor

获取构件轮廓线颜色

参数名称 说明 类型 是否必须 示例
modelKey 模型 key 字符串 stringy 否 不传会获取第一个模型的数据 M123456
返回值说明 类型 示例
color 对象 BOS3D.Color

调用方式:

/**
 * 获取构件轮廓线颜色
 * @function getBoardlineColor
 * @param{String} modelKey - 模型key 不传会获取第一个模型的数据
 * @return {Color} color对象
 */
viewer3D.getBoardlineColor("M123");

1.12.5. setBoardlineColor

设置构件轮廓线颜色

参数名称 说明 类型 是否必须 示例
color 颜色对象 对象 Color new BOS3D.Color(1,1,1,1)
modelKey 模型 key 字符串 stringy 否 不传会设置所有模型 M123456
返回值说明 类型 示例

调用方式:

/**
 * 设置构件轮廓线颜色
 * @function setBoardlineColor
 * @param{Color} color - 颜色对象 见 BOS3D.Color对象 {@link Color}
 * @param{String} modelKey - 模型key 不传会设置所有模型
 * @return {void}
 */
viewer3D.setBoardlineColor(new BOS3D.Color(1, 1, 1, 1), "M123");

1.12.6. restoreBoardlineColor

重置构件轮廓线颜色

参数名称 说明 类型 是否必须 示例
modelKey 模型 key 字符串 stringy 否 不传会重置所有 M123456
返回值说明 类型 示例

调用方式:

/**
 * 重置构件轮廓线颜色
 * @function restoreBoardlineColor
 * @param{String} modelKey - 模型key 不传会重置所有
 * @return {void}
 */
viewer3D.restoreBoardlineColor("M123");

1.12.7. getSelectionBoardlineColor

获取选中线效果颜色

名称 说明 类型 是否必须 示例
返回值说明 类型 示例
color 对象 BOS3D.Color

调用方式:

/**
 * 获取选中线效果颜色
 * @function getSelectionBoardlineColor
 * @return {Color} color对象
 */
viewer3D.getSelectionBoardlineColor();

1.12.8. setSelectionBoardlineColor

设置选中线效果颜色

参数名称 说明 类型 是否必须 示例
color 颜色对象 对象 Color new BOS3D.Color(1,1,1,1)
返回值说明 类型 示例

调用方式:

/**
 * 设置选中线效果颜色
 * @function setSelectionBoardlineColor
 * @param{Color} color - 颜色对象 见 BOS3D.Color对象 {@link Color}
 * @return {void}
 */
viewer3D.setSelectionBoardlineColor(new BOS3D.Color(1, 1, 1, 1));

1.12.9. restoreSelectionBoardlineColor

重置选中线效果颜色

名称 说明 类型 是否必须 示例
返回值说明 类型 示例

调用方式:

/**
 * 重置选中线效果颜色
 * @function restoreSelectionBoardlineColor
 * @return {void}
 */
viewer3D.restoreSelectionBoardlineColor();

1.12.10. getSelectionColor

获取选中效果颜色

名称 说明 类型 是否必须 示例
返回值说明 类型 示例
color 对象 BOS3D.Color

调用方式:

/**
 * 获取选中效果颜色
 * @function getSelectionColor
 * @return {Color} color对象
 */
viewer3D.getSelectionColor();

1.12.11. setSelectionColor

设置构选中效果颜色

参数名称 说明 类型 是否必须 示例
color 颜色对象 对象 Color new BOS3D.Color(1,1,1,1)
返回值说明 类型 示例

调用方式:

/**
 * 设置构选中效果颜色
 * @function setSelectionColor
 * @param{Color} color - 颜色对象 见 BOS3D.Color对象 {@link Color}
 * @return {void}
 */
viewer3D.setSelectionColor(new BOS3D.Color(1, 1, 1, 1));

1.12.12. restoreSelectionColor

重置选中效果颜色

名称 说明 类型 是否必须 示例
返回值说明 类型 示例

调用方式:

/**
 * 重置选中效果颜色
 * @function restoreSelectionColor
 * @return {void}
 */
viewer3D.restoreSelectionColor();

1.12.13. setSkyBox

设置场景背景为天空盒

参数名称 说明 类型 是否必须 示例
src 图片路径数组或 base64 格式图片数组,如果不传参数,则清空天空盒 数组 Array [
"WebContent/img/skybox/left.jpg",
"WebContent/img/skybox/right.jpg",
"WebContent/img/skybox/back.jpg",
"WebContent/img/skybox/front.jpg",
"WebContent/img/skybox/up.jpg",
"WebContent/img/skybox/down.jpg"
]
onLoad 完成回调函数,无参 方法 function function(){}
onProgress 进度通知回调函数,无参 方法 function function(){}
onLoad 错误回调函数,参数为错误的 event 方法 function function(event){}
返回值说明 类型 示例

调用方式:

/**
 * 设置场景背景为天空盒
 * @function setSkyBox
 * @param{ Array} src - 图片路径,例如 [ "WebContent/img/skybox/left.jpg",
 "WebContent/img/skybox/right.jpg",
 "WebContent/img/skybox/back.jpg",
 "WebContent/img/skybox/front.jpg",
 "WebContent/img/skybox/up.jpg",
 "WebContent/img/skybox/down.jpg" ]  请按左、右、后、前、上、下的顺序排列图片,如果不传参数,则清空天空盒
 * @param {function} onLoad 完成回调函数
 * @param {function} onProgress 进度通知回调函数
 * @param {function} onError 错误回调函数
 * @return {void}
 */
viewer3D.setSkyBox([
    "WebContent/img/skybox/left.jpg",
    "WebContent/img/skybox/right.jpg",
    "WebContent/img/skybox/back.jpg",
    "WebContent/img/skybox/front.jpg",
    "WebContent/img/skybox/up.jpg",
    "WebContent/img/skybox/down.jpg",
]);

1.12.14. setFrozenMaterial

设置冻结的材质参数

参数名称 说明 类型 是否必须 示例
params 参数对象,传空对象则会恢复默认的材质 对象 Object {}
params.color 颜色对象 BOS3D.Color new BOS3D.Color()
params.opacity 不透明度,默认 0.2 Number 0.2
params.transparent 是否透明,默认 true Boolean true
params.side 面渲染方式,默认双面 Number THREE.DoubleSide
返回值说明 类型 示例

调用方式:

/**
 * 设置冻结的材质参数
 * @setFrozenMaterial
 * @param {Object} params  参数对象
 * @param {BOS3D.Color} [params.color]  颜色对象
 * @param {Number} [params.opacity]  不透明度,默认 0.2
 * @param {Boolean} [params.transparent]  是否透明,默认 true
 * @param {Number} [params.side]  面渲染方式,默认双面。THREE.DoubleSide 双面渲染,THREE.FrontSide 正面渲染,THREE.BackSide 背面渲染
 * @return {void}
 */
viewer3D.setFrozenMaterial({
    color: new BOS3D.Color(),
    opacity: 0.5,
    transparent: true,
    side: THREE.DoubleSide,
});

1.12.15. useMapAlpha

使用 Map 中包含的透明

参数名称 说明 类型 是否必须 示例
modelKey 模型 key 字符串 string "M123"
返回值说明 类型 示例

调用方式:

/**
 * 使用Map中包含的透明
 * @function useMapAlpha
 * @param {string} modelKey 模型key
 * @return {void}
 */
viewer3D.useMapAlpha("M123");

1.12.16. enableGlowEffect

是否开启发光效果

参数名称 说明 类型 是否必须 示例
isEnabled 是否开启发光效果 布尔值 Boolean true
返回值说明 类型 示例

调用方式:

/**
 * 是否开启发光效果
 * @function .enableGlowEffect
 * @param {Boolean} isEnabled 是否开启发光效果,true为开启,false为关闭
 * @return {void}
 */
viewer3D.enableGlowEffect(true);

1.12.17. setGlowEffectByKey

设置构件、外部构件的发光效果

参数名称 说明 类型 是否必须 示例
modelKey 模型key 字符串 string "M123"
ids 构件key 数组 Array ["M123456_123,M123456_456"]
opt 发光效果参数 Object {}
opt.type 发光效果类型,“body”为整体发光,“outline”为轮廓线发光 String “body”
opt.color 发光效果颜色 BOS3D.Color new BOS3D.Color()
opt.intensity 发光强度 Number 0.3
opt.spread 扩散程度 Number 3
opt.threshold 产生辉光的临界值 Number 1
opt.blurDirectionFactor 模糊距离的系数 Number 1
opt.useDiffuse 是否使用构件本身的颜色,轮廓线发光类型时,该参数无效 Boolean true
返回值说明 类型 示例

调用方式:

/**
 * 设置构件、外部构件的发光效果,例如:外部构件管理器的key为"ExternalComponent"
 * @function setGlowEffectByKey
 * @param {String} modelKey 构件、外部所属的模型key
 * @param {Array} ids 构件、外部构件key列表
 * @param {Object} [opt] 发光效果参数
 * @param {String} opt.type 发光效果类型,“body”为整体发光,“outline”为轮廓线发光
 * @param {BOS3D.Color} opt.color 发光效果颜色
 * @param {Number} opt.intensity 发光强度,取值范围[0,5],默认值为0.3
 * @param {Number} opt.spread 扩散程度,取值范围[0,5],默认值为3
 * @param {Number} opt.threshold 产生辉光的临界值,取值范围为[0, 1],默认值为0
 * @param {Number} opt.blurDirectionFactor 模糊距离的系数,取值范围为{0, 3],默认值为1
 * @param {Boolean} opt.useDiffuse 是否使用构件本身的颜色,默认false。轮廓线发光类型时,该参数无效
 * @return {void}
 */
viewer3D.setGlowEffectByKey("M123", ["M123_4566"], {
    type: "body",
    color: new BOS3D.Color(88, 33, 255, 1),
    intensity: 3,
    spread: 5,
    threshold: 0,
    useDiffuse: false,
});

1.12.18. removeGlowEffectByKey

移除构件、外部构件的发光效果

参数名称 说明 类型 是否必须 示例
modelKey 模型 key 字符串 string "M123"
ids 构件 key 数组 Array ["M123456_123,M123456_456"]
返回值说明 类型 示例

调用方式:

/**
 * 移除构件、外部构件的发光效果
 * @function removeGlowEffectByKey
 * @param {String} modelKey 构件、外部所属的模型key
 * @param {Array} ids 构件、外部构件key列表
 * @return {void}
 */
viewer3D.removeGlowEffectByKey("M123", ["M123_4566"]);

1.12.19. enableBakeEffect

是否开启烘焙效果,GlobalData.usePack = true 时有效

参数名称 说明 类型 是否必须 示例
modelKey 模型 key 字符串 string "M123"
isEnabled 是否开启发光效果 布尔值 Boolean true
返回值说明 类型 示例

调用方式:

/**
 * 是否开启烘焙效果
 * @function enableBakeEffect
 * @param {string} modelKey 模型key
 * @param {Boolean} isEnabled 是否开启发光效果,true为开启,false为关闭
 * @return {void}
 */
viewer3D.enableBakeEffect("M123", true);

1.12.20. setBakeMap

设置烘焙效果的 url(启用烘焙时生效)

参数名称 说明 类型 是否必须 示例
modelKey 模型 key 字符串 string "M123"
url 贴图文件路径 字符串 string "123.hdr"
onLoad 设置完成的回调 函数 function function () {}
onError 发生错误的回调 函数 function function () {}
返回值说明 类型 示例

调用方式:

/**
 * 设置烘焙效果的url
 * @function setBakeMap
 * @param {string} modelKey 模型key
 * @param {string} url 贴图文件路径
 * @param {function} onLoad 设置完成的回调
 * @param {function} onError 发生错误的回调
 * @return {void}
 */
viewer3D.setBakeMap(
    "M123",
    "123.hdr",
    function () {},
    function () {}
);

1.12.21. setBakeMapIntensity

设置烘焙(光照贴图)效果强度,(启用烘焙时生效)

参数名称 说明 类型 是否必须 示例
modelKey 模型 key 字符串 string "M123"
intensity 强度 数值越大强度越高,一般范围[0-5] 数字 number 0.5
返回值说明 类型 示例

调用方式:

/**
 * 设置烘焙(光照贴图)效果强度
 * @function setBakeMapIntensity
 * @param {string} modelKey 模型key
 * @param {number} intensity 强度,浮点型,数值越大强度越高,一般范围[0-5]
 * @return {void}
 */
viewer3D.setBakeMapIntensity("M123", 0.5);

1.13. 盒式剖切相关

1.13.1. enableSectionBox

启用盒式剖切

名称 说明 类型 是否必须 示例
返回值说明 类型 示例

调用方式:

/**
 * 启用盒式剖切
 * @function enableSectionBox
 * @return {void}
 */
viewer3D.enableSectionBox();

demo 示例

示例名称 示例地址
启用盒式剖切进度模拟 去体验

1.13.2. disableSectionBox

禁用盒式剖切

名称 说明 类型 是否必须 示例
返回值说明 类型 示例

调用方式:

/**
 * 禁用盒式剖切
 * @function disableSectionBox
 * @return {void}
 */
viewer3D.disableSectionBox();

1.13.3. resetSectionBox

重置盒式剖切到初始状态

名称 说明 类型 是否必须 示例
返回值说明 类型 示例

调用方式:

/**
 * 重置盒式剖切到初始状态
 * @function resetSectionBox
 * @return {void}
 */
viewer3D.resetSectionBox();

1.13.4. showSectionBox

显示盒式剖切的剖切盒

名称 说明 类型 是否必须 示例
返回值说明 类型 示例

调用方式:

/**
 * 显示盒式剖切的剖切盒
 * @function showSectionBox
 * @return {void}
 */
viewer3D.showSectionBox();

1.13.5. hideSectionBox

隐藏盒式剖切的剖切盒

名称 说明 类型 是否必须 示例
返回值说明 类型 示例

调用方式:

/**
 * 隐藏盒式剖切的剖切盒
 * @function hideSectionBox
 * @return {void}
 */
viewer3D.hideSectionBox();

1.13.6. setSectionBox

启用盒式剖切

参数名称 说明 类型 是否必须 示例
box BOS3D.Box3 对象 BOS3D.Box3 new THREE.Box3(new THREE.Vector3(-1000,-2000,300),new THREE.Vector3(1000,2000,2000))
返回值说明 类型 示例

调用方式:

/**
 * 设置盒式剖切的剖切盒大小
 * @function setSectionBox
 * @param {BOS3D.Box3} box 三维空间包围盒
 * @return {void}
 */
var box = new THREE.Box3(new THREE.Vector3(-1000, -2000, 300), new THREE.Vector3(1000, 2000, 2000));
viewer3D.setSectionBox(box);

1.13.7. getSectionBoxState

获取盒式剖切的状态

名称 说明 类型 是否必须 示例
返回值说明 类型 示例
剖切状态 ClipPlanesInfo

调用方式:

/**
 * 获取盒式剖切的状态
 * @function getSectionBoxState
 * @return {ClipPlanesInfo} 剖切状态
 */
var state = viewer3D.getSectionBoxState();

1.13.8. setSectionBoxState

还原盒式剖切的状态

参数名称 说明 类型 是否必须 示例
剖切的状态 对象 ClipPlanesInfo
返回值说明 类型 示例

调用方式:

/**
 * 还原盒式剖切的状态
 * @function setSectionBoxState
 * @param {ClipPlanesInfo} sectionBoxState 剖切状态
 * @return {void}
 */
var state = viewer3D.getSectionBoxState();
viewer3D.setSectionBoxState(state);

1.14. 事件

事件类型见 常量中的 EVENT

demo 示例

示例名称 示例地址
监听模型加载完成 去体验
监听构件单击 去体验
监听构件双击 去体验

1.14.1. registerModelEventListener

添加模型相关事件

名称 说明 类型 是否必须 示例
type 监听的类型 字符串 string BOS3D.EVENTS.ON_CLICK_PICK
listener 监听的回调 方法 function function(){}
/**
 * 该方法用来添加监听器
 * @function registerModelEventListener
 * @param {(string)} type  监听的类型
 * @param {function} listener  监听的回调
 * @return {void}
 */
viewer3D.registerModelEventListener(BOS3D.EVENTS.ON_CLICK_PICK, function () {});

1.14.2. unregisterModelEventListener

移除模型相关事件

名称 说明 类型 是否必须 示例
type 监听的类型 字符串 string BOS3D.EVENTS.ON_CLICK_PICK
listener 监听的回调 方法 function function(){}
/**
 * 该方法用来移除监听器
 * @function unregisterModelEventListener
 * @param {(string)} type  监听的类型
 * @param {function} listener  监听的回调j
 * @return {void}
 */
viewer3D.unregisterModelEventListener(BOS3D.EVENTS.ON_CLICK_PICK, function () {});

1.14.3. registerControlEventListener

添加控制相关事件

名称 说明 类型 是否必须 示例
type 监听的类型 字符串 string BOS3D.EVENTS.ON_CONTROL_ENTER
listener 监听的回调 方法 function function(){}
/**
 * 该方法用来添加监听器
 * @function registerControlEventListener
 * @param {(string)} type  监听的类型
 * @param {function} listener  监听的回调
 * @return {void}
 */
viewer3D.registerControlEventListener(BOS3D.EVENTS.ON_CONTROL_ENTER, function () {});

1.14.4. unregisterControlEventListener

移除控制相关事件

名称 说明 类型 是否必须 示例
type 监听的类型 字符串 string BOS3D.EVENTS.ON_CONTROL_ENTER
listener 监听的回调 方法 function function(){}
/**
 * 该方法用来移除监听器
 * @function unregisterControlEventListener
 * @param {(string)} type  监听的类型
 * @param {function} listener  监听的回调
 * @return {void}
 */
viewer3D.unregisterControlEventListener(BOS3D.EVENTS.ON_CONTROL_ENTER, function () {});

1.14.5. registerCameraEventListener

添加相机相关事件

名称 说明 类型 是否必须 示例
type 监听的类型 字符串 string BOS3D.EVENTS.ON_CAMERA_CHANGE
listener 监听的回调 方法 function function(){}
/**
 * 该方法用来添加监听器
 * @function registerCameraEventListener
 * @param {(string)} type  监听的类型
 * @param {function} listener  监听的回调
 * @return {void}
 */
viewer3D.registerCameraEventListener(BOS3D.EVENTS.ON_CAMERA_CHANGE, function () {});

1.14.6. unregisterCameraEventListener

移除相机相关事件

名称 说明 类型 是否必须 示例
type 监听的类型 字符串 string BOS3D.EVENTS.ON_CAMERA_CHANGE
listener 监听的回调 方法 function function(){}
/**
 * 该方法用来移除监听器
 * @function unregisterCameraEventListener
 * @param {(string)} type  监听的类型
 * @param {function} listener  监听的回调
 * @return {void}
 */
viewer3D.unregisterCameraEventListener(BOS3D.EVENTS.ON_CAMERA_CHANGE, function () {});

1.15. 轴网

1.15.1. setAxisNetColor

设置轴网颜色

参数名称 说明 类型 是否必须 示例
color 要设置的颜色 字符串 "#ffffff"
opacity 颜色的透明度,范围 0.0-1.0 数字 0.5
modelKey 模型 key, 无参数时对所有模型生效 字符串 string "M123"

调用方式:

/**
 * 设置轴网的颜色和透明度
 * @param {String} color "#ffffff"
 * @param {Number} opacity 0.0 - 1.0
 */
viewer3D.setAxisNetColor("#ffffff", 0.5);

1.15.2. setAxisNetHeight

设置轴网的高度

参数名称 说明 类型 是否必须 示例
height 高度 数字 0.5
modelKey 模型 key, 无参数时对所有模型生效 字符串 string "M123"

调用方式:

/**
 * 设置轴网的高度
 * @function setAxisNetHeight
 * @param {Number} height 高度
 * @param {string} modelKey  模型key
 * @return {void}
 */
viewer3D.setAxisNetHeight(5000);

1.15.3. showAxisNet

显示轴网

名称 说明 类型 是否必须 示例
modelKey 模型 key, 无参数时对所有模型生效 字符串 string "M123"
返回值说明 类型 示例

调用方式:

/**
 * 显示轴网
 * 默认是隐藏的
 */
viewer3D.showAxisNet();

1.15.4. hideAxisNet

隐藏轴网

名称 说明 类型 是否必须 示例
modelKey 模型 key, 无参数时对所有模型生效 字符串 string "M123"
返回值说明 类型 示例

调用方式:

/**
 * 隐藏轴网
 * 默认就是隐藏的
 */
viewer3D.hideAxisNet();

1.15.5. enableAxisNetStayInFront

使轴网保持在最前,始终可见

名称 说明 类型 是否必须 示例
modelKey 模型 key, 无参数时对所有模型生效 字符串 string "M123"
返回值说明 类型 示例

调用方式:

/**
 * 让轴网保持在最前,始终可见
 */
viewer3D.enableAxisNetStayInFront();

1.15.6. disableAxisNetStayInFront

取消轴网保持最前,正常显示

名称 说明 类型 是否必须 示例
modelKey 模型 key, 无参数时对所有模型生效 字符串 string "M123"
返回值说明 类型 示例

调用方式:

/**
 * 取消轴网保持最前,正常显示
 */
viewer3D.disableAxisNetStayInFront();

1.16. 高级接口

1.16.1. getScene

获取场景,这个场景被添加到根场景中,外部添加的 Object3D 对象都应该放在这里。

名称 说明 类型 是否必须 示例
返回值说明 类型 示例
外部场景 ExternalScene

调用方式:

/**
 * 获取场景,这个场景被添加到根场景中,外部添加的Object3D对象都应该放在这里。
 * @function getScene
 * @return {ExternalScene} 外部场景 对象说明见ExternalScene部分文档
 */
viewer3D.getScene();

1.16.2. setSceneUnit

设置场景单位

名称 说明 类型 是否必须 示例
unit 单位,枚举类型,见 BOS3D.EnumLengthUnits string BOS3D.EnumLengthUnits.Meter
返回值说明 类型 示例
无场景单位设置成功则返回true,否则返回false boolean

调用方式:

/**
 * 设置场景单位,默认和场景中加载的第一个模型一致
 * @function setSceneUnit
 * @param {string} unit 单位,枚举类型,见BOS3D.EnumLengthUnits
 * @return {boolean} 场景单位设置成功则返回true,否则返回false
 */
viewer3D.setSceneUnit(BOS3D.EnumLengthUnits.Meter);

1.16.3. getSceneUnit

获取场景单位

名称 说明 类型 是否必须 示例
返回值说明 类型 示例
单位 string "mm"

调用方式:

/**
 * 获取场景单位
 * @function getSceneUnit
 * @returns {string} 单位,枚举类型,见BOS3D.EnumLengthUnits,如cm、dm、mm、m
 */
viewer3D.getSceneUnit();

1.16.4. getRootScene

获取根场景,您不应该直接操作根场景,否则无法保证系统稳定。

名称 说明 类型 是否必须 示例
返回值说明 类型 示例
外部场景 ExternalScene

调用方式:

/**
 * 获取根场景,您不应该直接操作根场景,否则无法保证系统稳定。
 * @function getRootScene
 * @return {Scene} 根场景
 */
viewer3D.getRootScene();

demo 示例

示例名称 示例地址
添加模型原点坐标系 去体验

1.16.5. updateSceneBoundingBox

更新场景包围盒,模型会遍历每个 node,重新计算包围盒,外部构件管理器会重新计算 node.boundingBox, 有些外部构件如标签、火焰等可以直接修改 position,因此要调用本方法手动更新。

名称 说明 类型 是否必须 示例
返回值说明 类型 示例

调用方式:

/**
 * 更新场景包围盒,模型会遍历每个node,重新计算包围盒,外部构件管理器会重新计算node.boundingBox
 * 有些外部构件如标签、火焰等可以直接修改position,因此要调用本方法手动更新;
 */
viewer3D.updateSceneBoundingBox();

1.16.6. getExternalComponentManager

获取外部构件管理器,对应的 id、modelKey 为"ExternalComponent"

名称 说明 类型 是否必须 示例
返回值说明 类型 示例
外部构件管理器对象 ExternalComponentManager

调用方式:

/**
 * 获取外部构件管理器
 * @function Viewer3D.prototype.getExternalComponentManager
 * @returns {ExternalComponentManager} 外部构件管理器对象
 */
viewer3D.getExternalComponentManager();

1.16.7. addExternalObject

添加外部构件

名称 说明 类型 是否必须 示例
name 外部模型 name 字符串 String "water"
object mesh 或者 mesh 数组 对象 Mesh 或 对象数组 Array new THREE.Mesh()
holdMaterialWhenPicked 选中后保持之前的材质 布尔值 boolean false
customSelectMaterial 自定义选中后使用的材质 材质对象 object new THREE.MeshBasicMaterial()
返回值说明 类型 示例

调用方式:

/**
 * 添加外部构件
 * @function Viewer3D.prototype.addExternalObject
 * @param {string} name 外部模型name,可以自定义name
 * @param {object | array} object mesh或者mesh数组
 * @param {boolean} [holdMaterialWhenPicked=false] 选中后保持之前的材质
 * @param {object} [customSelectMaterial] 自定义选中后使用的材质,和原始材质具有相同结构
 * @return {void}
 */
viewer3D.addExternalObject("name", new THREE.Mesh(), false, new THREE.MeshBasicMaterial());

1.16.8. addExternalObjects

批量添加外部构件,会自动生成 name

名称 说明 类型 是否必须 示例
objectArray mesh 或者 mesh 数组 数组 Array [new THREE.Mesh()]
holdMaterialWhenPicked 选中后保持之前的材质 布尔值 boolean false
customSelectMaterial 自定义选中后使用的材质 材质对象 object new THREE.MeshBasicMaterial()
返回值说明 类型 示例
随机生成的 name 数组 Array ["123"]

调用方式:

/**
 * 批量添加外部构件
 * @function addExternalObjects
 * @param {array} [objectArray] 数组元素是mesh或者mesh数组
 * @param {boolean} [holdMaterialWhenPicked=false] 选中后保持之前的材质
 * @param {object} [customSelectMaterial] 自定义选中后使用的材质,和原始材质具有相同结构
 * @return {Array}  随机生成的name数组
 */
let names = viewer3D.addExternalObjects([new THREE.Mesh()], false, new THREE.MeshBasicMaterial());

1.16.9. removeExternalObjectByName

根据 name 删除指定外部模型

名称 说明 类型 是否必须 示例
name 外部模型 name 字符串 String "water"
返回值说明 类型 示例

调用方式:

/**
 * 根据name删除指定外部模型
 * @function removeExternalObjectByName
 * @param {string} name 外部模型name
 * @return {void}
 */
viewer3D.removeExternalObjectByName("water");

1.16.10. clearExternalObjects

删除所有外部模型

名称 说明 类型 是否必须 示例
返回值说明 类型 示例

调用方式:

/**
 * 删除所有外部模型
 * @function clearExternalObjects
 * @return {void}
 */
viewer3D.clearExternalObjects();

1.16.11. getExternalObjectByName

根据 name 获取外部模型的 mesh 组

名称 说明 类型 是否必须 示例
name 外部模型 name 字符串 String "water"
返回值说明 类型 示例
返回外部模型 Mesh 组 Object 或 Array new THREE.Mesh()

调用方式:

/**
 * 根据name获取外部模型的mesh组
 * @function getExternalObjectByName
 * @param {string} [name] 外部模型name,可以自定义name
 * @returns {object} 返回外部模型Mesh组
 */
let meshs = viewer3D.getExternalObjectByName("water");

1.16.12. getAllExternalObjects

获取所有外部模型的 mesh 组

名称 说明 类型 是否必须 示例
返回值说明 类型 示例
返回模型组 Array [new THREE.Mesh()]

调用方式:

/**
 * 获取所有外部模型的mesh组
 *  @function getAllExternalObjects
 *  @returns {Array} 返回模型组
 */
let meshs = viewer3D.getAllExternalObjects();

1.16.13. setComponentsMaterialByKey

根据构件 key 修改构件材质

名称 说明 类型 是否必须 示例
key 构件 key string |string[] "m123_123"
materials THREEJS 材质数组 THREE.Material|THREE.Material[] [new THREE.Material()]
isMaterialsSingleton 材质是否为单例,单例为 true boolean true
orders 构件材质修改映射表 object [{"compMatOrder":0,"replMatOrder":0}]}
返回值说明 类型 示例
返回构件 key 和材质对象的映射 objec {"m123_123":{}}

调用方式:

/**
 * 根据指定的构件key,修改构件材质
 * 方法说明:此方法用于扩展构件材质,允许用户通过THREEJS材质对象,替换构件原始材质对象。
 * @setMaterialComponentsByKey
 * @param {array/string} key 构件key数组或构件key
 * @param {THREE.Material/THREE.Material[]}  materials  用户自定义的材质
 * @param {boolean}  isMaterialsSingleton  标记材质是否为单例
 *      true    :材质为单例模式
 *          说明:会用用户提供参数材质对象替换所有指定构件key参数
 *          应用场景:1:只以显示为主替换构件材质,不做材质位置移动等动画效果
 *                  2:只做相同材质相同偏移效果动画,如设置多根水管构件以相同速度相同方向做材质偏移时
 *          注意事项:当用户使用相同材质对象,以单例模式替换材质的时候,无论用户调用几次该方法,所有构件
 *                  使用的都是相同材质对象,都是用户的材质参数对象
 *      false   :材质为多例模式
 *          说明:会为所有构件提供相同材质副本,用户可以在返回的参数对象中拿到这些材质对象
 *          应用场景:1:当需要为不同构件设置不同材质偏移或者动画时使用,如当需要为不同水管设置相同材质,
 *                  但是材质移动的方向和速度不同时,使用该模式
 *          注意事项:1:在该模式下,当用户创建的材质包含纹理的情况下,用户必须保证纹理以加载完成,否则效果不可预期
 *                  2:当用户把构件材质都指向材质数组中同一个材质时,在本构件下,构件所有材质对象为同一个对象
 *                  3:用户以相同材质对象创建材质数组时,替换后,构件材质依旧时多例模式
 * @param [object[]] orders 构件材质修改映射表
 *      object:{
 *          "compMatOrder":number, 需要修改构件材质的序号
 *          "replMatOrder":number  对应材质数组中的序号
 *         }
 *      此参数为可选参数,如果用户未设置该参数,默认会按照构件材质顺序依次替换用户自定义材质数组中的顺序
 * @return {object}
 */
let object = viewer3D.setComponentsMaterialByKey();

demo 示例

示例名称 示例地址
修改构件材质 去体验
添加平面贴图 去体验

1.16.14. closeMaterialByKey

取消指定 key 构件的材质修改

名称 说明 类型 是否必须 示例
key 构件 key string |string[] "m123_123"
返回值说明 类型 示例

调用方式:

/**
 * 取消指定key构件的材质修改
 * @deprecated
 * @closeMaterialByKey
 * @param {array/string} key  构件key或者构件key数组
 * @return {void}
 */
viewer3D.closeMaterialByKey("m123_123");

demo 示例

示例名称 示例地址
取消构件材质修改 去体验

1.16.15. getMinDistanceByComponentKey

获取两个构件之间的最小距离

名称 说明 类型 是否必须 示例
componentKey 构件 key string "m123_123"
componentKey2 构件 key string "m123_123"
返回值说明 类型 示例
Object 结果
Object.start 起点三维坐标 THREE.Vector3
Object.end 终点三维坐标 THREE.Vector3
Object.minDistance 最小距离 Number

调用方式:

/**
 * 获取两个构件之间的最小距离。
 * @function getMinDistanceByComponentKey
 * @param {String} componentKey 构件key
 * @param {String} componentKey2 构件key
 * @return {Object} 结果:{
                start: point,
                end: point,
                minDistance: 0
            },分别为起点三维坐标、终点三维坐标、最小距离
 */
viewer3D.getMinDistanceByComponentKey("m123_123", "M123_456");

1.16.16. addToRootScene

将对象添加到场景中

名称 说明 类型 是否必须 示例
object 需要被添加的 Object3D 对象 Object3D
返回值说明 类型 示例

调用方式:

/**
 * 添加对象到场景中
 * @param {Object3D} object
 */

viewer3D.addToRootScene(object);

1.16.17. removeFromRootScene

将对象从场景中移除

名称 说明 类型 是否必须 示例
object 需要被移除的 Object3D 对象 Object3D
返回值说明 类型 示例

调用方式:

/**
 * 添加对象到场景中
 * @param {Object3D} object
 */

viewer3D.removeFromRootScene(object);

1.16.18. getTimerManager

获取时间管理器

名称 说明 类型 是否必须 示例
返回值说明 类型 示例
时间管理器 Object

调用方式:

/**
 * 获取时间管理器
 * @return {Object} TimerManager
 */

viewer3D.getTimerManager();

1.17. 控制模式相关接口

1.17.1. getCurrentControlName

获得当前控制模式的名字

名称 说明 类型 是否必须 示例
返回值说明 类型 示例
Control 名字 字符串 String "pick"

调用方式:

/**
 * 获得当前控制模式的名字
 * @function getCurrentControlName
 * @return {String} Control 名字
 */
var name = viewer3D.getCurrentControlName();

1.17.2. setControlMode

设置控制模式

名称 说明 类型 是否必须 示例
name Control 名字标识 枚举类型 字符串 String ControlMode.PICK 见常量中的 ControlMode
返回值说明 类型 示例

调用方式:

/**
 * 设置控制模式
 * @function setControlMode
 * @param {String} name - Control 名字标识 枚举类型,见常量中的ControlMode {@link ControlMode}
 * @return {void}
 */
viewer3D.setControlMode(BOS3D.ControlMode.PICK);

1.17.3. setControlDefault

设置 Control 模式为默认状态(拾取模式 - Pick Control)

名称 说明 类型 是否必须 示例
返回值说明 类型 示例

调用方式:

/**
 * 设置Control模式为默认状态(拾取模式 - Pick Control)
 * @function setControlDefault
 * @return {void}
 */
viewer3D.setControlDefault();

1.18. 楼层分解

1.18.1. canFloorExplosion

当前模型是否可以进行楼层分解,只要存在一个可以分解的模型就返回 true

名称 说明 类型 是否必须 示例
返回值说明 类型 示例
是否可以楼层分解 bool true

调用方式:

/**
 * 是否可以进行楼层分解,只要存在一个可以分解的模型就返回true
 * @return {*|boolean}
 */
viewer3D.canFloorExplosion();

1.18.2. floorExplosion

楼层分解,如果当前模型不可分解,返回 false,否则返回 true

名称 说明 类型 是否必须 示例
factor 分解系数 number 2.0
返回值说明 类型 示例
是否可以楼层分解 bool true

调用方式:

/**
 * 楼层分解,如果当前模型不可分解,返回false,否则返回true
 * @param factor { 系数,最小为1,建议最大为3}
 * @return {boolean}
 */
viewer3D.floorExplosion(2.0);

1.18.3. closeFloorExplosion

退出楼层分解

名称 说明 类型 是否必须 示例
返回值说明 类型 示例

调用方式:

/**
 * 退出楼层分解
 */
viewer3D.closeFloorExplosion();

1.18.4. setZoomSpeed

设置滚轮缩放速度倍率,相对于默认速度,默认为 1,必须是正数

名称 说明 类型 是否必须 示例
speed 缩放速度倍率 number 2

调用方式:

/**
 * 设置相对缩放速度
 * @param {number} speed - 缩放的相对速度,必须是正数
 */
viewer3D.setZoomSpeed(2);

1.18.5. getZoomSpeed

获取当前的滚轮缩放速度倍率

名称 说明 类型 是否必须 示例
返回值说明 类型 示例
当前的滚轮缩放速度倍率 number 2

调用方式:

/**
 * 获取当前的相对缩放速度
 * @return {number} - 相对缩放速度
 */
viewer3D.getZoomSpeed();

1.18.6. setZoomOutLimitRate

设置模型缩小的相对限度

只有 BOS3D.GlobalData.ConstraintZoom 为 true 才有效(此时开启缩放限制)

名称 说明 类型 是否必须 示例
rate 相对比例 number 11.4514
返回值说明 类型 示例

调用方式:

/**
 * 设置模型缩小的相对限度
 * @desc 只有BOS3D.GlobalData.ConstraintZoom为true才有效
 * @param {number} rate - 相对比例(默认值11.4514)
 */
viewer3D.setZoomOutLimitRate(10);

1.18.7. getZoomOutLimitRate

获取模型缩小的相对限度

名称 说明 类型 是否必须 示例
返回值说明 类型 示例
相对比例 number 11.4514

调用方式:

/**
 * 获取当前的模型缩小相对限度
 * @return {number} - 相对限度
 */
viewer3D.getZoomOutLimitRate();

1.19. 光照

1.19.1. setLightIntensityFactor

设置场景中所有灯光的光照强度的调整系数,默认是 1.0

名称 说明 类型 是否必须 示例
factor 分解系数 number 2.0
返回值说明 类型 示例

调用方式:

/**
 * 设置场景中所有灯光的光照强度的调整系数
 * 默认是1.0
 * @param {Number} factor - 灯光强度系数,同THREE.js里Light.intensity
 * @return {void}
 */
viewer3D.setLightIntensityFactor(2.0);

1.19.2. enableShadow

设置是否开启场景中的阴影效果

名称 说明 类型 是否必须 示例
isEnabled 是否开启 Boolean true
返回值说明 类型 示例

调用方式:

/**
 * 设置是否开启场景中的阴影效果
 * @function enableShadow
 * @param {Boolean} isEnabled - true为开启,false为关闭
 * @return {void}
 */
viewer3D.enableShadow(true);

1.19.3. updateShadowLight

更新启场景中的阴影效果,如果修改了产生阴影的灯光的位置等信息,请手动调用次方法,使更改生效

名称 说明 类型 是否必须 示例
返回值说明 类型 示例

调用方式:

/**
 * 更新启场景中的阴影效果,如果修改了产生阴影的灯光的位置等信息,请手动调用次方法,使更改生效
 * @function updateShadowLight
 * @return {void}
 */
viewer3D.updateShadowLight();

1.19.4. setShadowLightDir

设置产生阴影的灯光的方向,从原点看向此方向

名称 说明 类型 是否必须 示例
dir 三维空间向量 Array 或 Vector3 或 Object [0,0,1]或 new THREE.Vector3()或{x:0,y:0,z:1}
返回值说明 类型 示例

调用方式:

/**
 * 设置产生阴影的灯光的方向,从原点看向此方向
 * @function setShadowLightDir
 * @param {Array||Vector3||Object} dir 三维空间向量
 * @return {void}
 */
viewer3D.setShadowLightDir([0, 0, 1]);

1.19.5. getShadowLightDir

获取当前产生阴影的灯光的方向,从原点看向此方向

名称 说明 类型 是否必须 示例
返回值说明 类型 示例
三维空间向量 THREE.Vector3 {x:0,y:0,z:1}

调用方式:

/**
 * 获取当前产生阴影的灯光的方向,从原点看向此方向
 * @function getShadowLightDir
 * @return {THREE.Vector3} 三维空间向量
 */
let dir = viewer3D.getShadowLightDir();

1.19.6. getLightDirFromAltitudeAndAzimuth

根据太阳高度角和太阳方位角获取光照方向,朝向原点

名称 说明 类型 是否必须 示例
altitude 太阳高度角 ,弧度制 number 1
azimuth 太阳方位角 ,弧度制 number 2
返回值说明 类型 示例
三维空间向量 THREE.Vector3 {x:0,y:0,z:1}

调用方式:

/**
 * 根据太阳高度角和太阳方位角获取光照方向
 * @function getLightDirFromAltitudeAndAzimuth
 * @param {Number} altitude 太阳高度角,弧度制,与地平线平齐为0,在头顶为 PI / 2
 * @param {Number} azimuth 太阳方位角,弧度制,南方为0,顺时针方向为正
 * @return {THREE.Vector3} 三维空间向量
 */
let dir = viewer3D.getLightDirFromAltitudeAndAzimuth(0.5, 0.2);

1.19.7. setShadowAttributes

自定义阴影属性

名称 说明 类型 是否必须 示例
attributes 自定义构件属性对象 object {}
attributes.position 自定义构件光源位置对象 object {}
attributes.position.x 自定义光源位置,x 轴坐标 float 0
attributes.position.y 自定义光源位置,y 轴坐标 float 0
attributes.position.z 自定义光源位置,z 轴坐标 float 0
attributes.target 自定义构件光源朝向位置对象 object {}
attributes.target.x 自定义光源朝向位置,x 轴坐标 float 0
attributes.target.y 自定义光源朝向位置,y 轴坐标 float 0
attributes.target.z 自定义光源朝向位置,z 轴坐标 float 0
attributes.bias 阴影贴图偏差,在确定曲面是否在阴影中时,
从标准化深度添加或减去多少。默认值为 0.
此处非常小的调整(大约 0.0001)可能有助于
减少阴影中的伪影
float 0
attributes.far 近剪裁面 float 0
attributes.near 远剪裁面 float 0
attributes.mapSizeWidth 阴影贴图宽度 float 0
attributes.mapSizeHeight 阴影贴图高度 float 0
返回值说明 类型 示例

调用方式:

/**
 * 自定义阴影属性
 * @function setShadowAttributes
 * @param {object} attributes -自定义构件属性对象
 * @param {object} attributes.position -自定义光源位置
 * @param {float} attributes.position.x -自定义光源位置,x轴坐标
 * @param {float} attributes.position.y -自定义光源位置,y轴坐标
 * @param {float} attributes.position.z -自定义光源位置,z轴坐标
 * @param {object} attributes.target -自定义光源位置
 * @param {float} attributes.target.x -自定义光源朝向位置,x轴坐标
 * @param {float} attributes.target.y -自定义光源朝向位置,y轴坐标
 * @param {float} attributes.target.z -自定义光源朝向位置,z轴坐标
 * @param {float} attributes.bias -偏移量
 * @param {float} attributes.far -近剪裁面
 * @param {float} attributes.near -远剪裁面
 * @param {float} attributes.mapSizeWidth -阴影贴图宽度
 * @param {float} attributes.mapSizeHeight -阴影贴图高度
 * @return {void}
 */

let attr = {
    position: {
        x: 0,
        y: 0,
        z: 0,
    },
};
viewer3D.setShadowAttributes(attr);

1.19.8. resetShadowAttributes

重置阴影属性,恢复默认状态

名称 说明 类型 是否必须 示例
返回值说明 类型 示例

调用方式:

/**
 * @description 重置阴影属性,恢复默认状态
 * @function resetShadowAttributes
 * @return {void}
 * */

viewer3D.resetShadowAttributes();
版权所有@盈嘉互联(北京)科技有限公司 京ICP备15051988号-9 Copyright © 2022 all right reserved,powered by Gitbook该文件修订时间: 2022-06-27 15:28:07

results matching ""

    No results matching ""