Расширение матрицы проекции

Я хочу поместить трехмерное сердце внутри человека с помощью дополненной реальности. У меня есть матрица проекции, полученная из встроенных в камеру iPhone. Отображение объектов относительно маркера кадра отлично работает с использованием сгенерированной Vuforia SDK матрицы проекции и позы. Однако я хотел бы разместить объект в сцене за маркером кадра. Чтобы сохранить иллюзию, любой объект за маркером действительно должен иметь изображение камеры перед объектом. Вот рисунок для пояснения.

Проблемная иллюстрация - за изображением должно быть нарисовано сердце

Поскольку матрица проекции будет пространством перед плоскостью изображения, а не дальней плоскостью, мне кажется, что мне нужно либо расширить матрицу проекции, либо поместить весь мир в другую проекцию. Простое перемещение сердца за маркер не работает по очевидной причине, по которой вы никогда не сможете ничего поместить за плоскость изображения. Итак, вопрос, который я задаю, - возможно ли это через какое-то расширение матрицы проекции или есть что-то еще, что сработает?


person Cameron Lowell Palmer    schedule 23.04.2015    source источник


Ответы (1)


Это не совсем ответ программирования, но я постараюсь помочь. Я не программирую для iOS XCode, я использую Vuforia через Unity, и я просто надеюсь, что это дает вам представление о том, как подойти к этому, помимо вашего метода.

В Unity есть нечто, называемое DepthMask, это в основном позволяет объекту появляться за ImageTarget. Но поскольку ваше приложение требует, чтобы вы просматривали ImageTarget, вы можете попробовать OnTrackingFound() и изменить ImageTarget

  • tranform.renderer.material.maintexture в прозрачный материал
  • shader и реализовать opacity уменьшение

Я понимаю, что это не так полезно, как можно было бы ожидать, но я надеюсь, что вы найдете ответ.

Удачи.

person Augmented Jacob    schedule 24.04.2015
comment
Забавно в программировании, иногда это очень похоже на математику. Я изучу эту маску глубины. Я должен добавить, что я не использую Vuforia для рендеринга, я использую OpenGL ES, сгенерированный VES / VTK. - person Cameron Lowell Palmer; 24.04.2015
comment
Прошу прощения, я имел в виду, что это не совсем программный ответ. Unity обычно выполняет рендеринг и все такое, поэтому я мало что об этом знаю. - person Augmented Jacob; 24.04.2015
comment
Я действительно хочу попробовать Unity, он должен быть лучше, чем этот беспорядок. :) - person Cameron Lowell Palmer; 24.04.2015
comment
Это так, но вы начинаете чувствовать себя меньше Разработчиком и больше Дизайнером, когда делаете: P - person Augmented Jacob; 24.04.2015