射线体积交叉点在OpenGL中
Ray-Volume Intersection in OpenGL
我正在制作卷渲染器。我已经成功阅读了卷,并且从射线示踪剂中准备了几个课程。现在问题是如何做射线和音量(大小为256 * 256 * 256)交叉点,以找到坐标'Intersectfront'和'Intersextback'?
在我的射线课上,我能够启动射线的起源和方向。
我试图应用Liang Barsky算法,但无法考虑如何将其应用于盒子(Cube/Polume)。
看来,您所指的算法考虑了剪辑窗口要对齐的剪辑窗口。如果进行体积渲染,则可能需要在可视化过程中操纵音量的方向。这使多维数据集的非轴对齐。
另外,似乎您正在在CPU上进行射线铸造,而不是在OpenGL着色器上进行。在OpenGL着色器中,计算" Intersectfront"和Intersexback"点非常容易。您首先将卷的边界框渲染为两次纹理。第一个渲染是针对前脸的,第二个是用于后面的。边界框的顶点使用盒子的轴对准坐标进行着色。然后,这两个纹理可以重叠以根据3D纹理坐标找到相交射线。有关更多详细信息,请查看此帖子:用射线铸造算法渲染(使用GLSL)。
如果您在CPU上进行此操作,最好的选择是将立方体/边界框转换回,以使其与当前射线一致。然后,您可以使用框的扩展为x_min,x_max,y_min,y_max,z_min,z_max。
相关文章:
- OpenGL - 在抛出"__gnu_cxx::recursive_init_error"实例后终止调用?
- 了解 GLM- openGL 中的相机转换
- 如何在全屏模式下(在OpenGL中)使背景透明
- 为什么我不能使用 EGL 创建无头 OpenGl 上下文?
- OpenGL大的3D纹理(>2GB)非常慢
- OpenGl glm rotate
- C++atioglxx.pdb未加载错误glBufferData OpenGL
- OpenGL在启用深度测试时不会丢弃我的碎片
- OpenGL相机和相机空间转型的困惑
- OpenGL将纹理四边形渲染为(0,0)
- OpenGL 和 GLM 矩阵无法正确扩展,总是按比例缩小
- 发布旋转矩阵(openGL/glm)
- 如何在Visual Basic中使用矩形函数OpenGL绘制矩形
- 无法使用VAO和EBO(openGL)绘制多个对象
- 为什么我的点没有在 OpenGL 中绘制鼠标所在的位置?
- OpenGL 16 位模板缓冲区?
- 将QOpenGLWidget子类转换为使用Metal而不是OpenGL的子类是否可行?
- 在顶点着色器中使用 OpenGl 的未声明标识符,我在顶点着色器中绘制三角形时遇到问题
- 在 openGL 中多次绑定缓冲区
- 射线体积交叉点在OpenGL中