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