Прошу прощения, потому что это кажется довольно простой проблемой, которая должна быть очевидной, но кажется, что я не знаю.OpenGL Освещение и позиционирование
Я пишу двигатель и использую Light 0 как «солнце» для сцены. Я полагаю, что в идеале солнце будет фиксированным источником света, а не вектором, поэтому w/4th индекс в векторе положения должен быть 1.0f.
Я устанавливаю точку зрения Орто-сцены, затем устанавливаю свет в положение персонажа (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 в середине экрана.
Любые мысли? Может быть, я немного смутил часть моего кода?
Обычно солнце определяется как направленный свет. – Luca