我正在通过cuda v6.5示例代码- volumeRender渲染一些体数据。我在另一个程序中有一些RGB颜色不同的体素数据。我想通过将它们输出为.raw文件格式来渲染它们。然而,如何在volumeRender中输出与输入.raw文件完全相同的.raw格式让我很困惑。
据我所知,一个.raw文件可以包含一个体积数据数组。我尝试在volumrRender中使用文本编辑器打开名为“Bucky.raw”的.raw文件,但没有成功。文本是乱码文本。因此,我不知道.raw文件的格式。
接下来,我尝试阅读示例代码并弄清楚.cpp文件是如何读取这种格式的。我得到的唯一信息是卷大小。它是unsigned char * width * height * depth
。
这是否意味着每个体素数据只由一个无符号字符表示?这个无符号字符意味着什么?是体素的灰度吗?
我试着输出我的体素RGB数据的灰度,但结果是相当有线如下。
第一节第一节第一节第一节第一次
顶部是我的体素数据和PCL可视化。另一个是渲染结果。显然,这是错误的格式为volumeRender程序。
我知道有很多不同格式的.raw文件,但我想也许只有一种.raw格式只用于cuda示例代码。有人知道如何存储.raw格式就像“Bucky.raw”格式吗?
2条答案
按热度按时间6pp0gazn1#
这是否意味着每个体素数据只由一个无符号字符表示?这个无符号字符是什么意思?是体素的灰度吗?
是,每个体素由一个
unsigned char
(即VolumeType
)表示,值(0-255)表示体素的“透射率”(即密度的倒数),体素值0表示最低透射率/最高“密度”(创建“较暗”区域),体素值255表示低密度(创建“较亮”区域)。存储顺序的维度在x、y和z上快速变化。在程序中可以很容易地发现体积的实际维度为
volumeSize.width
(x)、volumeSize.height
(y)和volumeSize.depth
(z)。x表示水平方向,y表示垂直方向,z表示进出屏幕的方向。有人知道如何存储.raw格式就像“布基.raw”格式吗?
这是一个程序,你可以用它来编写不同类型的“滤线器原始”文件。尺寸将是32,32,32,这是程序中的默认值。
如果您编译这个程序,然后使用命令行参数0-4运行它,那么在运行
volumeRender
示例代码时,您会看到不同的模式。这是上述
buckywriter 3
情况的图形输出,其在x和y中创建了增加的透射率梯度:c3frrgcw2#
我在Swift中使用Xcode创建了一个简单的示例程序,它将Goxel模型转换为NVIDIA CUDA示例程序VolumeRender和VolumeFilter使用的.raw格式。
在Goxel中构建模型,将其导出为.txt
然后运行Goxel2Raw程序。
Goxel2Raw on Github