跳转至

3D

3D 模块提供三维视图组件,支持3D球体、圆柱体、网格等立体图形的渲染与交互。

Class Summary

OHOS::UI3DView

3D 视图基类,提供模型加载、纹理设置与清除等通用 3D 渲染能力

OHOS::UI3DCylinder

3D 圆柱体视图,支持相机参数配置与纹理渲染

OHOS::UI3DMesh

3D 网格视图,支持网格动画控制与纹理渲染

OHOS::UI3DMesh::MeshAnimStopListener

网格动画停止事件监听器基类,提供动画停止回调接口

OHOS::UI3DSphere

3D 球体视图,支持三轴旋转控制与模型加载

Functions

OHOS::UI3DView

SetModel

virtual bool SetModel(std::string file)

功能说明

  • 核心用途:通过文件路径设置 3D 模型
  • 设计目的:为 3D 视图提供模型文件加载入口
  • 使用场景:加载外部 3D 模型文件进行渲染显示

入参

名称 参数类型 详细说明 约束取值范围
file std::string 3D 模型文件路径 有效的文件路径字符串

返回值

  • 返回类型:bool

返回模型设置结果

返回值 触发场景
true 模型设置成功
false 模型设置失败

SetModel

virtual bool SetModel(FILE *fp, uint32_t offset, uint32_t len)

功能说明

  • 核心用途:通过文件指针设置 3D 模型
  • 设计目的:支持从已打开的文件中指定偏移和长度加载模型数据
  • 使用场景:模型数据嵌入在复合文件中时,通过偏移和长度定位加载

入参

名称 参数类型 详细说明 约束取值范围
fp FILE* 已打开的文件指针,入参指针,不可为 nullptr 非 nullptr
offset uint32_t 模型数据在文件中的偏移量 0 ~ 文件大小
len uint32_t 模型数据长度 1 ~ 文件剩余大小

返回值

  • 返回类型:bool

返回模型设置结果

返回值 触发场景
true 模型设置成功
false 模型设置失败

ClearModel

void ClearModel()

功能说明

  • 核心用途:清除已加载的 3D 模型
  • 设计目的:释放模型资源,恢复视图到无模型状态
  • 使用场景:切换模型前清除旧模型、视图销毁前释放资源

SetTexture

virtual bool SetTexture(const ImageInfo* info)

功能说明

  • 核心用途:设置 3D 纹理图片
  • 设计目的:为 3D 视图提供纹理贴图能力
  • 使用场景:为 3D 模型添加表面纹理渲染

入参

名称 参数类型 详细说明 约束取值范围
info const ImageInfo* 纹理图片信息,入参只读指针,不修改所指对象 非 nullptr

返回值

  • 返回类型:bool

返回纹理设置结果

返回值 触发场景
true 纹理设置成功
false 纹理设置失败

ClearTexture

void ClearTexture()

功能说明

  • 核心用途:清除已设置的 3D 纹理图片
  • 设计目的:释放纹理资源,恢复视图到无纹理状态
  • 使用场景:切换纹理前清除旧纹理、视图销毁前释放资源

GetTexture

const ImageInfo* GetTexture() const

功能说明

  • 核心用途:获取当前 3D 纹理图片信息
  • 设计目的:提供纹理查询能力,供外部获取当前纹理状态
  • 使用场景:查询当前纹理配置、判断是否已设置纹理

返回值

  • 返回类型:const ImageInfo*

返回纹理信息指针

返回值 触发场景
非 nullptr 已设置纹理
nullptr 未设置纹理

ReMeasure

void ReMeasure() override

功能说明

  • 核心用途:重新测量视图尺寸
  • 设计目的:在模型或纹理变更后重新计算视图布局
  • 使用场景:模型/纹理更新后触发重新测量

GetViewType

UIViewType GetViewType() const override

功能说明

  • 核心用途:获取视图类型标识
  • 设计目的:区分 3D 视图与其他 UIView 类型
  • 使用场景:视图类型判断、类型分发处理

