UE4 - Простой способ сфокусировать и сфокусировать камеру на выбранном объекте с помощью чертежа? Как ярлык F в редакторе

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

На лицо я хочу воспроизвести поведение ярлыка F в редакторе:

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

Есть ли простой способ воспроизвести это в чертеже? На самом деле я занимаюсь тригонометрией и использую размер ограничивающей рамки, но я уверен, что есть способ получше. Я не хочу воссоздавать функцию, которая может быть уже доступна (и уже разработана в редакторе).

Изображение: поведение в редакторе, которое я хочу воспроизвести в игре  введите описание изображения здесь


person probitaille    schedule 21.02.2020    source источник


Ответы (2)


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

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

Если вы используете SetActorLocation или World Transform напрямую, камера будет прыгать. Чтобы смягчить это, проверьте текущее местоположение камеры, вычислите новое и создайте сплайн, используя эти две точки в пространстве. Таким образом, вы можете плавно перемещать камеру, используя переменную скорости GetWorldDeltaSeconds и GetLocationAndRotationAlongSpline.

person Fritz    schedule 01.03.2020

Да, есть очень простой способ.

Дело в том...

... чтобы сфокусировать / кадрировать объект, который вы выбрали в Outliner, довольно просто в окне просмотра редактора, просто и затем нажав 'F'.
Как вы и сказали.
На панели с другой стороны, в BlueprintEditor по какой-то неизвестной причине
(трудно поверить, я знаю, но попробуйте .. ^^ ...),
вам просто нужно будет выбрать (fi камеру) в панель компонентов,
(точно так же, как в окне редактора Outliner)
, но после того, как вы выбрали ее там,
вам НЕОБХОДИМО ЩЕЛКНИТЬ на пустом месте где-нибудь в ВИДЕОПОРТЕ. ¯ \ __ (ツ) _ / ¯
После того, как вы щелкнули где-нибудь в окне просмотра Blueprint-Editors, вы просто нажимаете 'F'
и готово:
Ваша камера находится в кадре вашего область просмотра.
(Я знаю, время съесть баг-нет-баг.)

person user1925191    schedule 06.12.2020