我希望将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));
答案 0 :(得分:5)
默认情况下,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