如何在ARCore中的3D Sphere上放置自定义图像

问题描述 投票:1回答:2

以下是构建3D地球并显示它的代码:

com.google.ar.sceneform.rendering.Texture.Builder builder= com.google.ar.sceneform.rendering.Texture.builder();
builder.setSource(context,R.drawable.earth);
builder.build().thenAccept(texture ->
        MaterialFactory.makeOpaqueWithTexture(context, texture).
                thenAccept(material -> {
                  earthSphereRenderable =
                          ShapeFactory.makeSphere(0.1f, new Vector3(0.0f, 0.0f, 0.0f), material);
                  Toast.makeText(context,"All done",Toast.LENGTH_SHORT).show();})
);

Toast消息即将到来,但我无法看到任何对象。请注意,R.drawable.earth是我放在那里的Earth.jpg文件,我想在AR中显示。

这是我渲染它的地方

cornerNode = new Node();
    cornerNode.setParent(this);
    cornerNode.setLocalPosition(localPosition);
    cornerNode.setRenderable(earthSphereRenderable);

此外,如果我用makeOpaqueWithColor替换makeOpaqueWithTexture,但颜色为红色,那么整个过程工作正常(即我可以看到球体)

为了能够看到带有地球纹理的球体,我必须在这里改变什么?

android augmented-reality arcore
2个回答
1
投票

此时Google Sceneform 1.8支持以下格式的3D资产:.obj,不支持动画的.glTF)和带或不带动画的.fbx。支持的纹理格式为:.mtl.bin.png.jpg

To import a new 3D asset with textures follow these steps:

验证项目的app文件夹是否包含sampledata文件夹。要创建文件夹,请在“项目”窗口中右键单击app文件夹,然后选择New> Sample Data Directory

sampledata文件夹是Android Studio项目的一部分,但其内容不会包含在您的APK中。使用以下任何格式复制3D模型源资产文件(.obj.fbx.gltf)及其所有依赖项:

  • .mtl
  • .bin
  • .png
  • .jpg

进入sampledata文件夹。

不要将这些源文件复制到项目的资产或res文件夹中,因为这会导致它们不必要地包含在您的APK中。右键单击3D模型源资源,然后选择Import Sceneform Asset开始导入过程。

这些值由应用程序的sceneform.asset()中的build.gradle条目使用,并确定将在项目中生成.sfa.sfb - ascii和二进制资产定义 - 文件(以及它们相应的纹理文件.sfm)的位置。如果您是第一次导入模型,请使用默认值。

希望这可以帮助。


0
投票

好的,我得到了答案。它不接受jpg文件,但它接受png文件。奇怪的东西!

© www.soinside.com 2019 - 2024. All rights reserved.