返回值

  • 返回类型:UIViewType

返回视图类型枚举值

返回值 触发场景
UI_3D_VIEW 当前对象为 UI3DView 类型

OHOS::UI3DCylinder

SetStartY

void SetStartY(int16_t y)

功能说明

  • 核心用途:设置纹理渲染起始 Y 坐标,决定纹理的渲染起始位置
  • 设计目的:控制纹理在圆柱体表面的渲染区域
  • 使用场景:需要裁剪或偏移纹理渲染区域时调用

入参

名称 参数类型 详细说明 约束取值范围
y int16_t 纹理渲染起始 Y 坐标 0 ~ 纹理高度

GetStartY

int16_t GetStartY() const

功能说明

  • 核心用途:获取当前纹理渲染起始 Y 坐标
  • 设计目的:提供纹理偏移量查询能力
  • 使用场景:查询当前纹理渲染起始位置

返回值

  • 返回类型:int16_t

返回纹理渲染起始 Y 坐标值

返回值 触发场景
0 默认值,未设置偏移
非0 已设置偏移值

SetCameraAngle

void SetCameraAngle(float angle)

功能说明

  • 核心用途:设置相机角度
  • 设计目的:控制观察圆柱体的视角
  • 使用场景:调整观察圆柱体的俯仰角度

入参

名称 参数类型 详细说明 约束取值范围
angle float 相机角度值,单位为度 浮点数值

SetCameraVFov

void SetCameraVFov(float distance)

功能说明

  • 核心用途:设置相机垂直视场角(Vertical Field of View)
  • 设计目的:控制相机的可视范围
  • 使用场景:调整透视投影的视场范围

入参

名称 参数类型 详细说明 约束取值范围
distance float 垂直视场角度值 浮点数值

SetCameraAspectRatio

void SetCameraAspectRatio(float ratio)

功能说明

  • 核心用途:设置相机宽高比
  • 设计目的:控制渲染画面的宽高比例
  • 使用场景:适配不同屏幕或视口宽高比

入参

名称 参数类型 详细说明 约束取值范围
ratio float 宽高比值 正浮点数值

SetCameraNearPlane

void SetCameraNearPlane(float value)

功能说明

  • 核心用途:设置相机近裁剪面距离
  • 设计目的:定义透视投影中最近可见距离
  • 使用场景:调整近裁剪面,控制最近可见物体距离

入参

名称 参数类型 详细说明 约束取值范围
value float 近裁剪面距离值 正浮点数值

SetCameraFarPlane

void SetCameraFarPlane(float value)

功能说明

  • 核心用途:设置相机远裁剪面距离
  • 设计目的:定义透视投影中最远可见距离
  • 使用场景:调整远裁剪面,控制最远可见物体距离

入参

名称 参数类型 详细说明 约束取值范围
value float 远裁剪面距离值 正浮点数值

SetCameraAxis

void SetCameraAxis(Vector3<float> axis)

功能说明

  • 核心用途:设置相机旋转轴向
  • 设计目的:定义相机旋转的参考轴向
  • 使用场景:指定相机绕哪个轴向旋转

入参

名称 参数类型 详细说明 约束取值范围
axis Vector3 相机旋转轴向向量,入参值传递 三个浮点分量

SetCameraScale

void SetCameraScale(Vector3<float> scale)

功能说明

  • 核心用途:设置相机缩放参数
  • 设计目的:控制相机在三个轴向的缩放比例
  • 使用场景:调整圆柱体在三维空间中的缩放效果

入参

名称 参数类型 详细说明 约束取值范围
scale Vector3 相机缩放向量,入参值传递 三个浮点分量

SetCameraTranslation

void SetCameraTranslation(Vector3<float> translation)

功能说明

  • 核心用途:设置相机平移参数
  • 设计目的:控制相机在三维空间中的平移偏移
  • 使用场景:调整圆柱体在渲染画面中的位置偏移

入参

