Добавьте сглаживание к движку камеры - PullRequest
1 голос
/ 11 марта 2020

Привет У меня есть скрипт, который регулирует расстояние камеры в единое целое, чтобы убедиться, что объект всегда полностью виден из камеры. Я делаю это так:

Vector3 characterSize = UpdateBounds(totalPoints).size;
float objectSize = Mathf.Max(Mathf.Max(characterSize.x / 2, characterSize.y / 2), characterSize.z / 2);
float cameraView = 2f * Mathf.Tan(0.5f * Mathf.Deg2Rad * Camera.main.fieldOfView);   
float rigRadius = cameraPadding * objectSize / cameraView;

В этом случае rigRadius - это расстояние от объекта, чтобы убедиться, что изображение с камеры содержит весь объект.

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

Так как мне настроить этот код, чтобы добавить какое-то значение сглаживания? Я просто не могу понять это.

Насколько мне удалось выяснить, мне нужно сгладить значение rigRadius, но я не знаю, как: (

1 Ответ

0 голосов
/ 11 марта 2020

Имеют радиус target, к которому плавно движется радиус current.

Для получения наилучших (-i sh) результатов используйте формулу, в которой "скорость" сглаживания зависит от насколько далеко текущая ситуация от целевой ситуации (Примечание: в этом случае ситуация = радиус). Другими словами, скорость масштабирования зависит от текущего состояния масштабирования, а не от фиксированной начальной точки.

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

Вот достойное руководство по этому для 2D: https://youtu.be/AvnrywsoTe0

Обратите внимание, как Лепр использует текущий размер камеры орто, а не фиксированный «начальный» размер орто, чтобы применить масштабирование, эффективно делая эффект, который я описал, где скорость масштабирования зависит от текущего увеличения и его «расстояния» до целевого увеличения.

...