【发布时间】:2018-07-24 07:26:16
【问题描述】:
以下是我构建 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);
此外,如果我将 makeOpaqueWithTexture 替换为 makeOpaqueWithColor 并且颜色为红色,那么整个事情工作正常(即我可以看到球体)
我必须在此处进行哪些更改才能看到带有地球纹理的球体?
【问题讨论】:
-
您可以尝试将 jpg 移动到 raw 吗?我认为纹理构建器仅适用于原始资源(或资产)。
-
那我应该把原始图像放在哪里呢?我无法将它放在可绘制文件夹中。此外,我认为没有办法将 jpg 转换为 raw(虽然有相反的方法)
-
您可以在 res 目录中创建一个名为“raw”的目录并将 jpg 文件放入其中。无需转换格式。然后,您可以在代码中将其引用为 R.raw.earth。 raw 文件夹按原样存储文件,而可绘制资源捆绑在一起,可以根据屏幕密度具有不同的内容。
标签: augmented-reality arcore sceneform