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:空间Id
- freshMapping:刷新映射,默认 false
- useMapping:是否使用映射,默认 false
 
- 返回值 - Promise<Component<WebglModel>>:组件实例- 参考:Component
 
 
- 示例 
...省略获取meta实例的步骤...
meta.render("模型地址", true).then((component) => {
  console.log(component);
});
compile( ) webgl v4.1.6
预编译指定的模型场景
function compile: (modelUrl: string,useMapping: boolean = false,force: boolean = false) =>  Promise<Object3D>
- 参数 - modelUrl:模型地址
- useMapping:是否使用映射,默认 false
- force:是否强制重新编译
 
- 返回值 - 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");
reset( ) unity v4.1.0
function reset: async () => Promise<void>
- 参数 - 无
 
- 返回值 - Promise<void>
 
- 示例 
...省略获取meta实例的步骤...
meta.reset();
dispose( )
销毁根组件、渲染器、加载器、插件
注意
为防止内存溢出,该方法需要在页面切换的时机,或其它任何不再显示三维场景时进行调用
function dispose: () => void
- 参数 - 无
 
- 返回值 - 无
 
- 示例 
...省略获取meta实例的步骤...
meta.dispose();
loadOption( ) webgl v4.1.6
挂载场景,指定三维场景在页面上的渲染位置
注意
如果已经挂载过,则 不允许 再次调用
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);
clear( ) webgl
清空场景
function clear: async () => Promise<void>;
- 参数 - 无
 
- 返回值 - Promise<void>
 
- 示例 
...省略获取meta实例的步骤...
meta.clear();