данные камеры из студии Google Earth

avatar
Plutovman
8 августа 2021 в 23:28
137
0
1

Я экспортирую данные из Google Earth Studio, используя формат JSON. Я хотел бы импортировать эти данные в 3D-приложение, такое как Maya или houdini. У меня вопрос конкретно об ориентации камеры. Кажется, я не могу сопоставить данные вращения камеры по осям xyz, которые я вижу в файле JSON, со значениями панорамирования и наклона, которые я установил в Google Earth Studio. Например, из интерфейса, вот настройки камеры:

cam lon= 0
cam lat= 33.9165151812 
cam alt = 1725 m
cam pan = 0  (looking straight)
cam tilt = 0 (pointing nadir)

Это превращается в следующий вектор вращения:

rx=180 | ry=-56.0834848188 | rz=-89.9999999998

Примечание. Я использую Python для интерпретации этих данных. В идеале я хотел бы перепроектировать эти углы rx, ry, rz, чтобы получить обратно значения панорамирования/наклона/крена, которые я затем могу использовать в своем программном обеспечении для 3D.

Буду признателен за любые ваши советы. Ниже приведен план того, что я сделал до сих пор:

lat = camdata["cameraFrames"][f]["coordinate"]["latitude"]
lon = camdata["cameraFrames"][f]["coordinate"]["longitude"]
alt = camdata["cameraFrames"][f]["coordinate"]["altitude"]

xEcef,yEcef,zEcef = geodetic_to_ecef(lat, lon, alt)  # get earth-centered, earth-fixed coords
xEast, yNorth, zUp = ecef_to_enu(xEcef,yEcef,zEcef,lat0,lon0,alt0) # get local east, north up coords relative to a reference lat0,lon0,alt0

 # express in y-up coords
 txmod = xEast
 tzmod = -yNorth
 tymod = zUp

 rx = camdata["cameraFrames"][f]["rotation"]["x"]
 ry = camdata["cameraFrames"][f]["rotation"]["y"] 
 rz = camdata["cameraFrames"][f]["rotation"]["z"]

 # now I have to use these rotations in conjunction with the camera's lat,lon, alt
 # to get back pan/tilt/roll values
Источник
robthebloke
11 августа 2021 в 03:15
0

В Maya установите для поворотных осей камеры значение (0, 0, -90). Это вращение Эйлера должно тогда просто работать.

Plutovman
12 августа 2021 в 09:14
0

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

robthebloke
13 августа 2021 в 00:10
0

Эм. Опубликованные вами данные описывают вращение: 33,9165151812 вокруг широты, 0 вокруг долготы. Результирующие значения вращения Эйлера описывают камеру, которая использует оси Z для движения вверх и ориентирована вниз по осям Y. Maya обычно находится в вертикальном положении, поэтому быстрое локальное вращение на 90 градусов фиксирует это смещение. Бесполезно говорить о трансформациях, которых не существует. Я могу говорить только о том, что вы написали выше, что решается с помощью -90 в rotateAxes. Я буквально смотрю на значения на камере в Maya.

Ответы (0)