问题标签 [volume-rendering]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
254 浏览

opengl - OpenGL 阿尔法函数

我正在开发一个基于 2D 纹理的体积渲染项目,当我尝试将 Alpha 和混合应用到我的程序时遇到问题。该程序从一个文件中读取 2D 帧,并根据这些帧设置纹理。这是我的程序:

如您所见,在 InitTextures2D 函数中,我将原始数据转换为 RGBA 数据。如果一个像素的亮度值低于 20,我假设它是黑色的,并将 alpha 值设置为 0(透明)。对于其他像素,alpha 值都设置为 255(不透明)。所以在我看来,由于像素的 alpha 值可以是 0 或 255,所以无论我分配给函数 glAlphaFunc(GL_GREATER, reference_value) 的第二个参数的值是什么,最终结果的外观应该始终相同。我做了一些测试,但不幸的是结果完全不同。

glAlphaFunc(GL_GREATER, 0.1f) glAlphaFunc(GL_GREATER, 0.1f) 的结果 的结果: glAlphaFunc(GL_GREATER, 0.5f) glAlphaFunc(GL_GREATER, 0.5f) 的结果 的结果: glAlphaFunc(GL_GREATER, 0.99f) 的结果: glAlphaFunc(GL_GREATER, 0.99f) 的结果

告诉我原因。

0 投票
0 回答
472 浏览

c++ - 使用 openGL es 3.0 进行体积渲染

我正在尝试渲染 3D 体积,原始数据已成功从主内存上传到图形内存,但屏幕上仍然没有任何内容。这是我的着色器代码,有人可以帮我找到问题所在。

0 投票
1 回答
1316 浏览

vtk - VTK - 解释简单的代码

你能按照简单的代码解释一下吗?

其中VolumeScalarOpacityVolumeGradientOpacity是 vtkPiecewiseFunction 的类型......我看不到任何地方解释这些方法......

我很难渲染 CT 卷……谢谢。

0 投票
1 回答
472 浏览

c++ - 体积渲染 Alpha 混合

我发现本教程http://www.codeproject.com/Articles/352270/Getting-started-with-Volume-Rendering关于体积渲染并尝试实现我自己的渲染器。我已经到了可以通过 alpha 测试一次绘制所有切片的地步,这给了我或多或少像教程中那样的结果。现在,我想向前迈出一步并应用 alpha 混合,但在那之后没有任何变化(即使有,它看起来也不像教程中的那么好)。

这是我的渲染代码:

其中 z 是切片数。纹理生成代码如下所示:

DataAccessor 当然是可以访问原始纹理数据的类。

我是否忘记在窗口中设置某些内容或者我的代码有问题?

0 投票
1 回答
1565 浏览

matlab - 从等值面对面/顶点应用变换并绘制结果

如果我在 Matlab 中获得了一个轮廓

有没有一种干净的方法来对表面应用变换并将结果很好地绘制为光滑的表面?变换T是非线性的。

我试图将转换应用Tfandvert和 usepatch但不能完全让它工作。

0 投票
1 回答
239 浏览

opengl - 在射线投射中丢弃一些体素

我在使用gpu 光线投射技术的着色器中实现了体积渲染。基本上我的场景中心有一个单位立方体。我在顶点着色器中渲染单位立方体的顶点,并将纹理坐标传递给片段着色器,如下所示:

由于单位立方体坐标从 -0.5 变为 0.5,我通过向它们添加 0.5 将纹理坐标从 0.0 固定到 1.0..

在片段着色器中,我得到了由光栅器插值的纹理坐标:

我的渲染效果很好。

现在我已经实现了一个选择算法,它可以很好地处理粒子(世界坐标中的真实顶点)。

我的问题是如何使它与体积数据集一起使用?因为我只有顶点是单位立方体的顶点。由于数据点是由光栅化器插值的,所以我不知道体素的真实(世界)坐标。

对我来说,获取体素的中心坐标并将它们视为粒子是很公平的,这样我就可以在片段着色器中省略或包含必要的体素(我猜是 vUV 坐标?)。

0 投票
2 回答
220 浏览

opengl - 开窗传递函数

我正在实现一个体积渲染器,我想使用窗口传递函数来使用户能够更改某些区域的不透明度。据我了解,window、offset和scale三个变量

窗口是我想要更改 alpha 值的多少,偏移量是我的窗口与最小值之间的距离。但我不确定规模是多少?是一个 alpha 值到下一个 alpha 值之间的增加,还是我当前窗口中的最大 alpha?

我有什么遗漏或有什么问题吗?

这就是我的想法

这就是我的想法

0 投票
1 回答
75 浏览

graphics - 以不同格式表示体素

我是图形新手。有人可以告诉我如何用不同格式表示体素(例如,直线网格)

0 投票
1 回答
912 浏览

three.js - 体积渲染从一个方向比另一个方向更透明

我正在尝试使用three.js 和光线行进GLSL 进行体积渲染。我有一些从 numpy 数组合成的数据。

正在渲染的数据立方体在一侧更加不透明,在另一侧逐渐变得透明 - 就像这样(忽略线框,这只是为了一点方向) 在此处输入图像描述

但是,当您从更透明的一端看立方体时,透明度似乎会“阻挡”不太透明的一端(希望这是有道理的)。像这样: 在此处输入图像描述

我不知道这是否相关,但我也有一个问题,当相机稍微在立方体内部时,它会停止正确渲染。它会切断离相机最近的位,如下所示: 在此处输入图像描述 这是一个相关问题,还是只是方法的限制。

代码在这里 https://github.com/niallrobinson/test-volume-rendering/blob/master/viewer.html https://github.com/niallrobinson/test-volume-rendering/blob/master/viewer.js https ://github.com/niallrobinson/test-volume-rendering/blob/master/viewer.html

第二遍着色器看起来像这样:

提前谢谢大家

编辑:经过一些实验,问题似乎是只渲染了立方体的外部。如果我将一团数据放在多维数据集的中间,你什么也看不到。

编辑:事实上,它在前端表面上的唯一渲染数据。如果我反转光线行进方向(即更改为朝向相机),您只能在背面查看它

0 投票
0 回答
160 浏览

glsl - 沿 z 平面观察时的体积渲染伪影

我一直在尝试启动并运行一些 WebGL 体积渲染。我设法将 3D 数据平铺到 2D 纹理(横向和沿 RGB 通道平铺)。它现在显示一些合成数据(一个球体)。

当沿 x,y 平面观察时(即正面看瓷砖),一切似乎都正常。 在 x,y 平面上正常

但是一旦你开始观察从另一侧进入立方体的光线,就会出现一种奇怪的雾霾效果,它会阻挡正在渲染的体积,就像这样 开始有点时髦

当你直接沿着 z 平面看时(即边缘到瓷砖),事情就会变得一团糟 wtf

有没有人见过这个?完整代码可在此处获得

这是我的着色器的业务端 - 看起来对平铺阵列进行采样并进行光线行进的部分。

感谢大家的帮助!