Viewer3D

类:操作三维场景的类

Constructor

new Glodon.Bimface.Viewer.Viewer3D(viewer3DConfig)

构造三维场景的类

Parameters:
NameTypeDescription
viewer3DConfigGlodon.Bimface.Viewer.Viewer3DConfig

viewer3D的配置项

Methods

addBlinkComponentsById(objectIds)

根据构件ID在闪烁状态集合中继续添加构件

Parameters:
NameTypeDescription
objectIdsArray

构件ID数组

addEventListener(event, callback)

注册监听事件

Parameters:
NameTypeDescription
eventGlodon.Bimface.Viewer.Viewer3DEvent

监听事件

callbackFunction

监听事件的回调函数

bringAxisGridsToFront(isEnabled)

使得轴网浮在最上层

Parameters:
NameTypeDescription
isEnabledBoolean

是否将轴网提到最上层

clearAllBlinkComponents()

取消所有构件的闪烁状态

clearBlinkComponentsById(objectIds)

根据构件ID从闪烁状态集合中取消构件的闪烁状态

Parameters:
NameTypeDescription
objectIdsArray

构件ID数组

clearIsolation()

取消构件隔离

clearModelIsolation()

取消所有模型的隔离效果

clearRotationCenter()

清除设定的旋转中心

createBoundary(outerRing, innerRing)

通过一系列边界点创建房间边界并返回房间边界Boundary对象

Parameters:
NameTypeDescription
outerRingArray

房间外边界,格式为[[x1,y1,z1], [x2.y2,z2], ...],首尾不可重复

innerRingArray

房间内边界,格式为[[x1,y1,z1], [x2.y2,z2], ...],首尾不可重复

Returns:
TypeDescription
Object

房间边界Boundary对象

Example

创建房间边界

// 构造组成房间外边界的点
let outerRing = [
  [-8000.000, 20000.000, 0.000],
  [7000.000, 20000.000, 0.000],
  [7000.000, -12500.000, 0.000],
  [18000.000, -12500.000, 0.000],
  [18000.000, -21000.000, 0.000],
  [-8000.000, -21000.000, 0.000]
];
// 构造组成房间内边界的点,支持多个内边界
let innerRing = [[
  [-4600.000, 8000.000, 0.000],
  [4100.000, 8000.5000, 0.000],
  [4100.000, -12500.000, 0.000],
  [-4600.000, -12500.000, 0.000]
]];
// 根据点信息创建房间边界
let roomBoundary = viewer.createBoundary(outerRing, innerRing);

createSnapshotAsync(option, callback)

创建模型快照

Parameters:
NameTypeDescription
optionObject
backgroundColorGlodon.Web.Graphics.Color

快照背景颜色

enableMarksBoolean

是否显示标记的内容,目前支持测量结果、批注、标签、剖面,默认为false

callbackFunction

快照回调函数

deactivateComponentsById(objectIds)

根据构件ID将构件设置为未激活状态 当构件被设置为未激活的状态后,构件无法被选择、修改颜色与材质、控制可见性(显示、隐藏)、设置隔离效果,用户可以穿透该构件选择其后方的构件、三维标签

Parameters:
NameTypeDescription
objectIdsArray

构件的ID集合,如["x1", "x2"]

destroy()

销毁场景

enableAxisGridsHover(isEnabled)

是否启用轴网的悬浮效果

Parameters:
NameTypeDescription
isEnabledBoolean

是否启用

enableBlinkComponents(isEnabled)

启用或者禁用构件闪烁

Parameters:
NameTypeDescription
isEnabledBoolean

是否启用构件闪烁

enableContactShadow(isEnabled)

开启/关闭接触阴影效果

Parameters:
NameTypeDescription
isEnabledBoolean

开启/关闭接触阴影效果

enableCoordinateSystem(isEnabled)

是否显示坐标系

Parameters:
NameTypeDescription
isEnabledBoolean

是否显示坐标系

enableDamping(isEnabled)

是否开启阻尼效果

Parameters:
NameTypeDescription
isEnabledBoolean

设置为 true 开启平移阻尼效果,false 关闭平移阻尼效果

enableDoubleClickZoom(isEnabled)

是否开启鼠标双击的zoom行为

Parameters:
NameTypeDescription
isEnabledBoolean

是否开启鼠标双击的zoom行为

enableFullScreen(isEnabled)

设置是否开启全屏模式

Parameters:
NameTypeDescription
isEnabledBoolean

是否开启全屏模式

enableGlowEffect(isEnabled)

是否开启发光效果

