Skip to content

Interface: ModelManager

Defined in: packages/viewer-core/src/public/managers/ModelManager.ts:46

模型加载与节点级外观控制 manager。

职责域:.fmbv 模型的加载 / 卸载、包围盒与结构树元数据查询 (getNodeInfo / iterateNodes / findNodesByName)、节点与面组的 颜色 / 可见性 / 高亮覆盖。典型入口:load() 加载模型,随后经 getRootNodeId() 遍历结构树,用 setNodesColor() / setNodesVisibility() 调整外观。

Remarks

经 Viewer 实例上的 viewer.model 访问,不要直接构造。

Accessors

isLoaded

Get Signature

get isLoaded(): boolean

Defined in: packages/viewer-core/src/public/managers/ModelManager.ts:68

当前是否已有模型加载完成(骨架就绪即为 true)。

Returns

boolean


loadProgress

Get Signature

get loadProgress(): object

Defined in: packages/viewer-core/src/public/managers/ModelManager.ts:74

当前加载进度快照:skeleton 骨架是否就绪、geomReady/geomTotal 几何 LOD 分块的已到达数 / 总数。

Returns

object

geomReady

geomReady: number

geomTotal

geomTotal: number

skeleton

skeleton: boolean

Methods

findNodesByName()

findNodesByName(name): readonly NodeId[]

Defined in: packages/viewer-core/src/public/managers/ModelManager.ts:225

按名称精确匹配查找节点(同名节点全部返回);无匹配或未加载返回空数组。

Parameters

name

string

Returns

readonly NodeId[]


getBoundingBox()

getBoundingBox(): Box3 | null

Defined in: packages/viewer-core/src/public/managers/ModelManager.ts:143

取整个模型的世界坐标轴对齐包围盒;未加载返回 null。

Returns

Box3 | null


getBoundingSphere()

getBoundingSphere(): BoundingSphere | null

Defined in: packages/viewer-core/src/public/managers/ModelManager.ts:149

取由包围盒推导的模型包围球(球心 = 盒中心,半径 = 到角点距离);未加载返回 null。

Returns

BoundingSphere | null


getFaceGroupColor()

getFaceGroupColor(id, fg): Color | null

Defined in: packages/viewer-core/src/public/managers/ModelManager.ts:275

取面组当前的覆盖颜色;未设置过返回 null。

Parameters

id

NodeId

fg

FaceGroupId

Returns

Color | null


getHighlightedNodeIds()

getHighlightedNodeIds(): readonly NodeId[]

Defined in: packages/viewer-core/src/public/managers/ModelManager.ts:333

取当前处于高亮状态的节点 id 列表;未加载返回空数组。

Returns

readonly NodeId[]


getLeafNodeIds()

getLeafNodeIds(): readonly NodeId[]

Defined in: packages/viewer-core/src/public/managers/ModelManager.ts:219

取全部叶子节点(带几何 meshId 的节点)id 列表;未加载返回空数组。

Returns

readonly NodeId[]


getNodeColor()

getNodeColor(id): Color | null

Defined in: packages/viewer-core/src/public/managers/ModelManager.ts:256

取节点当前的覆盖颜色;未设置过返回 null。

Parameters

id

NodeId

Returns

Color | null


getNodeInfo()

getNodeInfo(id): NodeInfo | null

Defined in: packages/viewer-core/src/public/managers/ModelManager.ts:169

取单个节点的结构信息(名称 / 父子关系 / 包围盒 / meshId 等);id 不存在或未加载返回 null。

Parameters

id

NodeId

Returns

NodeInfo | null


getNodeMaterial()

getNodeMaterial(id): MaterialInfo | null

Defined in: packages/viewer-core/src/public/managers/ModelManager.ts:175

取节点关联的材质信息(由 materials payload 解析);无材质或未加载返回 null。

Parameters

id

NodeId

Returns

MaterialInfo | null


getNodeOpacity()

getNodeOpacity(_id): number

Defined in: packages/viewer-core/src/public/managers/ModelManager.ts:364

取节点透明度 — v2 前恒返回 1(不透明)。

Parameters

_id

NodeId

Returns

number


getNodeProperties()

getNodeProperties(id): Promise<readonly NodeProperty[]>

Defined in: packages/viewer-core/src/public/managers/ModelManager.ts:189

取节点业务属性(按需:首次调用按节点 offset 发一次 range 请求,memoize)。 无属性 / 无 ATTRIBUTES chunk / 未加载 → 返回 []。

Parameters

id

NodeId

Returns

Promise<readonly NodeProperty[]>


getNodeVisibility()

getNodeVisibility(id): boolean

Defined in: packages/viewer-core/src/public/managers/ModelManager.ts:314

查询节点当前是否可见;未加载时按默认可见返回 true。

Parameters

id

NodeId

Returns

boolean


getRootNodeId()

getRootNodeId(): NodeId | null

Defined in: packages/viewer-core/src/public/managers/ModelManager.ts:163

取结构树根节点 id;未加载返回 null。

Returns

NodeId | null


isolateNodes()

isolateNodes(ids): void

Defined in: packages/viewer-core/src/public/managers/ModelManager.ts:304

Isolate:恰好显示 ids(装配自动展开为子树),其余叶子隐藏;保留集内 先前隐藏的叶子复显。ids 为空数组时静默 no-op。 实际发生变化时触发 visibility-changed

