代码之家  ›  专栏  ›  技术社区  ›  Tristan

HLSL半透明塑料材质球

  •  1
  • Tristan  · 技术社区  · 15 年前

    我正在尝试制作一个材质球来复制一个白色的塑料物体,里面有彩色的光。通过使用半透明的明暗器,如果我在对象中放置一个灯光,灯光将显示出来,或者通过使用一个明暗器来模拟内部灯光的效果。

    我想要的效果有点像光线穿过类似于这些图片的灯罩:

    理想情况下,我能够控制光的强度和颜色,使其脉冲和旋转通过一些漂亮的明亮的Fluro颜色。

    尽管我不知道从哪里开始!

    我的问题是,是否有人知道我应该研究的技术,以便能够生成这样一个明暗器,或有一个相同/相似明暗器的例子,我可以使用作为起点?或者,即使您想提供一个可以执行该操作的明暗器C内有彩色光的物体。要么有一个半透明的明暗器,如果我把一个光放在物体内,光就会显示出来,要么有一个明暗器来模拟物体内光的效果。

    我想要的效果有点像光线穿过类似于这些图片的灯罩:

    alt text alt text alt text

    理想情况下,我能够控制光的强度和颜色,使其脉冲和旋转通过一些漂亮的明亮的Fluro颜色。

    尽管我不知道从哪里开始!

    我的问题是,是否有人知道我应该研究的技术,以便能够生成这样一个明暗器,或有一个相同/相似明暗器的例子,我可以使用作为起点?或者,即使您想提供一个可能执行该任务的明暗器

    2 回复  |  直到 15 年前
        1
  •  4
  •   mattnewport    15 年前

    你可能想做些研究 Subsurface Scattering 了解如何重新创建这种效果。次表面散射对于渲染真实的皮肤很重要,但在这种情况下,通常要处理半透明对象前面或后面的光,而不是内部光。同样的基本原理也适用,但是一些用于实时地下散射近似的技巧和方法可能不适用于您的情况。

        2
  •  2
  •   LarsH    15 年前

    照片不错。它看起来像半透明塑料的类型,你使用可以造成很大的不同。我看到的是,塑料在每个点的亮度是基于从光源到那个点的光线和那个点的表面法向之间的角度。(观察角度无关。)

    当从内部光源到表面点的矢量几乎平行于表面法向量时,表面点是亮的;当它们彼此几乎垂直时,表面点是暗的。所以试着用这两个向量的点积。别忘了正常化。

    换言之,它基本上是漫反射,只是你要把内部光源的效果(透射)加上外部光源的效果(反射)。见 Lambertian_reflectance 作为起点。

    你也可以在上面加一点镜面反射。

    第三幅图像更复杂:我认为它显示的是外表面上内表面的阴影。