Parameters:
NameTypeDescription
isEnabledBoolean

是否开启发光效果,true为开启,false为关闭

enableGravity(isEnabled)

是否开启重力漫游

Parameters:
NameTypeDescription
isEnabledBoolean

开启或关闭重力漫游

enableHitDetection(isEnabled)

是否开启漫游碰撞

Parameters:
NameTypeDescription
isEnabledBoolean

开启或关闭漫游碰撞

enableHover(isEnabled)

设置鼠标悬停效果

Parameters:
NameTypeDescription
isEnabledBoolean

开启或关闭鼠标悬停效果

enableMouseMovePick(isEnabled)

设置鼠标滑动拾取坐标

Parameters:
NameTypeDescription
isEnabledBoolean

开启或关闭鼠标滑动拾取坐标

enableOrbit(isEnabled)

是否允许模型旋转

Parameters:
NameTypeDescription
isEnabledBoolean

是否允许场景旋转,默认为true

enableScale(isEnabled)

设置是否允许场景缩放

Parameters:
NameTypeDescription
isEnabledBoolean

是否允许场景缩放,默认为true

enableShortcutKey(isEnabled)

是否开启快捷键

Parameters:
NameTypeDescription
isEnabledBoolean

是否开启快捷键

enableSnap(isEnabled)

开启或关闭对象捕捉

Parameters:
NameTypeDescription
isEnabledBoolean

开启或关闭对象捕捉

enableSSAOEffect(isEnabled)

是否开启SSAO效果

Parameters:
NameTypeDescription
isEnabledBoolean

是否开启SSAO效果,true为开启,false为关闭

enableTranslate(isEnabled)

设置是否允许场景平移

Parameters:
NameTypeDescription
isEnabledBoolean

是否允许场景平移,默认为true

enableWireframe(isEnabled)

是否开启构件线框

Parameters:
NameTypeDescription
isEnabledBoolean

是否开启构件线框,默认为true

exitWalk()

退出漫游模式

getAllModels()

获取所有模型信息

Returns:
TypeDescription
Array

各模型信息,包括模型ID和模型名称

getAvatar()

获取第三人称漫游人物形象

getAvatarHeight()

获取漫游人物身高

getBackgroundColor()

获取背景颜色

Returns:
TypeDescription
Glodon.Web.Graphics.Color

获取背景颜色

getBlinkComponents()

获取闪烁状态集合中的构件ID数组

Returns:
TypeDescription
Array

构件ID数组

getCamera()

获取相机对象

Returns:
TypeDescription
Glodon.Bimface.Camera.Camera3D

Viewer3D场景的相机对象

getCameraAnimation()

获取模型动画状态

Returns:
TypeDescription
Boolean

开启或者关闭

getCameraStatus()

获取当前相机位置信息,用于保存后恢复相机视点

Returns:
TypeDescription
Object

相机位置信息

getCollisionByCondition()

获取碰撞检测的构件类型

getComponentsByClientCoordinates(clientCoordinates)

根据屏幕点获取所有的构件ID列表

Parameters:
NameTypeDescription
clientCoordinatesObject

屏幕坐标点

Returns:
TypeDescription
Array

构件ID列表

getComponentsByRaycaster(startPoint, direction, conditions)

射线检测

Parameters:
NameTypeDescription
startPointObject

射线检测起始点,如:{x:50, y:200, z:300}

directionObject

射线方向向量,如:{x:10, y:25, z:5}

conditionsArray

构件筛选条件,筛选字段可通过getObjectDataById方法获取

Returns:
TypeDescription
Array

按照碰撞顺序返回各构件信息:构件ID、射线与构件相交点、射线起点至相交点的距离,相交点处法向量,单位与场景设置单位一致。如:[{"id":"compontId1","position":{x:600,y:360,z:200},"distance":299.36,"normal":{x:0.6,y:0.8,z:0}},{"id":"compontId2","position":{x:630,y:400,z:210},"distance":320,"normal":{x:1,y:0.9,z:0.5}}]

getContactShadow()

获取接触阴影效果的配置

Returns:
TypeDescription
Object

Object 接触阴影效果的配置项

getCurrentRangeofCamera()

获取相机最大活动范围

Returns:
TypeDescription
Number

相机最大活动范围参数

getCurrentState()

获取当前模型的浏览状态,用于保存后恢复模型状态

Returns:
TypeDescription
Object

模型浏览状态

getCustomHomeview()

获取用户Home视图

Returns:
TypeDescription
Object

用户Home视图

getDefaultHomeview()

获取默认Home视图

Returns:
TypeDescription
Object

