Xamarin arcore изменить положение 3d-объекта

Я пытаюсь реализовать ARcore с Xamarin и хочу установить объект 3D в конкретный geolocation (like in pokemongo). Я попытался просмотреть этот образец, который я нашел на этом форуме: https://blog.xamarin.com/augmented-reality-xamarin-android-arcore/, но мне кажется, что я не могу изменить положение трехмерного объекта, и он установлен в соответствии с краном gesture только на plane.

Есть ли способ разместить объект и отследить его? Мне удалось сделать это с ARkit, но до сих пор безуспешно для ARcore Android.

Любые идеи были бы полезны.

1
0
580
1

Ответы 1

Похоже, что оболочка Xamarin для ARCore просто обертывает OpenGL. В результате для рисования объекта требуется задать несколько матриц (Модель, Вид и Проекция):

objectRenderer.UpdateModelMatrix(anchorMatrix, scaleFactor);
objectRenderer.Draw(viewMatrix, projectionMatrix, lightIntensity);

Если вы просто удалите это из цикла foreach (var planeAttachment in planeAttachments) { , тогда вы можете установить anchorMatrix (также известный как modelMatrix) на фиксированный / жестко запрограммированный перевод, тогда он сам исправится относительно камеры.

Вот достойная статья о матрицах просмотра: https://www.3dgep.com/understanding-the-view-matrix/#The_View_Matrix

- Начать бесстыдный плагин -

Однако, если вы готовы попробовать новые платформы, моя команда создала кроссплатформенную библиотеку React-Native для разработки AR / VR (Viro React): https://viromedia.com/viroreact/

Если вы более знакомы с SceneKit на iOS, мы создали аналогичное решение для Android с поддержкой AR / VR (ViroCore): https://viromedia.com/virocore/

Любое решение позволит вам пропустить тонкости OpenGL и просто расположить ваши объекты / модели с относительной легкостью.

т.е.

Расположить вашу модель на расстоянии 1 метра перед собой так же просто, как (в Viro React):

<Viro3dObject source={require("./res/model.obj")} position={[0,0,-1]} type="OBJ" />

Другие вопросы по теме