gpt4 book ai didi

kotlin - 如何调整 ViewRenderable 以匹配 AugmentedImage 大小?

转载 作者:行者123 更新时间:2023-12-02 13:35:33 26 4
gpt4 key购买 nike

我正在 Android 上制作一个小型 AR 应用程序,以从快照中检测 GIF 并使用 AugmentedImages 覆盖实际的 GIF。 ,但我无法获得 ViewRenderable 的大小与检测到的图像匹配,使其完美叠加。

我正在关注 AugmentedImages Sceneform sample来自 Google,将其更改为 Kotlin 并使用我自己的图像手动添加到 AugmentedImageDatabase .

下面是我能得到的最接近的,但它仍然不完全匹配。 gifView设置为 ViewRenderable.builder()并使用一个简单的 XML 文件,显示在代码块之后。我在 .thenAccept 中使用 Glide构建器从 URL 加载正确的 GIF。
AugmentedImageNode

private var gifView: ViewRenderable? = null
...
fun setImageToNode(image: AugmentedImage) {
anchor = image.createAnchor(image.centerPose)

gifView?.sizer = FixedHeightViewSizer(image.extentZ)

val pose = Pose.makeTranslation(0.0f, 0.0f, 0.0f)
val localPosition = Vector3(pose.tx(), pose.ty(), pose.tz())
val centerNode = Node()
centerNode.setParent(this)
centerNode.localPosition = localPosition
centerNode.localRotation = Quaternion(pose.qx(), 90f, -90f, pose.qw())
centerNode.renderable = gifView
centerNode.localScale = Vector3(image.extentX * 15f, image.extentZ * 30f, 1.0f)
}
R.layout.image_item
<?xml version="1.0" encoding="utf-8"?>
<ImageView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/imageView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:srcCompat="@drawable/easy_button" />

没有出现错误消息,但渲染的图像与检测到的图像的大小不匹配。我希望这是动态的,因为显然不是每个 GIF 都具有相同的尺寸。

this screenshot并注意检测到的图像是如何稍微大一点的,并且看起来像是在更清晰的渲染图像周围做一个边框? (与这个问题无关,但即使我设置了正确的配置设置,我的相机也没有自动对焦)

最佳答案

我找到了一种更准确地计算比例的方法。我采用的方法不是尝试缩放可渲染/ImageView 的大小为了适应图像,我只需改变世界的“比例”,这样无论图像有多少像素宽,它都与检测到的增强图像大小相同。如果增强图像具有一定大小,我基本上必须弄清楚一米中有多少像素。下面是我正在使用的代码:

val imageWidth = 400 // TODO Get actual width of image dynamically, just luck that GIPHY images are 400 pixels wide
val viewWidth = (imageWidth / image.extentX).toInt()
gifView?.sizer = DpToMetersViewSizer(viewWidth)

val pose = Pose.makeTranslation(0.0f, 0.0f, 0.0f)
val localPosition = Vector3(pose.tx(), pose.ty(), pose.tz())
val centerNode = Node()
centerNode.setParent(this)
centerNode.localPosition = localPosition
centerNode.localRotation = Quaternion(pose.qx(), 90f, -90f, pose.qw())
centerNode.renderable = gifView

这使得渲染的 GIF 更接近检测到的图像的实际大小。我会继续寻找更好的方法。

关于kotlin - 如何调整 ViewRenderable 以匹配 AugmentedImage 大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58031024/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com