1# SceneType 2<!--Kit: ArkGraphics 3D--> 3<!--Subsystem: Graphics--> 4<!--Owner: @zzhao0--> 5<!--Designer: @zdustc--> 6<!--Tester: @zhangyue283--> 7<!--Adviser: @ge-yafang--> 8 9本模块提供3D图形中常用的数据类型。 10 11> **说明:** 12> - 本模块首批接口从API version 12开始支持,后续版本的新增接口,采用上角标标记接口的起始版本。 13 14## 导入模块 15```ts 16import { Vec2, Vec3, Vec4, Quaternion, Aabb, Color, Rect, GeometryType, PrimitiveTopology, CustomGeometry, CubeGeometry, PlaneGeometry, SphereGeometry, Position3, Rotation3, Scale3 } from '@kit.ArkGraphics3D'; 17``` 18 19## Vec2 20二维向量,通常用于表示2D空间中的点或方向,由x和y两个分量组成。 21 22**系统能力:** SystemCapability.ArkUi.Graphics3D 23| 名称 | 类型 | 只读 | 可选 | 说明 | 24| ---- | ---- | ---- | ---- | ---- | 25| x | number | 否 | 否 | x轴分量,取值范围是实数。 | 26| y | number | 否 | 否 | y轴分量,取值范围是实数。| 27 28## Vec3 29三维向量,通常用于表示3D空间中的点、方向或向量变换,由x、y和z三个分量组成。 30 31**系统能力:** SystemCapability.ArkUi.Graphics3D 32| 名称 | 类型 | 只读 | 可选 | 说明 | 33| ---- | ---- | ---- | ---- | ---- | 34| x | number | 否 | 否 | x轴分量,取值范围是实数。 | 35| y | number | 否 | 否 | y轴分量,取值范围是实数。 | 36| z | number | 否 | 否 | z轴分量,取值范围是实数。 | 37 38## Vec4 39四维向量,通常用于表示4D空间中的点、方向或向量变换,由x、y、z和w四个分量组成,增加第四个分量为各种计算和变换增加了规整性和便捷性。 40 41**系统能力:** SystemCapability.ArkUi.Graphics3D 42| 名称 | 类型 | 只读 | 可选 | 说明 | 43| ---- | ---- | ---- | ---- | ---- | 44| x | number | 否 | 否 | x轴分量,取值范围是实数。 | 45| y | number | 否 | 否 | y轴分量,取值范围是实数。 | 46| z | number | 否 | 否 | z轴分量,取值范围是实数。 | 47| w | number | 否 | 否 | w轴分量,取值范围是实数。 | 48 49## Quaternion 50用于表示3D空间中旋转的数学结构。与传统的欧拉角相比,四元数在数值稳定性和避免万向节锁方面具有优势。 51 52**系统能力:** SystemCapability.ArkUi.Graphics3D 53| 名称 | 类型 | 只读 | 可选 | 说明 | 54| ---- | ---- | ---- | ---- | ---- | 55| x | number | 否 | 否 | x轴分量,取值范围是实数。 | 56| y | number | 否 | 否 | y轴分量,取值范围是实数。 | 57| z | number | 否 | 否 | z轴分量,取值范围是实数。 | 58| w | number | 否 | 否 | w轴分量,取值范围是实数。 | 59 60## Aabb 61轴对齐边界盒,主要用于判断空间中的物体是否重叠。 62 63**系统能力:** SystemCapability.ArkUi.Graphics3D 64| 名称 | 类型 | 只读 | 可选 | 说明 | 65| ---- | ---- | ---- | ---- | ---- | 66| aabbMin | [Vec3](#vec3) | 否 | 否 | 轴对齐边界盒的小值点。 | 67| aabbMax | [Vec3](#vec3) | 否 | 否 | 轴对齐边界盒的大值点。 | 68 69## Color 70用于表示RGBA格式的颜色,包含四个分量,依次为红色、绿色、蓝色和透明度。 71 72**系统能力:** SystemCapability.ArkUi.Graphics3D 73| 名称 | 类型 | 只读 | 可选 | 说明 | 74| ---- | ---- | ---- | ---- | ---- | 75| r | number | 否 | 否 | 红色分量,取值范围是[0, 1]。 | 76| g | number | 否 | 否 | 绿色分量,取值范围是[0, 1]。 | 77| b | number | 否 | 否 | 蓝色分量,取值范围是[0, 1]。 | 78| a | number | 否 | 否 | 透明度分量,取值范围是[0, 1]。 | 79 80## Rect 81用于表示平面中的矩形。 82 83**系统能力:** SystemCapability.ArkUi.Graphics3D 84| 名称 | 类型 | 只读 | 可选 | 说明 | 85| ---- | ---- | ---- | ---- | ---- | 86| x | number | 否 | 否 | 矩形左下角x轴分量,单位为所属坐标系的单位长度,取值为任意实数,具体范围依赖场景坐标系设置。 | 87| y | number | 否 | 否 | 矩形左下角y轴分量,单位为所属坐标系的单位长度,取值为任意实数,具体范围依赖场景坐标系设置。 | 88| width | number | 否 | 否 | 矩形宽度,单位为所属坐标系的单位长度,有效取值范围大于0。 | 89| height | number | 否 | 否 | 矩形高度,单位为所属坐标系的单位长度,有效取值范围大于0。 | 90## GeometryType<sup>18+</sup> 91几何类型枚举,用于指定不同的几何类型。 92 93**系统能力:** SystemCapability.ArkUi.Graphics3D 94 95| 名称 | 值 | 说明 | 96| ---- | ---- | ---- | 97| CUSTOM | 0 | 自定义几何体类型。 | 98| CUBE | 1 | 立方体类型。 | 99| PLANE | 2 | 平面类型。 | 100| SPHERE | 3 | 球体类型。 | 101 102## GeometryDefinition<sup>18+</sup> 103几何类型定义抽象类,用于解释特定几何类型的属性。 104 105**系统能力:** SystemCapability.ArkUi.Graphics3D 106| 名称 | 类型 | 只读 | 可选 | 说明 | 107| ---- | ---- | ---- | ---- | ---- | 108| geometryType | [GeometryType](#geometrytype18)| 是 | 否 | 定义不同的几何类型。 | 109 110## PrimitiveTopology<sup>18+</sup> 111 图元拓扑枚举,在顶点处理过程中,指定顶点的不同处理方式。 112 113**系统能力:** SystemCapability.ArkUi.Graphics3D 114 115| 名称 | 值 | 说明 | 116| ---- | ---- | ---- | 117| TRIANGLE_LIST | 0 | 由不相交的顶点集合构成不同的三角形。 | 118| TRIANGLE_STRIP | 1 | 每个顶点和前一个三角形的一条边构成新的三角形。 | 119 120## CustomGeometry<sup>18+</sup> 121自定义几何类型,继承自[GeometryDefinition](#geometrydefinition18)。 122 123**系统能力:** SystemCapability.ArkUi.Graphics3D 124 125| 名称 | 类型 | 只读 | 可选 | 说明 | 126| ---- | ---- | ---- | ---- | ---- | 127| topology | [PrimitiveTopology](#primitivetopology18)| 否 | 是 | 三角形图元的解析方式,默认值为TRIANGLE_LIST。 | 128| vertices | [Vec3](#vec3)[] | 否 | 否 | 模型的顶点数组。 | 129| indices | number[] | 否 | 是 | 顶点索引数组,数组中元素的取值范围大于等于0,默认值为undefined。 | 130| normals | [Vec3](#vec3)[] | 否 | 是 | 顶点数组对应的法向量数组,默认值为undefined。 | 131| uvs | [Vec2](#vec2)[] | 否 | 是 | 顶点数组对应的UV坐标数组,默认值为undefined。 | 132| colors | [Color](#color)[] | 否 | 是 | 顶点数组对应的颜色数组,默认值为undefined。 | 133 134## CubeGeometry<sup>18+</sup> 135立方体几何类型,继承自[GeometryDefinition](#geometrydefinition18)。 136 137**系统能力:** SystemCapability.ArkUi.Graphics3D 138 139| 名称 | 类型 | 只读 | 可选 | 说明 | 140| ---- | ---- | ---- | ---- | ---- | 141| size | [Vec3](#vec3) | 否 | 否 | 立方体的宽、高和深度,表示立方体的大小。 | 142 143## PlaneGeometry<sup>18+</sup> 144平面几何类型,继承自[GeometryDefinition](#geometrydefinition18)。 145 146**系统能力:** SystemCapability.ArkUi.Graphics3D 147 148| 名称 | 类型 | 只读 | 可选 | 说明 | 149| ---- | ---- | ---- | ---- | ---- | 150| size | [Vec2](#vec2) | 否 | 否 | 平面的宽、高,表示平面的大小。 | 151 152## SphereGeometry<sup>18+</sup> 153球体几何类型,继承自[GeometryDefinition](#geometrydefinition18)。 154 155**系统能力:** SystemCapability.ArkUi.Graphics3D 156 157| 名称 | 类型 | 只读 | 可选 | 说明 | 158| ---- | ---- | ---- | ---- | ---- | 159| radius | number | 否 | 否 | 球体半径,单位为世界坐标系下的场景单位(比如cm、m、km等),取值范围大于0。 | 160| segmentCount | number | 否 | 否 | 在球体上以经纬度分割的段数,取值范围大于0。 | 161 162## Position3 163type Position3 = Vec3 164 165用于表示3维空间中物体的位置,是[Vec3](#vec3)类型。 166 167**系统能力:** SystemCapability.ArkUi.Graphics3D 168 169| 类型 | 说明 | 170| ---- | ---- | 171| [Vec3](#vec3) | 类型为三维向量,可取任意值。 | 172 173## Rotation3 174type Rotation3 = Vec3 175 176用于表示3维空间中物体的旋转,是[Vec3](#vec3)类型。 177 178**系统能力:** SystemCapability.ArkUi.Graphics3D 179 180| 类型 | 说明 | 181| ---- | ---- | 182| [Vec3](#vec3) | 类型为三维向量,可取任意值。 | 183 184## Scale3 185type Scale3 = Vec3 186 187用于表示3维空间中物体的缩放,是[Vec3](#vec3)类型。 188 189**系统能力:** SystemCapability.ArkUi.Graphics3D 190 191| 类型 | 说明 | 192| ---- | ---- | 193| [Vec3](#vec3) | 类型为三维向量,可取任意值。 | 194