Как получить 3D-модели.gltf из хранилища Firebase в Android-приложение для рендеринга в реальном времени?
У меня есть модель в хранилище Firebase, и я хочу, чтобы она отображалась в реальном времени в моем приложении AR. Вот моя ссылка на хранилище:
private FirebaseStorage storage = FirebaseStorage.getInstance();
private StorageReference storageRef = storage.getReferenceFromUrl("gs://show-b8129.appspot.com/Mesh_Beagle.gltf");
Я попытался передать storageRef.toString() напрямую как модель (которая является Uri) в следующем коде для построения модели:
ModelRenderable.builder().setSource(fragment.getContext(), RenderableSource.builder().setSource(fragment.getContext(), model, RenderableSource.SourceType.GLTF2).setScale(0.01f).build()).setRegistryId(model).build()
И это не сработало. Это дало IllegalArgumentException: Невозможно проанализировать URL, MalformedURLException: неизвестный протокол: содержание.
Затем я попытался использовать Callable и InputStream для передачи Uri(после прочтения этого), проверьте следующее:
Callable modelDownloadTask = new Callable() {
@Override
public InputStream call() throws Exception {
FileInputStream fileInputStream = null;
try {
fileInputStream = new FileInputStream(storageRef.toString());
} catch (FileNotFoundException e) {
e.printStackTrace();
}
return fileInputStream;
}
};
И, передав (Uri) modelDownloadTask.call() в качестве Uri. Но теперь он показывает следующую ошибку:
W/System.err: java.io.FileNotFoundException: gs:/show-b8129.appspot.com/Mesh_Beagle.gltf (No such file or directory)
at java.io.FileInputStream.open0(Native Method)
at java.io.FileInputStream.open(FileInputStream.java:231)
at java.io.FileInputStream.<init>(FileInputStream.java:165)
at java.io.FileInputStream.<init>(FileInputStream.java:112)
Пожалуйста помоги!!! Как заставить Uri модели передавать и отображать модель в реальном времени в моем приложении AR?