Перспективные проекции - имитируют реальное зрение человека: объекты кажутся меньше по мере удаления, а параллельные линии сходятся в точках на горизонте.

  1. Одноточечная (фронтальная) перспектива: Все линии сходятся в одной точке на горизонте. Создает эффект взгляда на длинный коридор или железную дорогу, уходящую вдаль.
  2. Двухточечная (угловая) перспектива: Линии сходятся в двух точках на горизонте. Классический вид, когда вы смотрите на угол здания, видя сразу две его стены
  3. Трехточечная перспектива: Добавляет третью точку схода, обычно вверху или внизу. Создает эффект “взгляда с высоты птичьего полета” или от первого лица с сильным наклоном головы. Используется для самых драматичных и реалистичных ракурсов

В jMonkeyEngine уже есть готовая FlyCam для свободного перемещения камеры

FlyByCamera flyCam = this.getFlyByCamera(); flyCam.setEnabled(true); // Включаем управление WASD + мышь flyCam.setMoveSpeed(10.0f); // Скорость перемещения flyCam.setRotationSpeed(2.0f);// Скорость вращения

Вы не указали, какую перспективу хотите реализовать в вашем Java-движке. То-ли свободное перемещение точки зрения, то-ли изометрию.

Параллельные проекции (ортографические) - не учитывает расстояние до объекта. Создается эффект “чертежа” или “плана”, который часто используют в стратегиях, головоломках и для создания игр с видом “2.5D”.

  1. Ортогональная проекция: лучи проекции перпендикулярны экрану. Это классический вид сверху, сбоку или спереди без искажений
  2. Косоугольная проекция: Лучи проекции падают на экран под углом. Позволяет увидеть одновременно несколько граней объекта, что добавляет объемности 2.1) Изометрическая проекция: Самый популярный подвид, где все три оси имеют одинаковый масштаб. В играх часто используют ее вариацию с соотношением пикселей 2:1, чтобы избежать искажений на пиксельной графике 2.2) Проекция “Три четверти”: Похожа на изометрию, но часто более простая, вид “в фас и немного сверху” (как в ранних Final Fantasy) 2.3) Кавалье и Кабине: Специфические виды косоугольных проекций, где масштаб по одной из осей сохраняется (Кавалье) или уменьшается вдвое (Кабине) для большей реалистичности

Переключение камеры в ортографический режим выполняется одним вызовом функции.

Для того чтобы сделать камеру ортографической, достаточно вызвать метод setParallelProjection() с параметром true

// Получаем основную камеру приложения Camera cam = this.getCamera();

// Включаем параллельную (ортографическую) проекцию cam.setParallelProjection(true);

Важно знать, что при использовании параллельной проекции может потребоваться дополнительная настройка фрустума (усеченной пирамиды видимости), чтобы правильно отображать размер вашей сцены.

// Настройка ортографического фрустума под размер экрана float aspect = (float) cam.getWidth() / cam.getHeight(); float viewSize = 20.0f;

cam.setFrustum(-1000, 1000, -viewSize * aspect, viewSize * aspect, viewSize, -viewSize);