【发布时间】:2018-09-11 10:09:15
【问题描述】:
您好,提前感谢任何可以帮助我或给我一些建议的人。
我正在开发 Google ARCore 演示,特别是“Hellosceneform”演示,用户可以在其中将 3D 模型放在飞机上。
为了测试不同 3D 资产的导入,我将默认的“Andy”3D 模型更改为我制作的另一个 3D 模型,采用通常的.sfb 格式,并在 Android Emulator 上测试了演示。
问题是这样的:
- 如果我将“
raw”目录中的 3D 资产加载到演示中,效果会很好... - ...但是,在 Android 模拟器中,如果我从 设备文件系统上的目录加载资产(例如,'
sceneform'演示的默认appath)onTapListener中的ModelRenderable(在我的代码中称为andyRenderable)始终为空! 李>
更重要的是:演示在真实手机上完美运行,在两种情况下(raw 和设备文件系统)。
加载 3D 资源的代码是这样的:
File fsfb = new File(local_path + "/" + "prova3.sfb");
Uri usfb = Uri.fromFile(fsfb);
ModelRenderable.builder()
.setSource(this, usfb)
.build()
.thenAccept(renderable -> andyRenderable = renderable)
.exceptionally(
throwable -> {
Toast toast =
Toast.makeText(this, "Unable to load andy renderable", Toast.LENGTH_LONG);
toast.setGravity(Gravity.CENTER, 0, 0);
toast.show();
return null;
});
而 onTapListener 的代码是这样的:
arFragment.setOnTapArPlaneListener(
(HitResult hitResult, Plane plane, MotionEvent motionEvent) -> {
if(nn >= 3 || andyRenderable == null)
{
return;
}
nn++;
【问题讨论】:
-
我正在尝试从 storage/emulated/0/Downloads/andy.sfb 加载如何做到这一点。意思是默认下载文件夹github.com/google-ar/sceneform-android-sdk/issues/367
标签: java android 3d augmented-reality arcore