默认Home视图

getDrawingListbyId(fileId, objectId, callback)

根据文件ID和构件ID获取图纸列表

Parameters:
NameTypeDescription
fileIdString

集成模型或单模型的文件ID

objectIdString

构件ID

callbackFunction

获取图纸列表成功后的回调函数

getExposureShift()

获取曝光补偿量

Returns:
TypeDescription
Number

获取曝光补偿量

getFloorsbyFileId(fileId, callback)

在集成模型中根据文件ID获取子模型的楼层信息

Parameters:
NameTypeDescription
fileIdString

参与集成的子文件ID

callbackFunction

获取子模型楼层信息的回调函数

getGlobalUnit()

获取当前场景的全局单位

Returns:
TypeDescription
Glodon.Bimface.Common.Units.LengthUnits

场景全局单位

getLightingMode()

获取当前光照模式

Returns:
TypeDescription
String

光照模式:"Phong"为普通模式,"IBL"为基于图像模式

getLineSelectRange()

获取模型线拾取范围

Returns:
TypeDescription
Number

模型线的拾取范围,单位为毫米

getMepSystem(fileId, successCallback, failureCallback)

获取模型中的系统拓扑信息

Parameters:
NameTypeDescription
fileIdFunction

文件ID

successCallbackFunction

获取系统拓扑信息成功之后的回调函数

failureCallbackFunction

获取系统拓扑信息失败之后的回调函数

getMinimumFPS()

获取模型渲染帧率

Returns:
TypeDescription
Number

模型渲染帧率

getModel(modelId)

获取模型对象

Parameters:
NameTypeDescription
modelIdString

模型ID,不传则返回默认模型对象

Returns:
TypeDescription
Glodon.Bimface.Model.BimModel

指定模型对象

getModelBoundaryPoints(modelId)

获取当前模型的边界点对象

Parameters:
NameTypeDescription
modelIdString

指定模型的ModelID

Returns:
TypeDescription
Array

描述模型边界点的数组

getModelSet(successCallback, failureCallback)

获取模型组信息,模型转换时需在配置项中设置"exportSetsTree": true

Parameters:
NameTypeDescription
successCallbackFunction

获取模型组信息成功的回调函数

failureCallbackFunction

获取模型组信息失败的回调函数

getNearestAxisGrids(point3d, fileId, callback)

最近轴网交点的轴线信息及偏移值

Parameters:
NameTypeDescription
point3dObject

点对象

fileIdString

集成模型的子文件ID,单文件不填,集成模型为必填项

callbackFunction

回调函数

Example

示例

// 构造三维点对象
let point = { x: 5000, y: 6000, z: -350 };
// 单模型获取指定点最近的轴线
viewer.getNearestAxisGrids(point, '', function(data) {
 console.log(data);
});

getRoomManager()

获取房间管理器对象。

Returns:
TypeDescription
Glodon.Bimface.Plugins.Rooms.RoomManager

指定房间管理器对象

getViewHouseIsLoaded()

获取ViewHouse是否被加载

Returns:
TypeDescription
Boolean

ViewHouse是否被加载

getWireframeColor()

获取线框颜色

Returns:
TypeDescription
Glodon.Web.Graphics.Color

线框颜色

hideViewHouse()

隐藏ViewHouse

isContactShadowEnabled()

是否开启了接触阴影效果

Returns:
TypeDescription
Boolean

isEnabled 是否开启了接触阴影效果

isEnableCoordinateSystem()

获取坐标系可见状态

Returns:
TypeDescription
Boolean

坐标系可见状态

isEnableHover()

是否开启了鼠标的悬浮效果

Returns:
TypeDescription
Boolean

是否开启了鼠标的Hover效果

isEnableIBLBackground()

获取IBL背景的启用状态

Returns:
TypeDescription
Boolean

IBL背景的启用状态

isEnableOrbit()

是否开启场景旋转

Returns:
TypeDescription
Boolean

是否允许场景旋转

isEnableScale()

是否开启场景缩放

Returns:
TypeDescription
Boolean

isEnabled 是否允许场景缩放

isEnableToggleContextMenuDisplay()

是否开启了右键菜单

Returns:
TypeDescription
Boolean

是否开启了右键菜单

isEnableTranslate()

获取是否开启场景平移

Returns:
TypeDescription
Boolean

isEnabled 是否允许场景平移

isolateModel(modelIds, state)

隔离模型的全部构件,其他模型的全部构件隐藏或半透明

Parameters:
NameTypeDescription
modelIdsArray

模型ID的数组

