【问题标题】:3D texture sampling in OpenGLOpenGL 中的 3D 纹理采样
【发布时间】:2017-06-03 06:39:37
【问题描述】:

我目前正在尝试使用 glTexImage3D 之类的东西来学习 3D 纹理上的光线投射。我从一开始就关注this tutorial。我的最终目标是制作一个可以像这样工作的程序:

我的理解是这是使用光线投射方法渲染的,并且模型是作为 3d 纹理导入的。光线投射和纹理采样任务在片段着色器中执行。我希望我可以复制这个程序作为练习。你能回答我的问题吗?

  1. 应该使用什么文件格式来导入 3D 纹理?
  2. 我应该使用哪些 glsl 函数来检测我的光线和纹理之间的距离?
  3. 3D 纹理采样和体渲染有什么区别?
  4. 是否有任何可用的在线教程供我学习?
  5. 如何制作自己的 3D 纹理? (可以用搅拌机做一个吗?)

【问题讨论】:

    标签: opengl 3d glsl rendering volume-rendering


    【解决方案1】:

    1。导入 3D 纹理应该使用什么文件格式?

    没关系,OpenGL 不处理文件格式。

    2。我应该使用哪些 glsl 函数来检测光线和纹理之间的距离?

    没有“即用型”光线投射功能。你必须自己实现一个raycaster。 IE。在起点和终点之间沿线(射线)对纹理进行采样,并将这些样本整合到最终的颜色值。

    3。 3D纹理采样和体渲染有什么区别?

    采样 3D 纹理与采样 2D、1D、立方体贴图或其他任何纹理拓扑没有太大区别。对于给定的向量 A,返回某个向量 B,即最接近 A 指向的位置的样本值(最近的样本)或插值。

    4。是否有任何可用的在线教程供我学习?

    http://www.real-time-volume-graphics.org/?page_id=28

    5。如何制作自己的 3D 纹理? (可以用搅拌机做一个吗?)

    你当然可以使用 Blender,例如通过烘焙诸如雾密度之类的体积数据。但整个主题过于宽泛,无法在此充分涵盖。

    【讨论】:

    • 谢谢!。对于问题1,数据的格式是什么?是否可以将 obj 文件转换为这种格式?
    • @FunnyFunkyBuggy:基本上是 3D 图像。把它想象成一堆由切片组成的二维图像。将“网格”或几何“转换”为体积数据当然可能是通过将几何实际渲染为体积图像。但这也带来了一些问题,比如你如何定义什么是“内部”。您的典型网格由无限细的三角形组成,如果网格不是水密的,或者不可定向,则不可能“填充”一个体积。但是,如果您问 那个 问题,您似乎遇到了 XY 问题。
    猜你喜欢
    • 2023-04-05
    • 1970-01-01
    • 1970-01-01
    • 2013-04-21
    • 1970-01-01
    • 2013-04-23
    • 2020-03-17
    • 2021-11-08
    • 2021-03-05
    相关资源
    最近更新 更多