В настоящее время я работаю над внутренней навигацией с помощью 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
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Позиция-якорь не работает, когда якорь находится в положении: исправлено
Anonymous » » в форуме Html - 0 Ответы
- 38 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Позиция-якорь не работает, когда якорь находится в положении: исправлено
Anonymous » » в форуме Html - 0 Ответы
- 35 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Позиция-якорь не работает, когда якорь находится в положении: исправлено
Anonymous » » в форуме Html - 0 Ответы
- 35 Просмотры
-
Последнее сообщение Anonymous
-