Questions tagged «transparency»

1
为什么要在半球(而不是球)上积分以解决渲染方程?
在我见过的大多数教科书中,渲染方程式是这样写的: 大号0(ω0)= LË(ω0)+ ∫ΩF(ω一世,ω0)L一世(ω一世)d ω一世大号0(ω0)=大号Ë(ω0)+∫ΩF(ω一世,ω0)大号一世(ω一世)dω一世L_0( \omega_0)= L_e(\omega_0)+\int_{\Omega}{f(\omega_i, \omega_0)L_i(\omega_i)\,\mathrm{d}\omega_i} 其中被定义为半球(所有这些函数都依赖于更多变量,为简单起见,在此省略)。ΩΩ\Omega 现在,假设要渲染的表面是某种玻璃或某种透明塑料。为什么只在半球范围内整合才有意义?我可以想象,可以有来自任何方向的入射光,因此积分域应该是整个球体。来自玻璃后面的光线如何解释?

3
有什么方法可以在OpenGL中渲染透明度
可以启用Alpha混合以使表面透明,如下所示: glDisable(GL_DEPTH_TEST); //or glDepthMask(GL_FALSE)? depth tests break blending glEnable(GL_BLEND); glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); 但这仅在对象以从前到后的顺序渲染时才有效。否则,背景中的物体会出现在较近的物体之前,例如下图的地板。对于粒子和GUI元素,可以进行排序,但是对于三角形网格,似乎需要太多的努力和速度,如此处所述:https : //www.opengl.org/wiki/Transparency_Sorting。 有哪些常见方法可以解决此问题?我知道这是相当广泛的,不需要深入的实现细节,而只是对一些方法以及可能涉及的内容进行了简要说明。

1
这是实施比尔定律的正确方法吗?
当我实施比尔定律(通过物体的距离吸收颜色)时,由于某种原因,它看起来永远不会很好。 当我在对象后面有颜色时,我将像这样计算调整后的颜色: const vec3 c_absorb = vec3(0.2,1.8,1.8); vec3 absorb = exp(-c_absorb * (distanceInObject)); behindColor *= absorb; 这将使我看起来像这样(请注意一点折射): 这里没有折射: 请注意,此处将其实现为着色器玩具。 这满足了比尔定律的作用的描述,但是与以下镜头相比,它看起来不是很好: 除了高光,我正在努力找出差异。难道仅仅是我的几何形状太简单而无法很好地展示出来吗?还是我执行不正确?

3
如何使我的冰块看起来真实?
我可以将冰块建模为具有水折射率的稍微变形的透明立方体,但是看起来并不令人信服。它们看起来像玻璃块而不是冰。 通过查看实际的冰块,我可以直观地描述一些差异,但是我不知道要更改哪些物理属性以匹配它们: 冰块是湿的。矿山看起来像干玻璃。 冰块在某些地方透明,而在其他地方则不透明。 尽管没有分离,但冰块经常会出现可见的裂纹。 在这种情况下,我试图对表面上的冰块建模(在空气中,而不是在水中漂浮)。 为了增加真实感,我需要包括哪些技术? 我不是在寻找实时技术,只是为了生成静止图像。我希望冰能够像照片一样逼真地关闭,并投射出逼真的焦散和阴影。 我尝试过使用弯曲的边缘,并在冰块上涂上一层薄薄的透明材料,以模拟融化的水层,但是似乎并没有给人以湿的印象。我还尝试过将透明球体嵌入其中心一半大小的透明球体中,并具有雾化效果,但它不会自然地融合到立方体中,而是看起来像是嵌入的。即使是一系列逐渐增加的雾的嵌套球体,看起来也不正确。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.