在cpp中生成三维矩阵的体积

Generate volume out of 3d-matrix in cpp

本文关键字:三维 cpp      更新时间:2023-10-16

我有一个函数,用于生成具有灰度值(字符值从0到255)的三维矩阵。现在我想从这个矩阵中生成一个3d对象,例如,我想将这些值显示为3d对象(在cpp中)。什么是实现平台独立并尽可能快的最佳方式
我已经读过一些关于使用OGL的文章,但后来我遇到了以下问题:矩阵最多可以包含$4\cdot10^9$个值。当我想把完整的矩阵加载到RAM中时,它会崩溃。因此,直接从矩阵中提取是不可能的。此外,我只在OGL中找到了绘制2d图像的功能。有没有一种方法可以在OGL中绘制三维像素?还是我应该使用另一种方法
我不需要移动功能(至少目前不需要),我只想显示数据。

编辑2:为了缩小问题的范围:有没有一种方法可以用从三维矩阵中提取的OGL在三维空间中绘制像素?我没有找到合适的函数,我只找到了2d函数。

您想要做的叫做体积渲染。有各种各样的技术可以实现它,最终取决于你想要它的样子。

也没有简单的方法可以做到这一点。你不能只画3d像素。您可以使用GL_POINTS绘制,并将每个转换后的点光栅设置为1个像素,但这可能完全不符合您的要求,因为它只会在屏幕上绘制一些像素(在大分辨率下您看不到任何东西)。

一个通用的解决方案是为每个点使用法线三角形来渲染立方体。如果需要alpha混合,请将其前后排序。如果你想要一个更具体的答案,你需要缩小你的请求范围。光线跟踪在体积渲染中也有优点。了解有关体积渲染的详细信息。