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 物体的绘制。
