Я делаю игровой движок на основе холста и задаюсь вопросом, есть ли у кого-нибудь какая-нибудь хорошая информация о том, как достичь перспективы в виде сверху.То, что я ищу, находится где-то посередине между традиционным видом с высоты птичьего полета и старым видом SNES mode7.Просто небольшой угол, чтобы создать иллюзию 3D.
Я пытаюсь выяснить, что будет лучшим способом справиться с перекосом в перспективе.Я не делаю повороты, так что 3D-матрица будет за бортом, но мне нужно иметь возможность справляться с рендерингом слоев карты под постоянным углом, и было бы неплохо, если бы угол был регулируемым.Мне также нужно иметь дело с деформацией глубины.По сути, нижний ряд пикселей должен иметь ширину и высоту 1: 1, тогда для каждой строки он будет, например, на 5% меньше или что-то в этом роде.Я хотел бы иметь возможность предоставить большой холст в качестве текстуры, а затем указать угол камеры в диапазоне от 0 до 90, где 0 - абсолютно горизонтальный, а 90 - вид с высоты птичьего полета.
У всех есть какие-либо учебные пособияили пример кода?Я немного искал в Интернете, но все, что я нашел, кажется либо неподходящим для использования в этом конкретном приложении, либо слишком сложным, выполняя всевозможные сумасшедшие 3D перекосы и ротации.Все, что я хочу, это взять обычную плиточную сетку и немного откинуть ее назад, без поворотов или подобных сложных вещей.
Вот пример того, что я хочу; Вот пример.http://img801.imageshack.us/img801/2176/perspectivesample.jpg
Нижний ряд пикселей имеет соотношение пикселей 1: 1, и каждый ряд выше этого постепенно уменьшается по горизонтали и вертикали.Исходная текстура верхней центральной области обычно составляет примерно половину высоты нижней центральной области, но она была уменьшена по вертикали и горизонтали, чтобы соответствовать перспективе.
Я думаю, что лучше всего подойдет визуализациятекущее состояние области просмотра на другой холст в плоском виде с высоты птичьего полета, с примерно 50% -ым дополнительным пространством сверху и по бокам, затем отрежьте верхнюю треугольную область от него и нарисуйте его на фактическом видимом холсте. * Только 1012 *
проблема в том, что я плохо разбираюсь в математике, когда дело касается вычисления углов и тому подобного.