名称 参数类型 详细说明 约束取值范围
translation Vector3 相机平移向量,入参值传递 三个浮点分量

SetCameraPosition

void SetCameraPosition(Vector3<float> position)

功能说明

  • 核心用途:设置相机位置
  • 设计目的:定义相机在三维空间中的观察位置
  • 使用场景:调整相机在三维空间中的观察点

入参

名称 参数类型 详细说明 约束取值范围
position Vector3 相机位置向量,入参值传递 三个浮点分量

SetTexture

bool SetTexture(const ImageInfo* info) override

功能说明

  • 核心用途:为圆柱体设置 3D 纹理图片
  • 设计目的:重写基类纹理设置接口,适配圆柱体纹理渲染
  • 使用场景:为圆柱体视图添加表面纹理

入参

名称 参数类型 详细说明 约束取值范围
info const ImageInfo* 纹理图片信息,入参只读指针,不修改所指对象 非 nullptr

返回值

  • 返回类型:bool

返回纹理设置结果

返回值 触发场景
true 纹理设置成功
false 纹理设置失败

OnDraw

void OnDraw(BufferInfo& gfxDstBuffer, const Rect& invalidatedArea) override

功能说明

  • 核心用途:执行圆柱体视图绘制
  • 设计目的:重写基类绘制接口,实现圆柱体渲染逻辑
  • 使用场景:由渲染框架在刷新时调用

入参

名称 参数类型 详细说明 约束取值范围
gfxDstBuffer BufferInfo& 图形目标缓冲区,入参引用 有效缓冲区
invalidatedArea const Rect& 无效区域矩形,入参只读引用 有效矩形

GetViewType

UIViewType GetViewType() const override

功能说明

  • 核心用途:获取视图类型标识
  • 设计目的:区分圆柱体视图与其他 UIView 类型
  • 使用场景:视图类型判断、类型分发处理

返回值

  • 返回类型:UIViewType

返回视图类型枚举值

返回值 触发场景
UI_3D_CYLINDER 当前对象为 UI3DCylinder 类型

OHOS::UI3DMesh

SetMeshType

bool SetMeshType(VGUMeshType meshType)

功能说明

  • 核心用途:设置网格类型,决定网格动画的渲染方式
  • 设计目的:区分强模型类型(VGU_MESH_ARRAY / VGU_MESH_RIPPLE)与弱模型类型
  • 使用场景:初始化网格视图时指定渲染类型;强模型类型会分配内存,需调用 ClearStrongModel 手动释放

前置条件

  • 对于弱模型类型,必须通过 SetModel 设置模型文件
  • 强模型类型(VGU_MESH_ARRAY / VGU_MESH_RIPPLE)不需要模型文件

入参

名称 参数类型 详细说明 约束取值范围
meshType VGUMeshType 网格类型枚举值 VGUMeshType

返回值

  • 返回类型:bool

返回网格类型设置结果

返回值 触发场景
true 网格类型设置成功
false 网格类型设置失败

GetMeshType

VGUMeshType GetMeshType() const

功能说明

  • 核心用途:获取当前网格类型
  • 设计目的:提供网格类型查询能力
  • 使用场景:查询当前网格视图的渲染类型

返回值

  • 返回类型:VGUMeshType

返回当前网格类型枚举值

返回值 触发场景
VGU_MESH_ARRAY(0) 数组类型网格
VGU_MESH_CONVEX(1) 凸面网格
VGU_MESH_CONCAVE(2) 凹面网格
VGU_MESH_VORTEX(3) 漩涡网格
VGU_MESH_WAVE(4) 波浪网格
VGU_MESH_MORIE(5) 莫尔网格
VGU_MESH_RIPPLE(6) 涟漪网格
VGU_MESH_INVALID(7) 无效类型

SetMeshPosition

void SetMeshPosition(int16_t x, int16_t y)

功能说明

  • 核心用途:设置网格动画相对于控件的偏移位置
  • 设计目的:控制强模型类型网格动画的渲染位置
  • 使用场景:仅在强模型类型(VGU_MESH_ARRAY / VGU_MESH_RIPPLE)下有效

