Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Opengl 在体素之间插值颜色_Opengl_Voxel - Fatal编程技术网

Opengl 在体素之间插值颜色

Opengl 在体素之间插值颜色,opengl,voxel,Opengl,Voxel,我有一个包含体素的3D纹理,我是光线跟踪,每次碰到体素我都会显示颜色。结果很好,但您可以清楚地看到不同的块被彼此分开。我想得到从一个体素到另一个体素的平滑颜色,所以我想做插值 我的问题是,当我点击体素时,我不确定要从哪个相邻体素中提取颜色,因为我不知道体素是平行于某个轴的墙的一部分,还是场景中的地板或孤立部分。理想情况下,对于每个体素,我必须得到26个相邻体素,但这可能相当昂贵。对于这类事情有什么快速近似的解决方案吗 PS:我注意到在minecraft中,当体素彼此靠近时,会形成平滑的阴影,这可

我有一个包含体素的3D纹理,我是光线跟踪,每次碰到体素我都会显示颜色。结果很好,但您可以清楚地看到不同的块被彼此分开。我想得到从一个体素到另一个体素的平滑颜色,所以我想做插值

我的问题是,当我点击体素时,我不确定要从哪个相邻体素中提取颜色,因为我不知道体素是平行于某个轴的墙的一部分,还是场景中的地板或孤立部分。理想情况下,对于每个体素,我必须得到26个相邻体素,但这可能相当昂贵。对于这类事情有什么快速近似的解决方案吗


PS:我注意到在minecraft中,当体素彼此靠近时,会形成平滑的阴影,这可能是使用了一种可能适用于此目的的技术?

如何进行光线跟踪?你有没有假设体积为气体的照明模型?你能发布一个截图吗?不,只要我与长方体素相交,我就会根据3d纹理的内容给它上色。只是一个平面的颜色。然后有三个相关的邻居(+盒子本身)。你能把颜色插值到整个命中表面上吗?我做了类似的事情,但结果不是很好。我将体素和4个邻域(为了简单起见,我只测试了x-z平行面)形成一个交叉形状,并通过从体素和x上的2个邻域中取值进行插值,然后对z方向取相同的值,并平均2个结果。我得到了一个更平滑的效果,但是体素的计数仍然是非常可见的。不,如果你击中了一个体素,你就得到了体素本身。如果击中的是体素中心的右侧,则需要另外选择右侧邻居。否则,左邻右舍。如果它在中心的前面,你就选前面的邻居,否则就选后面的邻居。等等最后使用对角线,这样你就有了一个2x2x2的体素块。