stateGlodon.Bimface.Viewer.IsolateOption

被隔离构件显示状态,如Glodon.Bimface.Viewer.IsolateOption.MakeOthersTranslucent

isWireframeEnabled()

是否开启了构件线框

Returns:
TypeDescription
Boolean

是否开启了构件线框

loadModel(option)

添加自定义模型ID三维模型

Parameters:
NameTypeDescription
optionObject

加载模型的参数对象

viewTokenString

模型浏览凭证,适用于线上模型加载

viewMetaDataObject

viewMetaData对象,BimfaceSDKLoader成功加载后的返回信息,适用于离线数据包加载

modelIdString

模型ID,默认为文件ID

enableComponentCutBoolean

是否加载切分后的模型,默认为false,只有做过构件切分的模型才生效

componentsFrameObject

构件线框的参数对象

isVisibleBoolean

是否可见,默认为true

conditionObject

条件参数,结构如 {ids: [1,2,3], objectData: [{familyType: xxx, category: xxx}], all: false},默认为{all: true}

lockAxis(axis, range)

锁定相机绕轴旋转范围

Parameters:
NameTypeDescription
axisGlodon.Bimface.Viewer.AxisOption

暂支持Z轴,Glodon.Bimface.Viewer.AxisOption.Z

rangeArray

相机沿轴转动时可变化的范围,如[Math.PI / 6, Math.PI / 3],不填则为禁止绕该轴旋转

recordCustomHomeview(camera)

保存当前视图为用户Home视图

Parameters:
NameTypeDescription
cameraObject

相机状态,getCameraStatus()返回的对象

removeEventListener(event, callback)

注销监听事件

Parameters:
NameTypeDescription
eventGlodon.Bimface.Viewer.Viewer3DEvent

监听事件

callbackFunction

监听事件的回调函数

removeModel(modelId)

卸载模型

Parameters:
NameTypeDescription
modelIdString

模型ID

render()

模型渲染,当修改了模型构件的状态,必须手动调用render(),场景才会显示效果,如果同时需要调用多个函数,强烈建议在最后调用一次render()

resize(width, height)

设置场景显示大小

Parameters:
NameTypeDescription
widthNumber

设置宽度

heightNumber

设置高度

restoreWireframeColor()

恢复线框默认颜色

setAvatar(avatar)

设置第三人称漫游人物形象

Parameters:
NameTypeDescription
avatarGlodon.Bimface.Viewer.AvatarOption

设置第三人称漫游时的人物形象,例如Glodon.Bimface.Viewer.AvatarOption.ConstructionWorker

setAvatarHeight(avatarHeight)

设置漫游人物身高

Parameters:
NameTypeDescription
avatarHeightNumber

设置漫游人物的身高

setBackgroundColor(color1, color2)

设置场景背景颜色

Parameters:
NameTypeDescription
color1Glodon.Web.Graphics.Color

设置背景颜色

color2Glodon.Web.Graphics.Color

设置背景颜色,可不填(color2存在时即是由上而下的线性渐变背景颜色)

Example

设置背景颜色

viewer3D.setBackgroundColor(
 new Glodon.Web.Graphics.Color(88, 103, 133, 1),
 new Glodon.Web.Graphics.Color(229, 234, 242, 1)
);

setBlinkColor(color)

设置闪烁状态的构件颜色

Parameters:
NameTypeDescription
colorGlodon.Web.Graphics.Color

闪烁颜色,当参数为空时,恢复为默认颜色

setBlinkComponentsById(objectIds)

根据构件ID设置多个构件为闪烁状态集合

Parameters:
NameTypeDescription
objectIdsArray

构件ID数组

setBlinkIntervalTime(time)

设置闪烁状态颜色变化的间隔时间

Parameters:
NameTypeDescription
timeNumber

间隔时间(毫秒),参数为空时恢复为默认,参数 time <= 0 时无效

setCameraAnimation(isEnabled)

设置模型动画,目前仅支持setCameraStatus()、setState()、 setView()三种API

Parameters:
NameTypeDescription
isEnabledBoolean

开启或关闭模型动画

setCameraStatus(camera, callback)

根据相机位置信息恢复视点

Parameters:
NameTypeDescription
cameraObject

相机状态,getCameraStatus()返回的对象

callbackFunction

相机还原之后回调函数,可不写

setCollisionByCondition(condition)

设置碰撞检测的构件类型

Parameters:
NameTypeDescription
conditionObject

条件参数

idsArray

由构件ID组成的数组

objectDataArray

由构件ObjectData组成的数组

allBoolean

全部构件

