Я запускаю игровой проект, который позволит персонажам прятаться в темных областях. Из-за того, что вы прячетесь в темном углу, другим персонажам будет труднее вас видеть.
Мне нужен способ расчета условий освещения, в которых находится персонаж.
Идеально было бы иметь
double getLightFactor(GameCharacter observer, GameCharacter target)
поскольку я предполагаю, что могут быть условия освещения, при которых свет падает так, что разные стороны мишени поражаются разным количеством света.
Но я бы с радостью согласился на
double getLightFactor(GameCharacter target)
чтобы получить свет для конкретного персонажа независимо от того, откуда вы смотрите или даже
double getLightFactor(int x, int z)
, чтобы просто получить свет в определенной точке карты на местности.
Метод должен учитывать, что условия освещения могут меняться во время игры, но, поскольку он основан на поворотах, некоторые тяжелые вычисления могут быть разрешены. Я намерен сделать возможным использование фонариков, поэтому их также необходимо учитывать (но они могут моделироваться и обрабатываться отдельно).
Я буду использовать Ogre3d для управления своей сценой, но я с радостью приму общие решения или даже решения для других двигателей (мой выбор двигателя не высечен в камне).
Идеи, документы или что-то действительно полезное приветствуются!