【问题标题】:Having an object as a source of light, I.E. The Sun有一个物体作为光源,I.E.太阳
【发布时间】:2011-03-13 20:16:27
【问题描述】:

我正在为班级制作太阳系模型,我在对物体 + 旋转执行不同的变换时没有遇到任何实际问题。

但有一个要求让我难以理解,太阳(位于 0,0,0)需要成为光源。我已经在该位置创建了一个点光源并对其进行了配置。问题是太阳没有被光照亮,我猜是因为光是从里面发出来的,所以它没有反射到外面来照亮它,有人有一些让这个正常工作的技巧吗?

【问题讨论】:

    标签: graphics directx


    【解决方案1】:

    通常通过将材质的“发射”系数设置为黑色以外的其他值来创建发光对象。对于 OpenGL,这是使用 glMaterial()GL_EMISSION 完成的。使用direct3d,您似乎想要更改D3DMATERIAL9Emissive 参数

    此系数允许您创建一个看起来会发光的对象,而不仅仅是从其他来源反射它。请注意,此系数是一种颜色,与漫反射系数和环境系数相同,因此您可以为太阳发出略带黄色的光。

    太阳周围通常也有一种“光环”。这不能用发射系数或其他传统的照明和阴影机制轻松模拟。您可能想尝试使用带有 alpha 混合纹理的面向相机的四边形来伪造它。

    【讨论】:

      【解决方案2】:

      您可以转动太阳的法线,使它们面朝内(简单地将 x、y 和 z 取反)。现在它们都将指向点光源。

      TBH 虽然只是将其渲染为特例而不点亮它更简单。

      【讨论】:

        猜你喜欢
        • 2012-05-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多