В настоящее время я работаю над внутренней навигацией с помощью ARCore от источника до места назначения. Итак, я хочу загрузить навигационные стрелки от источника к месту назначения на горизонтальной поверхности (земле) параллельно с нулевой высотой (не в воздухе) от поверхности. Я перепробовал множество решений и документацию ARCore, но не получил правильного и точного результата.
Я хочу разместить стрелку навигации параллельно нижней горизонтальной поверхности с такой точностью, как здесь. Введите описание изображения здесь. , но иногда это нагрузки внутри поверхности или неточные. введите описание изображения здесь
Кто-нибудь может мне помочь в этом случае? Вот моя функция для объекта Place:
public int placeItem(Renderable r, double dist, float angle, float rotation, float height, boolean rotate) {
Session session = fragment.getArSceneView().getSession();
Frame frame = fragment.getArSceneView().getArFrame();
//Get some anchors to anchor our item to
//Get the phone's pose in ARCore
Pose deviceOrientedPose = frame.getCamera().getPose().compose(
Pose.makeTranslation(0.0f, -0.1f, 0.0f));
//Get the phone's pose in relation to the real world
float heading = visualAnchorCompass.getHeading(session, frame, false);
float cameraFrame = VisualAnchorCompass.getAngleFromPose(deviceOrientedPose);
//Rotate around y axis...
float offset_by = (heading + cameraFrame) % 360;
float from_camera = (rotation - offset_by + 360) % 360;
float rotAngle = (-from_camera + 360) % 360;
Quaternion qt = Quaternion.axisAngle(Vector3.up(), rotAngle);
//Build the node
Anchor anchor = session.createAnchor(deviceOrientedPose);
AnchorNode anchorNode = new AnchorNode(anchor);
anchorNode.setParent(fragment.getArSceneView().getScene());
Node node = new Node();
node.setParent(anchorNode);
node.setRenderable(r);
//Set rotation
if (rotate)
node.setLocalRotation(qt);
//Set angle
float from_camera1 = (angle - offset_by + 360) % 360;
float angrad = ((-from_camera1 + 360) % 360);
Log.d(TAG, "drawing... " + rotation + " intended angle:" + angle + " angrad:" + heading + ",campose" + cameraFrame);
Vector3 pos = new Vector3(-(float) dist * (float) Math.sin(Math.toRadians(angrad)),
0, -(float) dist * (float) Math.cos(Math.toRadians(angrad)));
float[] vec = deviceOrientedPose.getTranslation();
Vector3 camPos = new Vector3(vec[0], vec[1], vec[2]);
Log.d(TAG, "xyz: " + pos.x + "," + pos.z);
pos = Vector3.add(camPos, pos);
node.setLocalPosition(pos);
item_counter++;
items.put(item_counter, node);
return item_counter;
}
Подробнее здесь: https://stackoverflow.com/questions/710 ... e-parallel
ARCore: Как разместить якорь объекта на горизонтальной поверхности параллельно (не в воздухе)? ⇐ Android
Форум для тех, кто программирует под Android
1732717835
Anonymous
В настоящее время я работаю над внутренней навигацией с помощью ARCore от источника до места назначения. Итак, я хочу загрузить навигационные стрелки от источника к месту назначения на горизонтальной поверхности (земле) параллельно с нулевой высотой (не в воздухе) от поверхности. Я перепробовал множество решений и документацию ARCore, но не получил правильного и точного результата.
Я хочу разместить стрелку навигации параллельно нижней горизонтальной поверхности с такой точностью, как здесь. Введите описание изображения здесь. , но иногда это нагрузки внутри поверхности или неточные. введите описание изображения здесь
Кто-нибудь может мне помочь в этом случае? Вот моя функция для объекта Place:
public int placeItem(Renderable r, double dist, float angle, float rotation, float height, boolean rotate) {
Session session = fragment.getArSceneView().getSession();
Frame frame = fragment.getArSceneView().getArFrame();
//Get some anchors to anchor our item to
//Get the phone's pose in ARCore
Pose deviceOrientedPose = frame.getCamera().getPose().compose(
Pose.makeTranslation(0.0f, -0.1f, 0.0f));
//Get the phone's pose in relation to the real world
float heading = visualAnchorCompass.getHeading(session, frame, false);
float cameraFrame = VisualAnchorCompass.getAngleFromPose(deviceOrientedPose);
//Rotate around y axis...
float offset_by = (heading + cameraFrame) % 360;
float from_camera = (rotation - offset_by + 360) % 360;
float rotAngle = (-from_camera + 360) % 360;
Quaternion qt = Quaternion.axisAngle(Vector3.up(), rotAngle);
//Build the node
Anchor anchor = session.createAnchor(deviceOrientedPose);
AnchorNode anchorNode = new AnchorNode(anchor);
anchorNode.setParent(fragment.getArSceneView().getScene());
Node node = new Node();
node.setParent(anchorNode);
node.setRenderable(r);
//Set rotation
if (rotate)
node.setLocalRotation(qt);
//Set angle
float from_camera1 = (angle - offset_by + 360) % 360;
float angrad = ((-from_camera1 + 360) % 360);
Log.d(TAG, "drawing... " + rotation + " intended angle:" + angle + " angrad:" + heading + ",campose" + cameraFrame);
Vector3 pos = new Vector3(-(float) dist * (float) Math.sin(Math.toRadians(angrad)),
0, -(float) dist * (float) Math.cos(Math.toRadians(angrad)));
float[] vec = deviceOrientedPose.getTranslation();
Vector3 camPos = new Vector3(vec[0], vec[1], vec[2]);
Log.d(TAG, "xyz: " + pos.x + "," + pos.z);
pos = Vector3.add(camPos, pos);
node.setLocalPosition(pos);
item_counter++;
items.put(item_counter, node);
return item_counter;
}
Подробнее здесь: [url]https://stackoverflow.com/questions/71049782/arcore-how-can-i-place-an-anchor-of-the-object-on-a-horizontal-surface-parallel[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия