Привет и заранее спасибо всем, кто может мне помочь или дать мне несколько советов.
Я работал над демонстрацией Google ARCore, в частности над "Hellosceneform
", где пользователь может поместить 3D-модель на плоскость.
Чтобы протестировать импорт различных 3D-ресурсов, я заменил стандартную 3D-модель "Andy" на другую, сделанную мной 3D-модель в обычном формате .sfb
, и протестировал демо-версию на эмуляторе Android.
Проблема такова:
- , если я загружаю 3D-актив из каталога "
raw
" в демоверсию, работает отлично ...
- ... НО , в эмуляторе Android , если я загружаю ресурс из каталога в файловой системе устройства ( например, по умолчанию
appath
демонстрации 'sceneform
') ModelRenderable
(называемый andyRenderable
в моем коде) в onTapListener
всегда равно нулю!
Более важно : демонстрация отлично работает на реальном телефоне, в обеих ситуациях (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++;