带有目标相机的 C++ 3d 矢量/矩阵库的建议

Posted

技术标签:

【中文标题】带有目标相机的 C++ 3d 矢量/矩阵库的建议【英文标题】:Recommendations for C++ 3d vector/matrix library with targeted camera 【发布时间】:2009-05-15 16:05:20 【问题描述】:

我正在编写一个非常简单的 3d 粒子软件渲染系统,但我只对粒子系统和光栅化器的编码感兴趣,所以我正在寻找的是从 3d 粒子坐标到相机的最简单方法, 到屏幕坐标,但具有可变 FOV 和目标(查看)相机等功能。

任何额外的功能,例如点到点的距离、边界体积等都是额外的,但对我来说,易用性比功能更重要。

唯一的许可要求是它是免费的(就像啤酒一样)。

【问题讨论】:

【参考方案1】:

您可能需要一个场景图库。存在许多 C++ 场景图库。 OpenScenegraph 很受欢迎,Coin3D(免费用于非商业用途)是 OpenInventor 规范的实现,它们中的任何一个都可能满足您的需求,因为听起来您不需要任何尖端支持。还有 Panda3D,我听说如果你喜欢 Python,它会很好。

您可以在 OpenGL 等直接的低级工具包中完成所有这些工作,但如果没有经验,掌握使用 OpenGL 的时间要比使用任何场景图形库要长得多。

在选择场景库时,可能只取决于个人偏好,即您更喜欢哪种 API。

【讨论】:

【参考方案2】:

查看是通过基本转换完成的,与完成模型转换的方式相同。如果你想要 GLU 中的 gluLookAt() 之类的便利函数,那我不知道,但你自己做会很容易。

如果您确实想制作自己的 Look At 函数等,那么我可以推荐 eigen,这是一个非常易于使用的 C++ 线性代数库。

【讨论】:

【参考方案3】:

如果您只想专注于粒子系统的渲染部分,我会选择已建立的 3D 渲染库。

根据您的描述,您可以考虑尝试将您的粒子光栅化添加到Irrlicht 中的一个或两个软件渲染器中。这样做的另一个优点是您可以将您的结果与已经存在的 DX/OGL 粒子效果渲染器进行比较。所有管道/相机管理/等都会为您完成。

【讨论】:

【参考方案4】:

您可能还想看看Armadillo C++ library

【讨论】:

以上是关于带有目标相机的 C++ 3d 矢量/矩阵库的建议的主要内容,如果未能解决你的问题,请参考以下文章

OpenGL 3D点精灵相机矩阵

C++ 中是不是有标准的 3d 矢量类

C++ 3D 矢量模板

将坐标转换为另一个坐标系

使用矢量化 C++ 的矩阵乘法

相机标定原理介绍