inSelectionBoolean

设置构件类型是否参与碰撞,或者不参与碰撞.不填则默认是true,为参与碰撞的构件条件;若值为false,代表设置的构件类型不参与碰撞

setContactShadow(option)

设置接触阴影效果的配置

Parameters:
NameTypeDescription
optionObject

接触阴影效果的配置项

colorGlodon.Web.Graphics.Color

阴影颜色

blurNumber

模糊程度

heightNumber

接触阴影平面高度,默认值为boundingbox最底部

setDampingFactor(factor)

设置平移阻尼效果参数

Parameters:
NameTypeDescription
factorNumber

阻尼效果级别,取值范围[1, 10],数值与平移阻尼效果成正比, 数值越大,阻尼效果越明显,默认值 10

setExplosionExtent(extent)

设置爆炸效果离散系数

Parameters:
NameTypeDescription
extentNumber

爆炸系数,取值范围[0, 3]

setExposureShift(compensation)

设置曝光补偿量,默认为0,大于0为增加曝光,小于0为减少曝光

Parameters:
NameTypeDescription
compensationNumber

曝光补偿量,取值范围[-1, 1]

setFlySpeedRate(rate)

设置漫游倍速

Parameters:
NameTypeDescription
rateNumber

倍速,取值范围[0, 25]

setLineSelectRange(distance)

设置模型线的拾取范围

Parameters:
NameTypeDescription
distanceNumber

模型线的拾取范围,默认值为30,单位为毫米

setMaximalRangeofCamera(far)

限制相机最大活动范围

Parameters:
NameTypeDescription
farNumber

相机与模型最远距离参数,范围(0, ∞),默认值为2

setMinimumFPS(fps)

设置模型渲染帧率

Parameters:
NameTypeDescription
fpsNumber

设置模型渲染帧率,取值范围[4, 60]

setNavigationMode(navigationMode, options)

设置导航模式

Parameters:
NameTypeDescription
navigationModeGlodon.Bimface.Viewer.NavigationMode3D

设置导航模式,如Glodon.Bimface.Viewer.NavigationMode3D.Walk

optionsObject

配置参数

positionObject

导航模式为ThirdPerson和ThirdPersonRun时为必填项,第三人称漫游构件载入时,包围盒底部中心点世界坐标位置

walkRotationSpeedNumber

漫游旋转倍速,取值范围[0.2,5];导航模式为walk的时候生效(其他模式不生效),不填写时,网页端和移动端默认值同Viewer3D Config 或WebApplication3DConfig 中的配置项。

setOrbitButton(orbitButton)

设置鼠标旋转习惯(左键旋转 / 右键旋转)

Parameters:
NameTypeDescription
orbitButtonGlodon.Bimface.Viewer.OrbitButton

设置左右鼠标,进行模型旋转,如Glodon.Bimface.Viewer.OrbitButton.Left

setRotationCenter(point)

设置模型旋转中心

Parameters:
NameTypeDescription
pointGlodon.Web.Geometry.Point3d

模型旋转中心,缺省值为场景中心

setSnapMode(snapMode)

设置对象捕捉模式

Parameters:
NameTypeDescription
snapModeGlodon.Bimface.Viewer.SnapMode

捕捉模式

setState(state, callback)

还原场景状态

Parameters:
NameTypeDescription
stateObject

场景状态,通过getCurrentState(),get3DViewStates(callback)等方法获取的状态

callbackFunction

场景还原之后回调函数,可不写

setView(view, callback)

设置模型标准视角

Parameters:
NameTypeDescription
viewGlodon.Bimface.Viewer.ViewOption

设置模型视角,如Glodon.Bimface.Viewer.ViewOption.Home

callbackFunction

视角还原之后回调函数,可不写

setWireframeColor(color)

设置线框颜色

Parameters:
NameTypeDescription
colorGlodon.Web.Graphics.Color

线框颜色

showViewHouse()

显示ViewHouse

startAutoRotate(speed, point)

开始自动旋转模型

Parameters:
NameTypeDescription
speedNumber

速率,正负表示方向,数值表示速度

pointObject

旋转中心,{x: 0, y: 0, z: 0},缺省值为场景中心

stopAutoRotate()

停止自动旋转模型

toggleContextMenuDisplay(isEnabled)

切换右键菜单响应

Parameters:
NameTypeDescription
isEnabledBoolean

开启或关闭右键菜单响应

updateContactShadow()

更新接触阴影效果

updateSceneBoundingBox()

更新场景包围盒

zoomIn()

模型放大

zoomOut()

模型缩小