入参

名称 参数类型 详细说明 约束取值范围
x int16_t 水平偏移坐标 0 ~ 控件宽度
y int16_t 垂直偏移坐标 0 ~ 控件高度

SetTime

void SetTime(uint32_t time)

功能说明

  • 核心用途:设置网格动画的时间参数
  • 设计目的:控制动画的播放时间进度
  • 使用场景:手动设置动画时间进度或初始化动画起始时间

入参

名称 参数类型 详细说明 约束取值范围
time uint32_t 动画时间值 0 ~ UINT32_MAX

Start

void Start()

功能说明

  • 核心用途:启动网格动画
  • 设计目的:开始播放网格动画效果
  • 使用场景:初始化完成后启动动画播放

Pause

void Pause()

功能说明

  • 核心用途:暂停网格动画
  • 设计目的:暂停当前播放中的网格动画
  • 使用场景:需要临时暂停动画时调用

Resume

void Resume()

功能说明

  • 核心用途:恢复网格动画
  • 设计目的:恢复已暂停的网格动画继续播放
  • 使用场景:暂停后恢复动画播放

Stop

void Stop()

功能说明

  • 核心用途:停止网格动画
  • 设计目的:终止网格动画播放
  • 使用场景:需要完全停止动画时调用,将触发 MeshAnimStopListener 回调

GetState

uint8_t GetState()

功能说明

  • 核心用途:获取网格动画当前状态
  • 设计目的:提供动画播放状态查询能力
  • 使用场景:查询动画是否正在播放、暂停或停止

返回值

  • 返回类型:uint8_t

返回动画状态值

返回值 触发场景
0 动画已停止
非0 动画正在播放或暂停

SetReverse

void SetReverse(bool reverse)

功能说明

  • 核心用途:设置是否反转网格动画方向
  • 设计目的:控制动画正向/反向播放
  • 使用场景:需要反向播放动画效果时调用

入参

名称 参数类型 详细说明 约束取值范围
reverse bool 是否反转动画方向 true / false

GetReverse

bool GetReverse() const

功能说明

  • 核心用途:获取网格动画是否为反转模式
  • 设计目的:查询当前动画方向设置
  • 使用场景:查询动画播放方向状态

返回值

  • 返回类型:bool

返回动画方向设置

返回值 触发场景
true 动画为反转模式
false 动画为正向模式

SetRealTimeScreencap

void SetRealTimeScreencap(bool realTime)

功能说明

  • 核心用途:设置是否在未设置纹理时实时截屏作为纹理
  • 设计目的:控制截屏纹理的更新频率;true 为每帧截屏,false 为截屏一次后复用
  • 使用场景:未设置纹理时控制背景截屏策略

入参

名称 参数类型 详细说明 约束取值范围
realTime bool 是否实时截屏 true / false

GetRealTimeScreencap

bool GetRealTimeScreencap()

功能说明

  • 核心用途:获取是否启用实时截屏模式
  • 设计目的:查询当前截屏策略配置
  • 使用场景:查询截屏模式设置状态

返回值

  • 返回类型:bool

返回实时截屏设置

返回值 触发场景
true 启用实时截屏
false 禁用实时截屏

SetMeshAnimStopListener

void SetMeshAnimStopListener(MeshAnimStopListener* listener)

功能说明

  • 核心用途:设置网格动画停止事件监听器
  • 设计目的:注册回调,在动画停止时接收通知
  • 使用场景:需要在动画停止后执行后续逻辑时注册监听器

入参

名称 参数类型 详细说明 约束取值范围
listener MeshAnimStopListener* 动画停止监听器指针,入参指针 有效指针或 nullptr

GetMeshAnimStopListener

MeshAnimStopListener* GetMeshAnimStopListener()

功能说明

  • 核心用途:获取当前网格动画停止监听器
  • 设计目的:查询已注册的动画停止监听器
  • 使用场景:查询或更新动画停止回调

