плавный перевод в сочетании с компасом

Я создаю приложение дополненной реальности для Android и использую jMonkey в качестве своего 3D-движка. Я хочу сделать простую вещь. Переместите объект с левой стороны экрана вправо (ось X), изменив азимут обзора (я получил его от компаса). Я могу рассчитать, где находится объект (визуализированный объект имеет местоположение GPS), поэтому я могу сказать, смотрю ли я прямо или, может быть, он слева или справа. Теперь моя проблема заключается в плавном перемещении и вычислении сдачи для локального перевода. Мои вопросы: 1. как я могу рассчитать положение в локальном переводе для объекта на основе азимута, который у меня есть 2. как сделать изменение локального перевода плавным. Теперь, когда я изменяю значение (например) с -4 на -1, пространственные скачки. Я хотел бы двигаться плавно. Я пытался использовать Cinematic, но либо он не для этого, либо я не использую его должным образом.

О расчете я пробовал что-то вроде этого

(objectAzimuth - azimuthWhereIlook) / offset

где смещение - это масштаб оси X, например, если мой диапазон ‹-20, 20>, смещение равно 40

разница

 (objectAzimuth - azimuthWhereIlook)

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


person Fixus    schedule 27.05.2015    source источник
comment
не уверен, что понимаю, что вы пытаетесь сделать. но разве вы не можете просто вращать камеру вместо перемещения объектов?   -  person 1000ml    schedule 31.05.2015
comment
@1000 мл - привет. почему вы думаете, что вращение лучше подходит? даже в этом случае это все равно не решит проблему, потому что мне нужно объединить вращение и положение обоих объектов (пользователя и 3D-объекта, который визуализируется), поэтому мне все еще нужно перевести положение во внутреннее положение   -  person Fixus    schedule 01.06.2015
comment
Обычно я предпочитаю строить 3D-сцену, как она есть в реальности: создайте сопоставление координат GPS с «игровыми» координатами и поместите объекты там, где они должны быть. Затем свяжите вращение смартфона с вращением виртуального аватара (камеры). Преобразование Modelview позаботится об объединении всех позиций и т. д. Это делает сцену более логичной, особенно при работе с несколькими объектами. В конце концов, именно поэтому мы используем сценограммы.   -  person 1000ml    schedule 02.06.2015
comment
спасибо за обновление. Я работаю и буду работать только с одним пространственным. У меня есть вращение (когда я перемещаюсь по местоположению GPS), я вращаю объект по оси X. Но когда я двигаюсь вперед/назад в сторону, я меняю локальный перевод пространственного. Я добавил MotionPath, и он начал работать очень хорошо. Как вы думаете, это решение летучей мыши?   -  person Fixus    schedule 02.06.2015
comment
В своем вопросе вы не описываете свою первоначальную проблему, поэтому о ней трудно что-либо сказать. Какова цель отображаемого объекта? Как часто он меняет свое положение? Вам нужно сглаживание только для красивой анимации или вы пытаетесь избавиться от дрожания на входе компаса? В любом случае, я рад, что вы нашли свое решение. Я по-прежнему рекомендую вам изучить пользовательские элементы управления jME, которые являются хорошим способом реализации пространственного поведения: ссылка   -  person 1000ml    schedule 02.06.2015
comment
Спасибо за ваши советы. Я посмотрю на проблему с другой точки зрения :)   -  person Fixus    schedule 02.06.2015