如何在目标图像上完全拟合 AR ViewRenderable?
How to completely fit an AR ViewRenderable on target image?
我希望将 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
我希望将 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