返回值

  • 返回类型:MeshAnimStopListener*

返回监听器指针

返回值 触发场景
非 nullptr 已设置监听器
nullptr 未设置监听器

SetTexture

bool SetTexture(const ImageInfo* info) override

功能说明

  • 核心用途:为网格视图设置 3D 纹理图片
  • 设计目的:重写基类纹理设置接口,适配网格纹理渲染
  • 使用场景:为网格视图添加表面纹理;未设置纹理时将使用截屏作为纹理

入参

名称 参数类型 详细说明 约束取值范围
info const ImageInfo* 纹理图片信息,入参只读指针,不修改所指对象 非 nullptr

返回值

  • 返回类型:bool

返回纹理设置结果

返回值 触发场景
true 纹理设置成功
false 纹理设置失败

OnDraw

void OnDraw(BufferInfo& gfxDstBuffer, const Rect& invalidatedArea) override

功能说明

  • 核心用途:执行网格视图绘制
  • 设计目的:重写基类绘制接口,实现网格渲染逻辑
  • 使用场景:由渲染框架在刷新时调用

入参

名称 参数类型 详细说明 约束取值范围
gfxDstBuffer BufferInfo& 图形目标缓冲区,入参引用 有效缓冲区
invalidatedArea const Rect& 无效区域矩形,入参只读引用 有效矩形

GetViewType

UIViewType GetViewType() const override

功能说明

  • 核心用途:获取视图类型标识
  • 设计目的:区分网格视图与其他 UIView 类型
  • 使用场景:视图类型判断、类型分发处理

返回值

  • 返回类型:UIViewType

返回视图类型枚举值

返回值 触发场景
UI_3D_MESH 当前对象为 UI3DMesh 类型

OHOS::UI3DMesh::MeshAnimStopListener

OnMeshAnimStop

virtual void OnMeshAnimStop(UIView& view)

功能说明

  • 核心用途:网格动画停止时的回调接口
  • 设计目的:提供动画停止事件的通知机制,子类需重写此方法实现自定义逻辑
  • 使用场景:继承 MeshAnimStopListener 并重写此方法,在动画停止时执行后续处理

入参

名称 参数类型 详细说明 约束取值范围
view UIView& 触发停止事件的视图引用,入参引用 有效视图对象

OHOS::UI3DSphere

RotateAroundXAxis

void RotateAroundXAxis(float angle)

功能说明

  • 核心用途:绕 X 轴旋转球体
  • 设计目的:设置球体绕 X 轴的旋转角度
  • 使用场景:调整球体俯仰角度

入参

名称 参数类型 详细说明 约束取值范围
angle float 绕 X 轴旋转角度,单位为度 浮点数值

RotateAroundYAxis

void RotateAroundYAxis(float angle)

功能说明

  • 核心用途:绕 Y 轴旋转球体
  • 设计目的:设置球体绕 Y 轴的旋转角度
  • 使用场景:调整球体偏航角度

入参

名称 参数类型 详细说明 约束取值范围
angle float 绕 Y 轴旋转角度,单位为度 浮点数值

RotateAroundZAxis

void RotateAroundZAxis(float angle)

功能说明

  • 核心用途:绕 Z 轴旋转球体
  • 设计目的:设置球体绕 Z 轴的旋转角度
  • 使用场景:调整球体翻滚角度

入参

名称 参数类型 详细说明 约束取值范围
angle float 绕 Z 轴旋转角度,单位为度 浮点数值

GetAngleAroundXAxis

float GetAngleAroundXAxis()

功能说明

  • 核心用途:获取绕 X 轴的旋转角度
  • 设计目的:查询球体当前 X 轴旋转角度
  • 使用场景:查询球体俯仰角度

返回值

  • 返回类型:float

返回绕 X 轴旋转角度值

返回值 触发场景
0.0 默认值,未设置旋转
非0 已设置旋转角度

