Sceneform ARCore загрузить и построить случайный 3D-актив - PullRequest
0 голосов
/ 27 января 2020

У меня есть метод, который создает и порождает 3D-актив в среде AR. 3D-актив - это файл .sfb, который хранится в папке метаданных. У меня есть несколько 3D-ресурсов в папке метаданных, и я бы sh выбрал случайный актив, когда вызывается эта функция. Это код, который у меня есть для порождения указанного c ресурса:

private void addCreatureToScene() {

    ModelRenderable
            .builder()
            **.setSource(this, Uri.parse("20170219_Dragon_small.sfb"))**
            .build()
            .thenAccept(renderable -> {

                    Node node = new Node();
                    node.setRenderable(renderable);
                    scene.addChild(node);

                    Random random = new Random();
                    int x = random.nextInt(6);
                    int z = random.nextInt(6);
                    int y = random.nextInt(5);

                    z = -z;

                    node.setWorldPosition(new Vector3(
                            (float) x,
                            y / 10f,
                            (float) z
                    )); 
            });
} 

Код .setSource, выделенный полужирным шрифтом, - это место, где указан конкретный c 3D-актив. Есть ли способ случайного выбора 3D-ресурса из папки метаданных? Спасибо за вашу помощь.

1 Ответ

0 голосов
/ 28 января 2020

Чтобы помочь вам упростить эту проблему, вы должны попытаться разбить ее на более мелкие цели. Например, здесь вы пытаетесь:

  1. Выбрать случайный файл из папки
  2. Поместить этот объект в AR

Поскольку у вас уже есть 2-й шаг, сложный шаг, понял, теперь посмотрим на первый шаг независимо от него. Вопрос, который вы задаете, состоит в том, чтобы выбрать случайное имя файла.

Есть несколько способов добиться этого. Самый простой из них: если вы уже знаете, что это за имена, вы можете создать список java этих имен, а затем использовать java.util.Random, чтобы получить случайное имя. Подробнее здесь: https://www.geeksforgeeks.org/randomly-select-items-from-a-list-in-java/

В противном случае вам понадобится функция для чтения всех файлов в папке, а затем случайного выбора из них. Надеюсь, это поможет.

...