xref: /interface/sdk-js/api/graphics3d/Scene.d.ts (revision 61847f8e)
161847f8eSopenharmony_ci/*
261847f8eSopenharmony_ci * Copyright (c) 2024-2024 Huawei Device Co., Ltd.
361847f8eSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
461847f8eSopenharmony_ci * you may not use this file except in compliance with the License.
561847f8eSopenharmony_ci * You may obtain a copy of the License at
661847f8eSopenharmony_ci *
761847f8eSopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
861847f8eSopenharmony_ci *
961847f8eSopenharmony_ci * Unless required by applicable law or agreed to in writing, software
1061847f8eSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
1161847f8eSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1261847f8eSopenharmony_ci * See the License for the specific language governing permissions and
1361847f8eSopenharmony_ci * limitations under the License.
1461847f8eSopenharmony_ci */
1561847f8eSopenharmony_ci
1661847f8eSopenharmony_ci/**
1761847f8eSopenharmony_ci * @file Defines 3D scene related interfaces
1861847f8eSopenharmony_ci * @kit ArkGraphics3D
1961847f8eSopenharmony_ci */
2061847f8eSopenharmony_ci
2161847f8eSopenharmony_ciimport { Shader, MaterialType, Material, Animation, Environment, Image } from './SceneResources';
2261847f8eSopenharmony_ciimport { Camera, LightType, Light, Node, NodeType } from './SceneNodes';
2361847f8eSopenharmony_ci
2461847f8eSopenharmony_ci/**
2561847f8eSopenharmony_ci * The scene resource parameters type.
2661847f8eSopenharmony_ci *
2761847f8eSopenharmony_ci * @typedef SceneResourceParameters
2861847f8eSopenharmony_ci * @syscap SystemCapability.ArkUi.Graphics3D
2961847f8eSopenharmony_ci * @since 12
3061847f8eSopenharmony_ci */
3161847f8eSopenharmony_ciexport interface SceneResourceParameters {
3261847f8eSopenharmony_ci  /**
3361847f8eSopenharmony_ci   * The name of the scene resource parameters.
3461847f8eSopenharmony_ci   *
3561847f8eSopenharmony_ci   * @type { string }
3661847f8eSopenharmony_ci   * @syscap SystemCapability.ArkUi.Graphics3D
3761847f8eSopenharmony_ci   * @since 12
3861847f8eSopenharmony_ci   */
3961847f8eSopenharmony_ci  name: string;
4061847f8eSopenharmony_ci
4161847f8eSopenharmony_ci  /**
4261847f8eSopenharmony_ci   * The resource uri of the scene resource parameters.
4361847f8eSopenharmony_ci   *
4461847f8eSopenharmony_ci   * @type { ?ResourceStr }
4561847f8eSopenharmony_ci   * @syscap SystemCapability.ArkUi.Graphics3D
4661847f8eSopenharmony_ci   * @since 12
4761847f8eSopenharmony_ci   */
4861847f8eSopenharmony_ci  uri?: ResourceStr;
4961847f8eSopenharmony_ci}
5061847f8eSopenharmony_ci
5161847f8eSopenharmony_ci/**
5261847f8eSopenharmony_ci * The scene node parameters type.
5361847f8eSopenharmony_ci *
5461847f8eSopenharmony_ci * @typedef SceneNodeParameters
5561847f8eSopenharmony_ci * @syscap SystemCapability.ArkUi.Graphics3D
5661847f8eSopenharmony_ci * @since 12
5761847f8eSopenharmony_ci */
5861847f8eSopenharmony_ciexport interface SceneNodeParameters {
5961847f8eSopenharmony_ci  /**
6061847f8eSopenharmony_ci   * The name of the scene node parameters.
6161847f8eSopenharmony_ci   *
6261847f8eSopenharmony_ci   * @type { string }
6361847f8eSopenharmony_ci   * @syscap SystemCapability.ArkUi.Graphics3D
6461847f8eSopenharmony_ci   * @since 12
6561847f8eSopenharmony_ci   */
6661847f8eSopenharmony_ci  name: string;
6761847f8eSopenharmony_ci
6861847f8eSopenharmony_ci  /**
6961847f8eSopenharmony_ci   * The path of the scene node parameters.
7061847f8eSopenharmony_ci   *
7161847f8eSopenharmony_ci   * @type { ?string }
7261847f8eSopenharmony_ci   * @syscap SystemCapability.ArkUi.Graphics3D
7361847f8eSopenharmony_ci   * @since 12
7461847f8eSopenharmony_ci   */
7561847f8eSopenharmony_ci  path?: string;
7661847f8eSopenharmony_ci}
7761847f8eSopenharmony_ci
7861847f8eSopenharmony_ci/**
7961847f8eSopenharmony_ci * The scene resource factory.
8061847f8eSopenharmony_ci *
8161847f8eSopenharmony_ci * @interface SceneResourceFactory
8261847f8eSopenharmony_ci * @syscap SystemCapability.ArkUi.Graphics3D
8361847f8eSopenharmony_ci * @since 12
8461847f8eSopenharmony_ci */
8561847f8eSopenharmony_ciexport interface SceneResourceFactory {
8661847f8eSopenharmony_ci  /**
8761847f8eSopenharmony_ci   * Create a camera.
8861847f8eSopenharmony_ci   *
8961847f8eSopenharmony_ci   * @param { SceneNodeParameters } params - the param of creating a camera
9061847f8eSopenharmony_ci   * @returns { Promise<Camera> } promise a camera
9161847f8eSopenharmony_ci   * @syscap SystemCapability.ArkUi.Graphics3D
9261847f8eSopenharmony_ci   * @since 12
9361847f8eSopenharmony_ci   */
9461847f8eSopenharmony_ci  createCamera(params: SceneNodeParameters): Promise<Camera>;
9561847f8eSopenharmony_ci
9661847f8eSopenharmony_ci  /**
9761847f8eSopenharmony_ci   * Create a light.
9861847f8eSopenharmony_ci   *
9961847f8eSopenharmony_ci   * @param { SceneNodeParameters } params - the param of creating a light
10061847f8eSopenharmony_ci   * @param { LightType } lightType - the type of the light
10161847f8eSopenharmony_ci   * @returns { Promise<Light> } promise a light
10261847f8eSopenharmony_ci   * @syscap SystemCapability.ArkUi.Graphics3D
10361847f8eSopenharmony_ci   * @since 12
10461847f8eSopenharmony_ci   */
10561847f8eSopenharmony_ci  createLight(params: SceneNodeParameters, lightType: LightType): Promise<Light>;
10661847f8eSopenharmony_ci
10761847f8eSopenharmony_ci  /**
10861847f8eSopenharmony_ci   * Create a node.
10961847f8eSopenharmony_ci   *
11061847f8eSopenharmony_ci   * @param { SceneNodeParameters } params - the param of creating a node
11161847f8eSopenharmony_ci   * @returns { Promise<Node> } promise a node
11261847f8eSopenharmony_ci   * @syscap SystemCapability.ArkUi.Graphics3D
11361847f8eSopenharmony_ci   * @since 12
11461847f8eSopenharmony_ci   */
11561847f8eSopenharmony_ci  createNode(params: SceneNodeParameters): Promise<Node>;
11661847f8eSopenharmony_ci
11761847f8eSopenharmony_ci  /**
11861847f8eSopenharmony_ci   * Create a material.
11961847f8eSopenharmony_ci   *
12061847f8eSopenharmony_ci   * @param { SceneResourceParameters } params - the param of creating a material
12161847f8eSopenharmony_ci   * @param { MaterialType } materialType - the type of the material
12261847f8eSopenharmony_ci   * @returns { Promise<Material> } promise a material
12361847f8eSopenharmony_ci   * @syscap SystemCapability.ArkUi.Graphics3D
12461847f8eSopenharmony_ci   * @since 12
12561847f8eSopenharmony_ci   */
12661847f8eSopenharmony_ci  createMaterial(params: SceneResourceParameters, materialType: MaterialType): Promise<Material>;
12761847f8eSopenharmony_ci
12861847f8eSopenharmony_ci  /**
12961847f8eSopenharmony_ci   * Create a shader.
13061847f8eSopenharmony_ci   *
13161847f8eSopenharmony_ci   * @param { SceneResourceParameters } params - the param of creating a shader
13261847f8eSopenharmony_ci   * @returns { Promise<Shader> } promise a shader
13361847f8eSopenharmony_ci   * @syscap SystemCapability.ArkUi.Graphics3D
13461847f8eSopenharmony_ci   * @since 12
13561847f8eSopenharmony_ci   */
13661847f8eSopenharmony_ci  createShader(params: SceneResourceParameters): Promise<Shader>;
13761847f8eSopenharmony_ci
13861847f8eSopenharmony_ci  /**
13961847f8eSopenharmony_ci   * Create a image.
14061847f8eSopenharmony_ci   *
14161847f8eSopenharmony_ci   * @param { SceneResourceParameters } params - the param of creating a image
14261847f8eSopenharmony_ci   * @returns { Promise<Image> } promise a image
14361847f8eSopenharmony_ci   * @syscap SystemCapability.ArkUi.Graphics3D
14461847f8eSopenharmony_ci   * @since 12
14561847f8eSopenharmony_ci   */
14661847f8eSopenharmony_ci  createImage(params: SceneResourceParameters): Promise<Image>;
14761847f8eSopenharmony_ci
14861847f8eSopenharmony_ci  /**
14961847f8eSopenharmony_ci   * Create a environment.
15061847f8eSopenharmony_ci   *
15161847f8eSopenharmony_ci   * @param { SceneResourceParameters } params - the param of creating a Environment object
15261847f8eSopenharmony_ci   * @returns { Promise<Environment> } promise a Environment
15361847f8eSopenharmony_ci   * @syscap SystemCapability.ArkUi.Graphics3D
15461847f8eSopenharmony_ci   * @since 12
15561847f8eSopenharmony_ci   */
15661847f8eSopenharmony_ci  createEnvironment(params: SceneResourceParameters): Promise<Environment>;
15761847f8eSopenharmony_ci}
15861847f8eSopenharmony_ci
15961847f8eSopenharmony_ci/**
16061847f8eSopenharmony_ci * Defines the 3d scene.
16161847f8eSopenharmony_ci *
16261847f8eSopenharmony_ci * @syscap SystemCapability.ArkUi.Graphics3D
16361847f8eSopenharmony_ci * @since 12
16461847f8eSopenharmony_ci */
16561847f8eSopenharmony_ciexport class Scene {
16661847f8eSopenharmony_ci  /**
16761847f8eSopenharmony_ci   * Create a new scene from a ResourceStr.
16861847f8eSopenharmony_ci   *
16961847f8eSopenharmony_ci   * @param { ResourceStr } uri - the resource of creating a scene
17061847f8eSopenharmony_ci   * @returns { Promise<Scene> } promise a scene
17161847f8eSopenharmony_ci   * @static
17261847f8eSopenharmony_ci   * @syscap SystemCapability.ArkUi.Graphics3D
17361847f8eSopenharmony_ci   * @since 12
17461847f8eSopenharmony_ci   */
17561847f8eSopenharmony_ci  static load(uri? : ResourceStr): Promise<Scene>;
17661847f8eSopenharmony_ci   
17761847f8eSopenharmony_ci  /**
17861847f8eSopenharmony_ci   * The environment of the scene.
17961847f8eSopenharmony_ci   *
18061847f8eSopenharmony_ci   * @type { Environment }
18161847f8eSopenharmony_ci   * @syscap SystemCapability.ArkUi.Graphics3D
18261847f8eSopenharmony_ci   * @since 12
18361847f8eSopenharmony_ci   */
18461847f8eSopenharmony_ci  environment: Environment;
18561847f8eSopenharmony_ci  
18661847f8eSopenharmony_ci  /**
18761847f8eSopenharmony_ci   * The animations of the scene.
18861847f8eSopenharmony_ci   *
18961847f8eSopenharmony_ci   * @type { Animation[] }
19061847f8eSopenharmony_ci   * @readonly
19161847f8eSopenharmony_ci   * @syscap SystemCapability.ArkUi.Graphics3D
19261847f8eSopenharmony_ci   * @since 12
19361847f8eSopenharmony_ci   */
19461847f8eSopenharmony_ci  readonly animations: Animation[];
19561847f8eSopenharmony_ci 
19661847f8eSopenharmony_ci  /**
19761847f8eSopenharmony_ci   * The root node of the scene.
19861847f8eSopenharmony_ci   *
19961847f8eSopenharmony_ci   * @type { Node | null }
20061847f8eSopenharmony_ci   * @readonly
20161847f8eSopenharmony_ci   * @syscap SystemCapability.ArkUi.Graphics3D
20261847f8eSopenharmony_ci   * @since 12
20361847f8eSopenharmony_ci   */
20461847f8eSopenharmony_ci  readonly root: Node | null;
20561847f8eSopenharmony_ci 
20661847f8eSopenharmony_ci  /**
20761847f8eSopenharmony_ci   * Get a node by path.
20861847f8eSopenharmony_ci   *
20961847f8eSopenharmony_ci   * @param { string } path - the path of the node
21061847f8eSopenharmony_ci   * @param { NodeType } type - verify the type of node, if it does not match, return null
21161847f8eSopenharmony_ci   * @returns { Node | null } if the node is found by it's path
21261847f8eSopenharmony_ci   * @syscap SystemCapability.ArkUi.Graphics3D
21361847f8eSopenharmony_ci   * @since 12
21461847f8eSopenharmony_ci   */
21561847f8eSopenharmony_ci  getNodeByPath(path: string, type?: NodeType): Node | null;
21661847f8eSopenharmony_ci  
21761847f8eSopenharmony_ci  /**
21861847f8eSopenharmony_ci   * Get resource factory.
21961847f8eSopenharmony_ci   *
22061847f8eSopenharmony_ci   * @returns { SceneResourceFactory } if the node is found by it's path
22161847f8eSopenharmony_ci   * @syscap SystemCapability.ArkUi.Graphics3D
22261847f8eSopenharmony_ci   * @since 12
22361847f8eSopenharmony_ci   */
22461847f8eSopenharmony_ci  getResourceFactory(): SceneResourceFactory;
22561847f8eSopenharmony_ci  
22661847f8eSopenharmony_ci  /**
22761847f8eSopenharmony_ci   * Release all native scene resources. All TS references will be undefined.
22861847f8eSopenharmony_ci   *
22961847f8eSopenharmony_ci   * @syscap SystemCapability.ArkUi.Graphics3D
23061847f8eSopenharmony_ci   * @since 12
23161847f8eSopenharmony_ci   */
23261847f8eSopenharmony_ci  destroy(): void;
23361847f8eSopenharmony_ci}
234