Найти в Дзене
Игровой движок Godot engine

№222. 3D.Look_at() и экспорт из Blender .

Наверное первое, на что вы обратите внимание - отличия направления осей в координатной сетке Godot и Blender. Если внимательно присмотреться - ось Z в блендере это вертикальная ось. А в годо - горизонтальная. В принципе этот факт не должен доставить вам больших проблем, если вы правильно экспортируете 3Д модель. Я буду работать с OBJ форматом. На нём и рассмотрим основные моменты. Давайте создадим в блендере объект , допустим в виде стрелочки, и попробуем перебросить его в годо. Обратите внимание на локальные координаты - расположил я стрелку вдоль оси Z. Ось Y смотрит вверх, X поперек. Открываем меню экспорта в OBJ.
В нём я выставляю продольную (forward) ось Z, а вертикальную (вверх) Y. Открываем модель в годо, и смотрим на локальные координаты: Что-бы увидеть локальные координаты надо продавить вот эту кнопку Итак, модель лежит в сцене, но с перевернутой осью Z.
Мы можем указать -Z в при экспорте, и это исправит ситуацию . Но , давайте пропишем в коде look_at(), и посмотрим куда буде

Наверное первое, на что вы обратите внимание - отличия направления осей в координатной сетке Godot и Blender.

Если внимательно присмотреться - ось Z в блендере это вертикальная ось. А в годо - горизонтальная.

В принципе этот факт не должен доставить вам больших проблем, если вы правильно экспортируете 3Д модель.

Я буду работать с OBJ форматом. На нём и рассмотрим основные моменты.

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

-2

Обратите внимание на локальные координаты - расположил я стрелку вдоль оси Z. Ось Y смотрит вверх, X поперек.

Открываем меню экспорта в OBJ.
В нём я выставляю продольную (forward) ось Z, а вертикальную (вверх) Y.

-3

Открываем модель в годо, и смотрим на локальные координаты:

-4

Что-бы увидеть локальные координаты надо продавить вот эту кнопку

-5

Итак, модель лежит в сцене, но с перевернутой осью Z.
Мы можем указать -Z в при экспорте, и это исправит ситуацию .

Но , давайте пропишем в коде look_at(), и посмотрим куда будет направлена стрелка. Я добавил в сцену сферу, и указал в коде её в качестве цели.

-6
-7

И как мы можем наблюдать, по умолчанию look_at() работает с -Z .

На самом деле, даже если вы экспортируете с -Z из блендера, исправить направление можно при помощи дополнительного аргумента.

-8
-9

Второй аргумент отвечает за то, куда будет направлена локальная ось Y (зеленая стрелка).

-10

На всякий случай - UP, DOWN и прочие , это сокращенная форма записи направления вектора. Например UP это Vector3(0,1,0)

-----

В качестве послесловия .
Если у вас есть на руках модель, у которой все оси сдвинуты, повернуты и вообще смотрят не туда, и у вас нет желания, или возможности её исправлять, то самый простой способ - прокинуть модель через Node3D ноду. И в look_at() указать её, вместо модели.

-11

На этом всё.
Подписывайтесь на канал, при желании
вступайте в группу в ВК.
Удачи в изучении годо