Meta

Meta 继承自 EventEmitter ,是数字孪生 SDK 最重要 的对象,负责 CameraSceneRenderer 等对象的初始化以及提供常见操作的快捷方法。

属性

container

容器

  • 类型: HTMLElement

  • 说明: HTML 元素,用于绘制三维场景的容器

  • 注:在调用 amount( ) 后有值

component

根组件实例

  • 类型: Component<WebglModel> | undefined

  • 说明: 组件实例引用,包括了对子组件的查询、过滤、添加、删除等方法

  • 注:三维场景通过组件把所有模型组装成一个树状结构,通过组件本身以及树状结构的操作,可管理场景中的模型

model

根模型实例

  • 类型: WebglModel | undefined

  • 说明: 模型实例引用,其中包括了对子模型的控制,如:旋转、选中、禁用等方法

  • 注:模型属于三维场景中更底层的对象,属于 three.js 中 Object3Dopen in new window 的一个扩展实例,通过该实例可对模型本身进行操作

renderer

渲染器实例

scene

场景实例

camera

相机实例

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>>: 组件实例

  • 示例

...省略获取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: 是否强制重新编译

  • 返回值

  • 示例

...省略获取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>
...省略获取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

    • url: v4.1.6 当在当前场景中渲染从 meta.json 渲染某一个空间时,请指定该参数,主要用来确保渲染的模型的位置与模型搭建时的位置保持一致

  • 返回值

    • Promise<Component<WebglModel>>: 组件

  • 示例

...省略获取meta实例的步骤...

meta.createComponent("模型地址 / 组件配置参数").then((component: any) => {
  meta.add(component);
})

根据 类型 搜索组件

function search: (type: string, shallow?: boolean) => ComponentGroup<DTModel>;
  • 参数

    • type: 组件真实类型

    • shallow: v4.1.0 浅层搜索,默认为 true ,只在当前空间下搜索; 若传入 false ,则会在所有空间下搜索

      • 注意: 该参数只在 Unity 引擎中生效
  • 返回值

  • 示例

...省略获取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 引擎中生效
  • 返回值

  • 示例

...省略获取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 引擎中生效
  • 返回值

  • 示例

...省略获取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();
上次更新:
贡献者: zhengqian, yangxun, 黄睿, yanhao, jiangtao, yanhao