【发布时间】:2011-03-13 20:16:27
【问题描述】:
我正在为班级制作太阳系模型,我在对物体 + 旋转执行不同的变换时没有遇到任何实际问题。
但有一个要求让我难以理解,太阳(位于 0,0,0)需要成为光源。我已经在该位置创建了一个点光源并对其进行了配置。问题是太阳没有被光照亮,我猜是因为光是从里面发出来的,所以它没有反射到外面来照亮它,有人有一些让这个正常工作的技巧吗?
【问题讨论】:
我正在为班级制作太阳系模型,我在对物体 + 旋转执行不同的变换时没有遇到任何实际问题。
但有一个要求让我难以理解,太阳(位于 0,0,0)需要成为光源。我已经在该位置创建了一个点光源并对其进行了配置。问题是太阳没有被光照亮,我猜是因为光是从里面发出来的,所以它没有反射到外面来照亮它,有人有一些让这个正常工作的技巧吗?
【问题讨论】:
通常通过将材质的“发射”系数设置为黑色以外的其他值来创建发光对象。对于 OpenGL,这是使用 glMaterial() 和 GL_EMISSION 完成的。使用direct3d,您似乎想要更改D3DMATERIAL9 的Emissive 参数
此系数允许您创建一个看起来会发光的对象,而不仅仅是从其他来源反射它。请注意,此系数是一种颜色,与漫反射系数和环境系数相同,因此您可以为太阳发出略带黄色的光。
太阳周围通常也有一种“光环”。这不能用发射系数或其他传统的照明和阴影机制轻松模拟。您可能想尝试使用带有 alpha 混合纹理的面向相机的四边形来伪造它。
【讨论】:
您可以转动太阳的法线,使它们面朝内(简单地将 x、y 和 z 取反)。现在它们都将指向点光源。
TBH 虽然只是将其渲染为特例而不点亮它更简单。
【讨论】: