如何在目标图像上完全适合AR视图渲染?



我希望将AR ViewRenderable放置在现实世界的目标图片上,并完全适合其边界。 虽然ViewSizer用于更改AR对象的大小,但它全局执行(为每种情况设置dpPerMeter(。但是,我想根据目标的大小对其进行缩放,

我认为可以通过setLocalScale方法以及getExtentX和getExtentZ来完成一些事情,但不确定如何为我的事业设置参数。

看看当前的代码片段:

setAnchor(image.createAnchor(image.getCenterPose()));
Node cornerNode = new Node();
cornerNode.setParent(this);
cornerNode.setLocalRotation(new Quaternion(new Vector3(1,0,0), -90));
cornerNode.setLocalPosition(new Vector3(0.0f, 0.0f, 0f));
cornerNode.setRenderable(targetImage.getNow(null));

默认情况下,250dp 等于 1 米,但您可以将其更改为ViewRenderable.builder().setSizer(DpToMetersViewSizer(you_size))

您必须通过图像大小和AR核心估计大小来计算比例,因此请添加这些代码,例如

// in this example, the image is 100 cm x 66 cm
val imageWidth = 1f //  = 1m
val imageHeight = 0.66 // = 66 cm
val scaledWidth = imageWidth / image.extentX
val scaledHeight = imageHeight / image.extentZ
// scale the Node
node.localScale = Vector3(scaledWidth, scaledHeight, scaledWidth)
// also, my view_wall.xml is 250dp x 166dp and the VerticalAlignment is center, like
val wall = ViewRenderable.builder().setView(this, R.layout.view_wall)
.setVerticalAlignment(ViewRenderable.VerticalAlignment.CENTER)
.build()

它对我有用,帮助它对你有用。

顺便说一下,这是我的实践项目 https://github.com/swarmnyc/arcore-augmented-image-swarm

最新更新