首页 > 探究cloudcompare对打开的点云文件的渲染分析
头像
LyndonWong
发布于 07-01 18:58 广东
+ 关注

探究cloudcompare对打开的点云文件的渲染分析

最近在研究cloudcompare的源代码,分析点云渲染是怎么实现的,问题就是导入的这个点云文件,点云坐标是怎么获取,获取到的点云数据又是怎么渲染的,谁能详细说说啊,哭死!!!

初步解答思考:

首先在mainwindow.cpp中找到

//"File" menu
	connect(m_UI->actionOpen,						&QAction::triggered, this, &MainWindow::doActionLoadFile);

然后进入doActionLoadFile这个槽函数看看

void MainWindow::doActionLoadFile()
{
	//一大堆有的没的
    ...
	
	//load files
	addToDB(selectedFiles, currentOpenDlgFilter);
}

然后进入到addToDB这个函数中,

void MainWindow::addToDB(	const QStringList& filenames,
							QString fileFilter/*=QString()*/,
							ccGLWindowInterface* destWin/*=nullptr*/)
{
	//一大堆有的没的。。
	
	for ( const QString &filename : filenames )
	{
		CC_FILE_ERROR result = CC_FERR_NO_ERROR;
        //把点云的数据存到newGroup中
		ccHObject* newGroup = FileIOFilter::LoadFromFile(filename, parameters, result, fileFilter);

		//一大堆有的没的。。
        
			addToDB(newGroup, true, true, false);
		//一大堆。。
        
}

找到LoadFromFile函数,进入到其定义:

ccHObject* FileIOFilter::LoadFromFile(	const QString& inputFilename,
										LoadParameters& loadParameters,
										CC_FILE_ERROR& result,
										const QString& fileFilter )
{
	......
	return LoadFromFile(filename, loadParameters, filter, result);
}

return这个函数的结果,在进入到LoadFromFile的定义:

ccHObject* FileIOFilter::LoadFromFile(	const QString& filename,
										LoadParameters& loadParameters,
										Shared filter,
										CC_FILE_ERROR& result)
{
	......
	//load file
	ccHObject* container = new ccHObject();
	result = CC_FERR_NO_ERROR;
	
	......

	try
	{
		result = filter->loadFile(	filename,
									*container,
									loadParameters);
	}
	.......
	return container;
}

可以知道container就是用来装点云的容器,这里用了多态调用函数对container赋值,

result = filter->loadFile(	filename,
									*container,
									loadParameters);

进入到PlyFilter.cpp中的loadFile,

CC_FILE_ERROR PlyFilter::loadFile(const QString& filename, ccHObject& container, LoadParameters& parameters)
{
	return loadFile(filename, QString(), container, parameters);
}

再进入到return的loadFIle的定义中,然后就开始蒙了

我也参考了如下这篇文章,稍微理解了一点:https://spacevision.blog.csdn.net/article/details/125237542?spm=1001.2014.3001.5502最后这个问题就是导入的这个点云文件,点云坐标是怎么获取,获取到的点云数据又是怎么渲染的,谁能详细说说啊,哭死!!!

全部评论

(0) 回帖
加载中...
话题 回帖

近期热帖

近期精华帖

热门推荐