Местом расположения точки, из которой мы смотрим на сцену в рабочей области 3D вьюпорта, можно управлять через Blender Python API. Мы можем, как считать координаты этой точки и направление взгляда из вьюпорта, так и задать необходимые нам для них значения.
Для начала получим указатель на окно рабочей области 3D вьюпорта:
1 2 3 |
area = next(area for area in bpy.context.screen.areas if area.type == 'VIEW_3D') # <bpy_struct, Area at 0x0000016F1C7E3DC8> |
Теперь мы можем получить координаты исходной точки вьюпорта следующим образом:
1 2 3 |
area.spaces[0].region_3d.view_location # <Vector (-0.0958, -0.1309, -0.1229)> |
Мы получили вектор, из центра 3D сцены, в точку из которой мы смотрим на эту сцену.
Также мы можем получить направление “взгляда” из вьюпорта:
1 2 3 |
area.spaces[0].region_3d.view_rotation # <Quaternion (w=0.7144, x=0.5854, y=0.2429, z=0.2964)> |
Мы получили кватернион из центра сцены по направлению взгляда из 3D вьюпорта.
Еще мы можем получить величину смещения вьюпорта вдоль направления взгляда:
1 2 3 |
area.spaces[0].region_3d.view_distance # 3.4859158992767334 |
И наконец мы можем сами задавать значения для всех этих параметров, чтобы поставить вьюпорт в нужное нам место в сцене.
1 2 3 |
area.spaces[0].region_3d.view_location = (-3.8, -3.6, 0.9) area.spaces[0].region_3d.view_rotation = (0.71, 0.59, 0.24, 0.3) area.spaces[0].region_3d.view_distance = 7.5 |