GetAngleAroundYAxis

float GetAngleAroundYAxis()

功能说明

  • 核心用途:获取绕 Y 轴的旋转角度
  • 设计目的:查询球体当前 Y 轴旋转角度
  • 使用场景:查询球体偏航角度

返回值

  • 返回类型:float

返回绕 Y 轴旋转角度值

返回值 触发场景
0.0 默认值,未设置旋转
非0 已设置旋转角度

GetAngleAroundZAxis

float GetAngleAroundZAxis()

功能说明

  • 核心用途:获取绕 Z 轴的旋转角度
  • 设计目的:查询球体当前 Z 轴旋转角度
  • 使用场景:查询球体翻滚角度

返回值

  • 返回类型:float

返回绕 Z 轴旋转角度值

返回值 触发场景
0.0 默认值,未设置旋转
非0 已设置旋转角度

SetModel

bool SetModel(std::string file) override

功能说明

  • 核心用途:通过文件路径设置球体 3D 模型
  • 设计目的:重写基类模型设置接口,加载球体模型文件
  • 使用场景:加载外部 3D 球体模型文件进行渲染

入参

名称 参数类型 详细说明 约束取值范围
file std::string 3D 模型文件路径 有效的文件路径字符串

返回值

  • 返回类型:bool

返回模型设置结果

返回值 触发场景
true 模型设置成功
false 模型设置失败

SetModel

bool SetModel(FILE *fp, uint32_t offset, uint32_t len) override

功能说明

  • 核心用途:通过文件指针设置球体 3D 模型
  • 设计目的:重写基类模型设置接口,支持从已打开文件加载模型
  • 使用场景:模型数据嵌入在复合文件中时,通过偏移和长度定位加载

入参

名称 参数类型 详细说明 约束取值范围
fp FILE* 已打开的文件指针,入参指针,不可为 nullptr 非 nullptr
offset uint32_t 模型数据在文件中的偏移量 0 ~ 文件大小
len uint32_t 模型数据长度 1 ~ 文件剩余大小

返回值

  • 返回类型:bool

返回模型设置结果

返回值 触发场景
true 模型设置成功
false 模型设置失败

OnDraw

void OnDraw(BufferInfo& gfxDstBuffer, const Rect& invalidatedArea) override

功能说明

  • 核心用途:执行球体视图绘制
  • 设计目的:重写基类绘制接口,实现球体渲染逻辑
  • 使用场景:由渲染框架在刷新时调用

入参

名称 参数类型 详细说明 约束取值范围
gfxDstBuffer BufferInfo& 图形目标缓冲区,入参引用 有效缓冲区
invalidatedArea const Rect& 无效区域矩形,入参只读引用 有效矩形

GetViewType

UIViewType GetViewType() const override

功能说明

  • 核心用途:获取视图类型标识
  • 设计目的:区分球体视图与其他 UIView 类型
  • 使用场景:视图类型判断、类型分发处理

返回值

  • 返回类型:UIViewType

返回视图类型枚举值

返回值 触发场景
UI_3D_SPHERE 当前对象为 UI3DSphere 类型

Enumerations

VGUMeshType

typedef enum {
    VGU_MESH_ARRAY,
    VGU_MESH_CONVEX,
    VGU_MESH_CONCAVE,
    VGU_MESH_VORTEX,
    VGU_MESH_WAVE,
    VGU_MESH_MORIE,
    VGU_MESH_RIPPLE,
    VGU_MESH_INVALID,
} VGUMeshType;
枚举成员 取值 描述
VGU_MESH_ARRAY 0 数组类型网格
VGU_MESH_CONVEX 1 凸面网格
VGU_MESH_CONCAVE 2 凹面网格
VGU_MESH_VORTEX 3 漩涡网格
VGU_MESH_WAVE 4 波浪网格
VGU_MESH_MORIE 5 莫尔网格
VGU_MESH_RIPPLE 6 涟漪网格
VGU_MESH_INVALID 7 无效类型