【发布时间】:2012-02-21 15:49:45
【问题描述】:
我很抱歉,因为这似乎是一个非常简单的问题,应该很明显,但我似乎一无所知。
我正在编写一个引擎并使用 Light 0 作为场景的“太阳”。我认为,理想情况下,太阳将是一个固定光源,而不是一个向量,所以位置向量中的 w/fourth 索引应该是 1.0f。
我设置了场景的 Ortho 视点,然后将灯光设置在角色的位置(x/y 是平面地形的坐标,正 z 朝向相机并表示地形上的“高度”——对于 x 轴上的等距视图,场景也会旋转)。
角色始终位于屏幕的中心——但我注意到,出于某种原因,灯光似乎照射在角色和世界坐标 0,0,0 之间的位置。角色离世界坐标 0,0,0 越远,光线越大/越宽。如果角色位于 0,0,0,则光线非常小。如果角色移动到类似 0,200,0 的位置,则光线非常大。
我只是想弄湿我的脚,让一个“光”跟随角色(然后调整位置等,然后创建一个太阳)。
Graphics.BeginRenderingLayer();
{
Video.MapRenderingMode();
Graphics.BeginLightingLayer( Graphics.AmbientR, Graphics.AmbientG, Graphics.AmbientB, Graphics.DiffuseR, Graphics.DiffuseG, Graphics.DiffuseB, pCenter.X, pCenter.Y, pCenter.Z );
{
Graphics.BeginRenderingLayer();
{
Graphics.CenterCamera( pCenter.X, pCenter.Y, pCenter.Z );
RenderMap( pWorld, pCenter, pCoordinate );
}
Graphics.EndRenderingLayer();
Graphics.BeginRenderingLayer();
{
Graphics.DrawMan( pCenter );
}
Graphics.EndRenderingLayer();
}
Graphics.EndLightingLayer();
}
Graphics.EndRenderingLayer();
Graphics.BeginRenderingLayer = PushMatrix,EndRenderingLayer = PopMatrix Video.MapRenderingMode = 正交投影和场景旋转/缩放 CenterCamera 会转换到 X/Y/Z 的反面,这样角色现在就在屏幕中间的 X/Y/Z 处居中。
有什么想法吗?也许我在这里有些混淆了我的一些代码?
【问题讨论】:
-
通常太阳被定义为定向光。