以下是我用于构建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,但将颜色设置为Red,则表示整个过程工作正常(即,我可以看到球体)
为了能够看到上面带有地球纹理的球体,我必须在此处进行哪些更改?
答案 0 :(得分:1)
目前Google Sceneform 1.8
支持以下格式的3D资源: .obj
, .glTF
,但不支持动画)和 .fbx
(带有或不带有动画)。支持的纹理格式为:.mtl
,.bin
,.png
和.jpg
。
验证项目的app文件夹中是否包含sampledata文件夹。要创建文件夹,请在“项目”窗口中右键单击应用程序文件夹,然后选择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
)将在您的项目中生成。如果您是第一次导入模型,请使用默认值。
希望这会有所帮助。
答案 1 :(得分:0)
好的,我得到了答案。它不接受jpg文件,但接受png文件。奇怪的东西!