Meta
Meta
继承自 EventEmitter ,是数字孪生 SDK
最重要 的对象,负责 Camera
、Scene
、Renderer
等对象的初始化以及提供常见操作的快捷方法。
属性
container
容器
类型:
HTMLElement
说明: HTML 元素,用于绘制三维场景的容器
注:在调用 amount( ) 后有值
component
根组件实例
类型:
Component<WebglModel> | undefined
- 参考: Component
说明: 组件实例引用,包括了对子组件的查询、过滤、添加、删除等方法
注:三维场景通过组件把所有模型组装成一个树状结构,通过组件本身以及树状结构的操作,可管理场景中的模型
model
根模型实例
类型:
WebglModel | undefined
- 参考: WebglModel
说明: 模型实例引用,其中包括了对子模型的控制,如:旋转、选中、禁用等方法
注:模型属于三维场景中更底层的对象,属于 three.js 中 Object3D 的一个扩展实例,通过该实例可对模型本身进行操作
renderer
渲染器实例
类型:
WebglRenderer
- 参考: WebglRenderder
说明: 基于 three.js 的 Renderer 实例,用于渲染器相关的配置
scene
场景实例
类型:
WebglScene
- 参考: WebglScene
说明: 基于 three.js 的 Scene 实例,用于场景相关的配置
camera
相机实例
类型:
WebglCamera
- 参考: WebglCamera
说明:基于 three.js 的 PerspectiveCamera 实例,用于控制相机
plugin
插件实例
类型:
Plugin
说明: 插件实例引用,用于挂载插件 或 管理已经挂载到 meta 上的插件
方法
render( )
渲染指定的模型场景
//webgl
function render: (modelUrl: string, useMapping?: boolean) => Promise<Component<WebglModel>>
//unity
function render: (spaceId?: string, freshMapping: boolean) => Promise<Component<UnityModel>>
参数
modelUrl:
模型地址spaceId:
空间IdfreshMapping:
刷新映射,默认 falseuseMapping:
是否使用映射,默认 false
返回值
Promise<Component<WebglModel>>:
组件实例- 参考:Component
示例
...省略获取meta实例的步骤...
meta.render("模型地址", true).then((component) => {
console.log(component);
});
webgl v4.1.6
compile( )预编译指定的模型场景
function compile: (modelUrl: string,useMapping: boolean = false,force: boolean = false) => Promise<Object3D>
参数
modelUrl:
模型地址useMapping:
是否使用映射,默认 falseforce:
是否强制重新编译
返回值
Promise<Object3D>:
组件实例- 参考:Object3D
示例
...省略获取meta实例的步骤...
meta.compile("模型地址", true, true).then((component) => {
console.log(component);
});
amount( )
挂载场景,指定三维场景在页面上的渲染位置
注意
在老的版本中如果已经挂载过,则 不允许 再次调用。如有重复挂载的场景,请升级至最新版的
function amount: (el: string | HTMLElement) => void
参数
el:
HTML元素的 id ,用于绘制三维场景的容器
返回值
- 无
示例
...省略获取meta实例的步骤...
meta.amount("three-container");
unity v4.1.0
reset( )function reset: async () => Promise<void>
参数
- 无
返回值
Promise<void>
示例
...省略获取meta实例的步骤...
meta.reset();
dispose( )
销毁根组件、渲染器、加载器、插件
注意
为防止内存溢出,该方法需要在页面切换的时机,或其它任何不再显示三维场景时进行调用
function dispose: () => void
参数
- 无
返回值
- 无
示例
...省略获取meta实例的步骤...
meta.dispose();
webgl v4.1.6
loadOption( )挂载场景,指定三维场景在页面上的渲染位置
注意
如果已经挂载过,则 不允许 再次调用
function loadOption: (url: string) => Promise<Options>
参数
url:
模型地址
返回值
Promise<Options>:
配置- 参考:Options
示例
...省略获取meta实例的步骤...
meta.loadOption(FloorMap.floor1).then(option => console.log(option));
createComponent( ) <badge text="webgl/>
动态创建一个组件实例
function createComponent: async (options: Partial<Options> | string, url?: string) => Promise<Component<WebglModel>>
参数
options:
组件配置参数,也可以只传一个模型 url- 参考: Options
url:
v4.1.6 当在当前场景中渲染从 meta.json 渲染某一个空间时,请指定该参数,主要用来确保渲染的模型的位置与模型搭建时的位置保持一致
返回值
Promise<Component<WebglModel>>:
组件- 参考: Component
示例
...省略获取meta实例的步骤...
meta.createComponent("模型地址 / 组件配置参数").then((component: any) => {
meta.add(component);
})
search( )
根据 类型 搜索组件
function search: (type: string, shallow?: boolean) => ComponentGroup<DTModel>;
参数
type:
组件真实类型- 参考: Component.type
shallow:
v4.1.0 浅层搜索,默认为 true ,只在当前空间下搜索; 若传入 false ,则会在所有空间下搜索- 注意: 该参数只在 Unity 引擎中生效
返回值
ComponentGroup<DTModel>:
组件组实例- 参考: ComponentGroup
示例
...省略获取meta实例的步骤...
const component = meta.search("Type");
get( )
根据 id 获取组件
function get: (id: string, shallow?: boolean) => Component<DTModel> | undefined;
参数
id:
模型 id 或 业务 id(业务 id: IOT 设备 id ,数字空间 id 等)shallow:
v4.1.0 浅层搜索,默认为 true ,只在当前空间下搜索; 若传入 false ,则会在所有空间下搜索- 注意: 该参数只在 Unity 引擎中生效
返回值
component:
组件实例- 参考: Component
示例
...省略获取meta实例的步骤...
const component = meta.get("ModelId");
filter( )
自定义筛选组件
function filter: (callback: (component: Component<DTModel>) => boolean, shallow?: boolean) => ComponentGroup<DTModel>;
参数
callback:
筛选规则回调函数shallow:
v4.1.0 浅层筛选,默认为 true ,只在当前空间下筛选; 若传入 false ,则会在所有空间下筛选- 注意: 该参数只在 Unity 引擎中生效
返回值
ComponentGroup:
组件组实例- 参考: ComponentGroup
示例
...省略获取meta实例的步骤...
const component = meta.filter((child: any) => {
if (child.type === "Type") return child;
});
add( )
向场景中添加一个模型
function add: (child: Component<DTModel>) => Promise<void>;
参数
child:
需要添加的组件实例
返回值
Promise<void>
示例
...省略获取meta实例的步骤...
meta.createComponent("模型地址").then((component) => {
meta.add(componnet);
});
remove( )
从场景中移除对应的模型
function remove: (child: Component<DTModel>) => Promise<void>;
参数
child:
需要移除的组件实例
返回值
Promise<void>
示例
...省略获取meta实例的步骤...
const component = meta.get("ModelId");
meta.remove(component);
webgl
clear( )清空场景
function clear: async () => Promise<void>;
参数
- 无
返回值
Promise<void>
示例
...省略获取meta实例的步骤...
meta.clear();