CloudCompare 中 ccDrawableObject
CloudCompare 中 ccDrawableObject
类的主要内容与使用
1. ccDrawableObject
概述
在 CloudCompare 中,ccDrawableObject
是一个基类,主要用于管理 3D 可绘制对象 的显示属性,如颜色、可见性、LOD(层次细节)、光照等。它是许多可视化类(如 ccHObject
、ccGenericMesh
)的基类,提供了一些通用的绘制方法。
2. ccDrawableObject
的核心功能
(1) 主要成员变量
// 物体的显示属性
bool m_visible; // 是否可见
bool m_selected; // 是否被选中
bool m_showColors; // 是否显示颜色
bool m_showSF; // 是否显示标量字段(Scalar Field)
bool m_showNormals; // 是否显示法向量
bool m_showMaterials; // 是否显示材质
bool m_showVertices; // 是否显示顶点
bool m_showNameIn3D; // 是否在3D视图中显示名称
float m_glTrans[16]; // OpenGL 变换矩阵
(2) 主要方法
方法 | 作用 |
---|---|
setVisible(bool state) | 设置对象的可见性 |
isVisible() const | 检查对象是否可见 |
setSelected(bool state) | 选中/取消选中对象 |
isSelected() const | 检查对象是否被选中 |
showColors(bool state) | 启用/禁用颜色显示 |
colorsShown() const | 检查是否显示颜色 |
showNormals(bool state) | 启用/禁用法向量显示 |
normalsShown() const | 检查是否显示法向量 |
showSF(bool state) | 启用/禁用标量字段显示 |
sfShown() const | 检查是否显示标量字段 |
showMaterials(bool state) | 启用/禁用材质显示 |
materialsShown() const | 检查是否显示材质 |
applyGLTransformation() | 应用 OpenGL 变换 |
getGLTransformation(float matrix[16]) const | 获取 OpenGL 变换矩阵 |
3. ccDrawableObject
的使用示例
(1) 在 CloudCompare 中创建一个可绘制对象
#include <ccDrawableObject.h>ccDrawableObject obj;
obj.setVisible(true); // 让对象可见
obj.showColors(true); // 显示颜色
obj.showNormals(true); // 显示法向量
obj.showSF(false); // 不显示标量字段
(2) 在 CloudCompare 插件中控制对象的可视化
在 CloudCompare 插件开发时,我们可以使用 ccDrawableObject
及其派生类(如 ccHObject
)来控制对象的可视化。例如:
void ToggleVisibility(ccDrawableObject* obj)
{if (obj){bool isVisible = obj->isVisible();obj->setVisible(!isVisible); // 切换可见性}
}
(3) 设置 OpenGL 变换
float matrix[16] = { /* OpenGL 4x4 变换矩阵 */ };
ccDrawableObject obj;
obj.applyGLTransformation();
obj.getGLTransformation(matrix);
4. ccDrawableObject
在 CloudCompare 代码结构中的作用
ccDrawableObject
作为 基类,用于管理 所有可以在 OpenGL 窗口中绘制的对象。- 许多类继承了
ccDrawableObject
,例如:ccHObject
:CloudCompare 中的 层次对象管理 。ccPointCloud
:用于 点云渲染 。ccGenericMesh
:用于 网格显示 。ccPolyline
:用于 多段线渲染 。
- 这些类继承了
ccDrawableObject
的 显示控制、OpenGL 变换 以及 基本的绘制属性。
5. 总结
✅ ccDrawableObject
是 CloudCompare 3D 可视化的 基类,主要用于 管理对象的可见性、颜色、法向量、标量字段、材质等。
✅ 主要方法包括 设置可见性 (setVisible
)、控制颜色 (showColors
)、控制法向量 (showNormals
)、控制 OpenGL 变换 (applyGLTransformation
)。
✅ 在 CloudCompare 插件开发 或 自定义可视化 时,可直接使用 ccDrawableObject
或其子类来 控制 3D 物体的绘制。