基于VS2019+QT的Coin3D三维可视化库的安装预测测试

1、Coin3D介绍

Coin3D是一个基于OpenGL的三维图形库,它源于Open Inventor 2.1api,Coin仍然与之兼容。

如果你不熟悉OpenInventor,它是一个场景图,保留模式,渲染和模型操作,C++类库,最初由SGI设计。它发布后,迅速成为科学界和工程界事实上的三维可视化和可视化仿真软件的标准图形库。Coin3D基于这个库的API,但是在SGI Open Inventor成为开源之前,它是从零开始独立开发的。它不与SGI Open Inventor共享任何代码,除非通过Open Inventor API设计指导的随机巧合。Coin3D在2000年秋季达到了OpenInventor2.1兼容的目标,此后又扩展了一系列附加功能,从3D声音支持到GLSL材质球支持,VRML97等附加文件格式,以及为跟上更新版本而进行的大量内部更改,更优化的OpenGL渲染技术在早期是不可用的。

Coin是一个基于OpenGL的保留模式三维图形渲染库。它在C++中实现,公开发布,源代码开放供您阅读。应用程序编程接口(API)与SGI的Open Inventor完全兼容,后者实际上是复杂可视化应用程序的标准3D图形API。

Kongsberg Oil&Gas Technologies提供了大部分库,用于将Coin与各种窗口系统和GUI工具包进行接口,开源社区正在继续这项工作。

•Quarter用于将Coin与Trolltech的跨平台Qt工具包(UNIX、Windows、Mac OS X)集成。

•SoQt也用于与Qt集成,但具有较旧的遗留设计。

•SoWin用于在Microsoft Windows平台上与Win32 API接口。

•Sc21用于在Mac OS X上与Cocoa交互。

•SoXt用于与X窗口上的Xt/Motif接口。

 

2、Coin3D安装

Coin3D由几大模块组成,之前的官网地址是https://bitbucket.org/%7B33c4279a-271f-4864-88ce-03ec8eb2cafc%7D/,目前已经转移到了github,https://github.com/coin3d

从官网介绍中可以看到,这个库2011年之前不开源,2011年之后安装BSD协议开源,可以商业化使用。具体的安装方法下面这篇帖子说的很清楚了,https://blog.csdn.net/qq_43090821/article/details/97560442

这里还是简单说一下,分别下载coin, quarter, simage, simvoleon, soqt, sowin这几个库,要在window,Qt下使用的话,coin,soqt/quarter, sowin是必选的,simage用于图像的相关处理,simvoleon用于三维模拟结果方面。

然后几个包都解压在同一个文件夹下,

比如bin文件夹下有这些文件

 

3、Coin3D测试

首先,电脑上已经安装VS2019, QT和VS下的QT扩展Qt VS Tool,这里不详细说明。新建项目时选择widget项目,然后就是VS 2019 下的配置了。

需要设置include、lib、和input。

(1)c/c++-->General-->Additional Include Directories, 添加目录“****\Coin3D\include”

(2)Linker-->General --> Additional Library Directories, 添加目录 “******\Coin3D\lib”

(3)Linker -->Input-->Additional Dependencies, 添加目录*.lib文件名,比如Coin4d.lib;

Quarter1d.lib;SoQt1d.lib;SIMVoleon2d.lib;SoWin1d.lib;simage1d.lib

 

main.cpp添加代码如下:


#include <QtWidgets/QApplication>
#include <Inventor/Qt/SoQt.h>
#include <Inventor/Qt/viewers/SoQtExaminerViewer.h>
#include <Inventor/nodes/SoSeparator.h>
#include <Inventor/nodes/SoCube.h>

int main(int argc, char *argv[])
{

	QWidget* mainwin = SoQt::init(argc, argv, argv[0]);

	SoSeparator* root = new SoSeparator();
	root->ref();
	SoCube* cube = new SoCube();
	root->addChild(cube);

	SoQtExaminerViewer* eviwer = new SoQtExaminerViewer(mainwin);
	eviwer->setSceneGraph(root);
	eviwer->show();
	SoQt::show(mainwin);
	SoQt::mainLoop();

	root->unref();
	delete eviwer;
	return 0;

}

不出意外会出现错误提示,需要设置SOQT_DLL的预处理警告。

方法是在C/C++ --- Preprocessor --- Preprocessor Definitions, 添加QOQT_DLL

运行结果如下

 

除文中提到的以外的资料如下

https://bitbucket.org/%7B33c4279a-271f-4864-88ce-03ec8eb2cafc%7D/?visibility=all

https://coin3d.github.io/Coin/html/

https://coin3d.github.io/Coin/html/Coin_books.html#mentorbook

https://github.com/coin3d

https://github.com/coin3d/coin

https://github.com/coin3d/sowin

https://github.com/coin3d/soqt

https://github.com/coin3d/simvoleon

https://github.com/coin3d/quarter

 

posted @ 2022-08-21 10:13  Oliver2022  阅读(435)  评论(1编辑  收藏  举报