【问题标题】:OpenGL Lighting and PositioningOpenGL 光照和定位
【发布时间】: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 处居中。

有什么想法吗?也许我在这里有些混淆了我的一些代码?

【问题讨论】:

  • 通常太阳被定义为定向光。

标签: opengl lighting isometric


【解决方案1】:

我认为,理想情况下,太阳将是一个固定光源,而不是一个向量,所以位置向量中的 w/fourth 索引应该是 1.0f。

就人类基本尺度上发生的任何事情而言,太阳是无限远的。它几乎是权威的“定向光”。因此,除非您要跨越数百或数千英里进行渲染,否则阳光方向的差异将完全无关紧要。

简而言之:您应该像其他人一样使用定向灯。

【讨论】:

  • 话虽如此,我仍然对灯光的定位有疑问(抱歉,按回车键并希望写另一行,如果您已经回复,请见谅)。如果我做定向光,光仍然不会从 0,0,0 坐标移动。即,如果我将灯光设置为指向左侧(朝西),灯光将在 0,0,0 左右,左侧将“亮”,而 0,0,0 的右侧将开始变暗.有没有办法让位置光跟随我的翻译?我认为在渲染场景之前需要“调用”灯光,对吧?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-06
  • 1970-01-01
  • 1970-01-01
  • 2023-03-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多