如何在ARCore中显示PNG图像?

时间:2018-09-10 04:26:14

标签: android image arcore

我想在Arcore中显示2d png图像。我不想使用obj,.smf,imgdb文件和3D图像。我已经提到了很多链接,但是没有一个链接显示如何使用Arcore仅显示2d png图像。

https://github.com/google-ar/arcore-android-sdk

https://developers.google.com/ar/develop/java/quickstart

3 个答案:

答案 0 :(得分:5)

如果使用ViewRenderable of Sceneform,则可以像标准android小部件一样,从2D png图像在AR空间中创建墙。

这是ViewRenderable的布局xml的示例。如您所知,这只是Android应用程序的布局xml;)

<?xml version="1.0" encoding="utf-8"?>
<ImageView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/imageCard"
    android:layout_width="123dp"
    android:layout_height="197dp"
    android:src="@drawable/Your_Image_Resource" />

您可以在Java代码中获取ImageView实例,如下所示,以动态设置源图像。

ViewRenderable.builder()
    .setView(fragment.getContext(), R.layout.imgboard)
    .build()
    .thenAccept(renderable -> {
        ImageView imgView = (ImageView)renderrable.getView();
    });

这是我使用ViewRenderable拍摄的示例,最右边的对象是从png图像创建的。 screenshot of sceneform AR

答案 1 :(得分:0)

我制作了一个免费应用,可平铺数百个png文件(供计算机科学教授使用)。您可以在大约2x4米的大区域中尝试使用:https://play.google.com/store/apps/details?id=a.FlatKmapAR

首先,以HelloAR示例为例,用只是一个正方形对象(少于10行文本)的square.obj替换Andy.obj文件,然后用您的square.png文件替换Andy.png。因为他们使用wave对象格式,所以这是我知道如何做的最简单的方法。一旦知道了,就可以平铺它们以创建带有多个正方形的grid.obj,依此类推...

答案 2 :(得分:0)

是的,除了至少一个vn来定义法线之外,实际上它还需要一些vt来定义纹理,因此f需要像这样的多边形/纹理/法线:

v 0.000000 2.000000 0.000000
v 0.000000 0.000000 0.000000
v 2.000000 0.000000 0.000000
v 2.000000 2.000000 0.000000
vt 0.0 0.0
vt 1.0 0.0
vt 1.0 1.0
vt 1.0 1.0
vn 0.0 1.0 0.0
f 1/1/1 2/2/1 3/3/1 4/4/1