gpt4 book ai didi

c++ - 在 openGL 中使用着色器显示体素

转载 作者:太空宇宙 更新时间:2023-11-04 11:31:56 49 4
gpt4 key购买 nike

我正在使用渲染管道进行体素化,现在我成功地使用顶点+几何+片段着色器对场景进行了体素化。现在我的体素存储在一个 3D 纹理中,其大小为 128x128x128。

我的原始场景模型以 (0,0,0) 为中心,并在正轴和负轴上延伸。然而,纹理在 tex 坐标中以 (63,63,63) 为中心。

我为可视化实现了一个简单的光线划痕,但它没有考虑相机的移动(我只能从非常固定的位置进行渲染,因为我的光线必须在考虑 3D 纹理的不同坐标的情况下生成)。

我的问题是:我如何映射我的光线,以便它们在我的 3D 模型坐标中以方向 D 的点 Po 生成,但与纹理坐标中相应位置的体素相交,并且相机在3D 世界在体素坐标中重新映射?

现在我以这种方式生成光线:在摄像机前的位置 (63,63,-20) 创建一个四边形向 (63,63,3) 方向转换光线

最佳答案

我认为您应该将整个 View 变换矩阵存储在着色器统一参数中。然后对于每个着色器执行,您可以使用其屏幕坐标和 View 变换来计算特定像素的 View 光线方向。有了光线方向和相机位置,您就可以像当前一样使用它们。

您还可以尝试另一种方法:

假设您有一个立方体 (0,0,0)->(1,1,1),您根据每个角的位置为其分配颜色,例如 (1,0,0) 是红色等.

现在,对于每一帧,您都将立方体正面绘制到纹理,将立方体背面绘制到第二个纹理。

在最终渲染中,您可以使用两种纹理来获取纹理空间中已经存在的 enterexit 3D vector ,这使您的最终着色器更加简单。

您可以在此处阅读更好的描述:

http://graphicsrunner.blogspot.com/2009/01/volume-rendering-101.html

http://web.cse.ohio-state.edu/~tong/vr/

关于c++ - 在 openGL 中使用着色器显示体素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24394580/

49 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com