model~FbxModel(fileUrl, options)

FBX格式的模型。该格式为闭源,支持能力有限,建议优先使用glTF2.0。
1、要求FBX文件的版本为大于等于6400的二进制格式。
2、支持模型颜色,支持模型的自发光、环境光、漫反射光(即点光源、平行光)、镜面高光。
3、支持200兆左右的纹理贴图,纹理贴图不支持.tga .psd的格式。
4、几何中暂不支持Nurbs曲线、变形、动画。
5、模型由多个mesh组成的,可以设置单个mesh的高亮状态

Summary

Methods:
getBBox

计算该模型整体三维包围盒

getChildren

获取所有子节点

getHighlight

获取模型的高亮状态

getModelBBox

计算在模型坐标系中的三维包围盒

getOpacityFactor

获取模型的透明因子。

offClick

取消要素注册的单击事件。

offHover

取消要素注册的Hover(滑入滑出)事件。

onClick

注冊白模的单击事件,需调用map.enableInteractive()开启点和白模的交互行为才有效。

onHover

注冊fbx模型的Hover事件,需调用map.enableInteractive()开启点和白模的交互行为才有效。

readModelAndInitIndexedDB

返回读取模型并初始化indexedDB的promise

resetOrigin

校正原点,将整个模型的bbox某一个面(xoy,xoz,yox)的中心点校正到建模的原点。

setHighlight

模型整体高亮或者取消高亮,(单个Mesh高亮,请直接使用mesh#setHighlight)

setOpacityFactor

设置透明因子,即:模型每个部分的透明度基数*透明因子=渲染的透明值。

setPosition

设置模型位置,即设置模型原点在地图上的地理坐标。

setRotate

相对于模型之前位置的旋转量。

setScale

相对于模型之前大小的缩放量。

setTranslate

相对于模型之前位置的平移量。

Constructor

new FbxModel(fileUrl, options)

Parameters:
Name Type Description
fileUrl String

模型文件的地址。

options Object
Name Type Description
directionLight module:light~DirectionLight

平行光对象,包括光的颜色和方向

pointLight module:light~PointLight

点光源对象,包括光的颜色和光源位置

ambientLight module:light~AmbientLight

环境光对象

useCustomMaterial Boolean

是否使用自定义材质,默认值为false,当值为true的时候提供默认的自定义材质

customMaterial module:style~Material

自定义材质,默认值为new hmap.style.Material()

useCustomLight Boolean

是否强制使用自定义光源,默认关闭,优先使用模型自带光源,若开启会强制使用用户光源数据

heightInMeter Number

FbxModel设置平移时,高度上是否以米为单位,在地图的坐标系为"4326"的情况下,默认为false

Example
let model = new hmap.model.FbxModel('../public/fbxData/nanjing.fbx');

Methods

getBBox() → {module:basetype~BBox}

计算该模型整体三维包围盒

Returns:
module:basetype~BBox -

该模型整体三维包围盒

getChildren() → {Array.<FbxMesh>}

获取所有子节点

Returns:
Array.<FbxMesh>

getHighlight() → {Boolean}

获取模型的高亮状态

Returns:
Boolean -

是否高亮

getModelBBox() → {module:basetype~BBox}

计算在模型坐标系中的三维包围盒

Returns:
module:basetype~BBox -

该模型整体三维包围盒

getOpacityFactor() → {Number}

获取模型的透明因子。

Returns:
Number -

透明因子

Example
let opacityFactor = model.getOpacityFactor();

offClick()

取消要素注册的单击事件。

offHover()

取消要素注册的Hover(滑入滑出)事件。

onClick(callback)

注冊白模的单击事件,需调用map.enableInteractive()开启点和白模的交互行为才有效。

Parameters:
Name Type Description
callback

回调处理函数,参数是event对象,event.feature 可以取到要素本身及mesh构成的数组。 event.lonlat可以取到点击位置的经纬度,event.mapPixel可以去到像素位置

onHover(mouseoverCallback, mouseOutCallback)

注冊fbx模型的Hover事件,需调用map.enableInteractive()开启点和白模的交互行为才有效。

Parameters:
Name Type Description
mouseoverCallback

回调处理函数,参数是event对象,event.feature 可以取到要素本身及mesh构成的数组。event.lonlat可以取到点击位置的经纬度,event.mapPixel可以去到像素位置

mouseOutCallback

回调处理函数,参数是event对象,event.feature 可以取到要素本身及mesh构成的数组。event.lonlat可以取到点击位置的经纬度,event.mapPixel可以去到像素位置

readModelAndInitIndexedDB() → {Promise}

返回读取模型并初始化indexedDB的promise

Returns:
Promise

resetOrigin(up)

校正原点,将整个模型的bbox某一个面(xoy,xoz,yox)的中心点校正到建模的原点。

Parameters:
Name Type Description
up String

模型的上方向,取值范围为X,Y,Z或者为空,默认为空,会将模型bbox的中心点校正到建模坐标的原点。默认值为空为了兼容以前版本,很多模型在导出时会选择上方向为'Y',当模型展示异常时可以尝试上方向为'Y'.

setHighlight(flag, color)

模型整体高亮或者取消高亮,(单个Mesh高亮,请直接使用mesh#setHighlight)

Parameters:
Name Type Description
flag Boolean

设置高亮状态,true为高亮,false取消高亮

color Color

设置高亮颜色,默认为Color(255,0,0,1)

setOpacityFactor(opacityFactor)

设置透明因子,即:模型每个部分的透明度基数*透明因子=渲染的透明值。

Parameters:
Name Type Description
opacityFactor Number

透明因子,范围[0,1]。

Example
model.setOpacityFactor(0.8);

setPosition(positionX, positionY, positionZ) → {module:model~FbxModel}

设置模型位置,即设置模型原点在地图上的地理坐标。

Parameters:
Name Type Description
positionX Number

X值

positionY Number

Y值

positionZ Number

Z值

Returns:
module:model~FbxModel -

模型对象

Example
model.setPosition(120, 30, 0);

setRotate(rotateX, rotateY, rotateZ) → {module:model~FbxModel}

相对于模型之前位置的旋转量。

Parameters:
Name Type Description
rotateX Number

X轴旋转分量

rotateY Number

Y轴旋转分量

rotateZ Number

Z轴旋转分量

Returns:
module:model~FbxModel -

模型对象

Example
model.setRotate(90, 0, 0);

setScale(scaleX, scaleY, scaleZ) → {module:model~FbxModel}

相对于模型之前大小的缩放量。

Parameters:
Name Type Description
scaleX Number

X轴缩放分量

scaleY Number

Y轴缩放分量

scaleZ Number

Z轴缩放分量

Returns:
module:model~FbxModel -

模型对象

Example
model.setScale(0.00001, 0.00001, 0.00001);

setTranslate(translateX, translateY, translateZ) → {module:model~FbxModel}

相对于模型之前位置的平移量。

Parameters:
Name Type Description
translateX Number

X轴平移分量

translateY Number

Y轴平移分量

translateZ Number

Z轴平移分量

Returns:
module:model~FbxModel -

模型对象

Example
model.setTranslate(120, 30, 0);