azf*_*bas 2 android augmented-reality arcore
我希望将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));
Run Code Online (Sandbox Code Playgroud)
默认情况下,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()
Run Code Online (Sandbox Code Playgroud)
它对我有用,对您有用。
顺便说一下,这是我的实践项目https://github.com/swarmnyc/arcore-augmented-image-swarm
| 归档时间: |
|
| 查看次数: |
1180 次 |
| 最近记录: |