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"]);
1.6.35. clearBlinkList
清除所有构件闪烁
名称 | 说明 | 类型 | 是否必须 | 示例 |
---|---|---|---|---|
无 | 无 | 无 | 无 | 无 |
返回值说明 | 类型 | 示例 |
---|---|---|
无 | 无 | 无 |
调用方式:
/**
* 清除所有构件闪烁
* @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 |
是 | ['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();