在cpp中生成三维矩阵的体积
Generate volume out of 3d-matrix in cpp
我有一个函数,用于生成具有灰度值(字符值从0到255)的三维矩阵。现在我想从这个矩阵中生成一个3d对象,例如,我想将这些值显示为3d对象(在cpp中)。什么是实现平台独立并尽可能快的最佳方式
我已经读过一些关于使用OGL的文章,但后来我遇到了以下问题:矩阵最多可以包含$4\cdot10^9$个值。当我想把完整的矩阵加载到RAM中时,它会崩溃。因此,直接从矩阵中提取是不可能的。此外,我只在OGL中找到了绘制2d图像的功能。有没有一种方法可以在OGL中绘制三维像素?还是我应该使用另一种方法
我不需要移动功能(至少目前不需要),我只想显示数据。
编辑2:为了缩小问题的范围:有没有一种方法可以用从三维矩阵中提取的OGL在三维空间中绘制像素?我没有找到合适的函数,我只找到了2d函数。
您想要做的叫做体积渲染。有各种各样的技术可以实现它,最终取决于你想要它的样子。
也没有简单的方法可以做到这一点。你不能只画3d像素。您可以使用GL_POINTS绘制,并将每个转换后的点光栅设置为1个像素,但这可能完全不符合您的要求,因为它只会在屏幕上绘制一些像素(在大分辨率下您看不到任何东西)。
一个通用的解决方案是为每个点使用法线三角形来渲染立方体。如果需要alpha混合,请将其前后排序。如果你想要一个更具体的答案,你需要缩小你的请求范围。光线跟踪在体积渲染中也有优点。了解有关体积渲染的详细信息。
相关文章:
- 如何将三维尺寸不固定的三维阵列展平为一维阵列
- 如何使用qt缩放三维网格
- 三维数组中的C/C++DWORD到BYTE和BYTE到DWORD的转换
- 使用vtkImageReslice重新切片三维原始图像
- 特征:创建一个具有函数的三维阵列
- 扩充矩阵的行缩减-三维样条曲线计算
- 使用pcl transformcloud将三维点平移并旋转到原点
- 用C++从三维矢量中删除元素
- 如何访问CGAL三维三角测量中的面
- 如何在Openscenegraph中从二维鼠标点击的屏幕坐标点计算三维点(世界坐标)
- std::将三维数组复制到三维向量中
- 显示结构的三维数组
- 如何将X 2维数组连接到一个三维阵列中
- 使用unique_ptr来管理三维数组
- 如何访问三维矩阵元素
- 无法访问三维数组中的特定位置
- 如何将 HDC 位图快速复制到三维阵列?
- 内存相关崩溃:Cocos2d游戏中的三维数组
- 如何使用opencv和c++实现三维sift算法
- 在cpp中生成三维矩阵的体积