如何解决在ArCore Sceneform中在屏幕坐标处创建具有所需高度和宽度的矩形
试图在ArCore Sceneform中的屏幕坐标处绘制具有所需高度和宽度的矩形。但它搞砸了。有时它太大,有时它太小,有时甚至没有对准正确的坐标。
这是我的代码。
@RequiresApi(api = Build.VERSION_CODES.N)
private void drawArRectangle(DrawingResponse drawingResponse) {
View textView = new View(this);
textView.setBackgroundResource(R.drawable.rectangle_drawable_ar);
Camera camera = fragment.getArSceneView().getScene().getCamera();
ViewRenderable.builder()
.setView(fragment.getContext(),textView)
.build()
.thenAccept(viewRenderable -> {
Ray ray = camera.screenPointToRay(((drawingResponse.getX() * width) / 100) + (drawingResponse.getWidth() / 5000) + drawingResponse.getWidth() / 1.2f,((drawingResponse.getY() * height) / 100) + (drawingResponse.getHeight() * 2.5f));
Vector3 drawPoint = ray.getPoint(0.5f);
float[] position = { drawPoint.x,drawPoint.y,drawPoint.z};
float[] rotation = { camera.getWorldRotation().x,camera.getWorldRotation().y,camera.getWorldRotation().z,camera.getWorldRotation().w };
ArSceneView arSceneView = fragment.getArSceneView();
com.google.ar.core.Camera coreCamera = arSceneView.getArFrame().getCamera();
if (coreCamera.getTrackingState() != TrackingState.TRACKING) {
return;
}
AnchorNode anchorNode = new AnchorNode(fragment.getArSceneView().getSession().createAnchor(new Pose(position,rotation)));
anchorNode.setRenderable(viewRenderable);
anchorNode.setLocalScale(new Vector3(drawingResponse.getWidth() / 5000,drawingResponse.getHeight() / 5000,0.4f));
anchorNode.setParent(arSceneView.getScene());
anchorNodes.add(anchorNode);
})
.exceptionally(throwable -> {
Toast toast =
Toast.makeText(this,"Unable to load model",Toast.LENGTH_LONG);
toast.setGravity(Gravity.CENTER,0);
toast.show();
return null;
});
}
有人可以帮我吗?我想念的地方。
谢谢!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。