Parameters

ids

readonly NodeId[]

Returns

void


iterateNodes()

iterateNodes(visitor): void

Defined in: packages/viewer-core/src/public/managers/ModelManager.ts:213

自根节点深度优先遍历结构树,对每个节点调用 visitor。 visitor 返回 false 时跳过该节点的子树(剪枝),继续遍历其余分支。

Parameters

visitor

(info) => boolean | void

Returns

void


load()

load(source): Promise<void>

Defined in: packages/viewer-core/src/public/managers/ModelManager.ts:91

加载 .fmbv 模型数据(URL / Uint8Array / Blob / 自定义 fetcher)并开始渐进渲染。

触发 model-loading,骨架(结构树 + 索引)就绪并触发 model-skeleton-ready 后本 Promise resolve;几何 LOD 分块在后台继续流式加载,期间触发 model-geom-progress,全部到达后触发 model-loaded。 再次调用会先卸载当前模型(触发 model-disposed)并取消未完成的旧加载。 失败时抛 ViewerError(InvalidModelSource / NetworkFailed / Cancelled 等)。

Parameters

source

ModelSource

Returns

Promise<void>


resetFaceGroupColors()

resetFaceGroupColors(): void

Defined in: packages/viewer-core/src/public/managers/ModelManager.ts:281

清除所有面组级覆盖颜色。

Returns

void


resetHighlight()

resetHighlight(): void

Defined in: packages/viewer-core/src/public/managers/ModelManager.ts:327

清除所有节点高亮。

Returns

void


resetNodesColor()

resetNodesColor(): void

Defined in: packages/viewer-core/src/public/managers/ModelManager.ts:250

清除所有节点级覆盖颜色。

Returns

void


resetNodesOpacity()

resetNodesOpacity(): void

Defined in: packages/viewer-core/src/public/managers/ModelManager.ts:358

重置节点透明度 — v2 才提供,当前调用必抛 ViewerError

Returns

void


resetNodesVisibility()

resetNodesVisibility(): void

Defined in: packages/viewer-core/src/public/managers/ModelManager.ts:294

重置所有节点可见性(全部恢复显示);实际发生变化时触发 visibility-changed

Returns

void


setFaceGroupColor()

setFaceGroupColor(id, fg, color): void

Defined in: packages/viewer-core/src/public/managers/ModelManager.ts:263

给节点内单个面组设置覆盖颜色(粒度细于节点级染色)。

Parameters

id

NodeId

fg

FaceGroupId

color

Color

Returns

void


setHighlightColor()

setHighlightColor(color): void

Defined in: packages/viewer-core/src/public/managers/ModelManager.ts:339

设置高亮染色所用的颜色。

Parameters

color

Color

Returns

void


setNodesColor()

setNodesColor(ids, color): void

Defined in: packages/viewer-core/src/public/managers/ModelManager.ts:232

给一组节点设置覆盖颜色(不改原始材质,可经 unset / reset 撤销);未加载抛 ModelNotLoaded

Parameters

ids

readonly NodeId[]

color

Color

Returns

void


setNodesColors()

setNodesColors(map): void

Defined in: packages/viewer-core/src/public/managers/ModelManager.ts:238

按映射批量设置节点覆盖颜色(每节点各自一色)。

Parameters

map

ReadonlyMap<NodeId, Color>

Returns

void


setNodesHighlighted()

setNodesHighlighted(ids, on): void

Defined in: packages/viewer-core/src/public/managers/ModelManager.ts:321

程序化设置一组节点的高亮染色(与交互选中走同一外观高亮通道)。

Parameters

ids

readonly NodeId[]

on

boolean

Returns

void


setNodesOpacity()

setNodesOpacity(_ids, _opacity): void

Defined in: packages/viewer-core/src/public/managers/ModelManager.ts:346

节点透明度设置 — v2 才提供,当前调用必抛 ViewerError

Parameters

_ids

readonly NodeId[]

_opacity

number

Returns

void


setNodesVisibility()

setNodesVisibility(ids, visible): void

Defined in: packages/viewer-core/src/public/managers/ModelManager.ts:288

设置一组节点的显示 / 隐藏;实际发生变化时触发 visibility-changed

Parameters

ids

readonly NodeId[]

visible

boolean

Returns

void


unload()

unload(): void

Defined in: packages/viewer-core/src/public/managers/ModelManager.ts:126

卸载当前模型并清空场景,触发 model-disposed;未加载时静默返回。

Returns

void


unsetFaceGroupColor()

unsetFaceGroupColor(id, fg): void

Defined in: packages/viewer-core/src/public/managers/ModelManager.ts:269

撤销单个面组的覆盖颜色。

Parameters

id

NodeId

fg

FaceGroupId

Returns

void


unsetNodesColor()

unsetNodesColor(ids): void

Defined in: packages/viewer-core/src/public/managers/ModelManager.ts:244

撤销指定节点的覆盖颜色,恢复原始材质色。

Parameters

ids

readonly NodeId[]

Returns

void


unsetNodesOpacity()

unsetNodesOpacity(_ids): void

Defined in: packages/viewer-core/src/public/managers/ModelManager.ts:352

撤销节点透明度 — v2 才提供,当前调用必抛 ViewerError

Parameters

_ids

readonly NodeId[]

Returns

void