Sceneform ARCore加载并构建随机3D资产

问题描述 投票:0回答:1

我有一种在AR环境中构建和生成3D资产的方法。 3D资产是存储在元数据文件夹中的.sfb文件。我在元数据文件夹中有多个3D资源,并且希望在调用此函数时随机选择一个资源。这是我用于生成特定资产的代码:

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代码是引用特定3D资产的位置。有没有一种方法可以从元数据文件夹中随机选择3D资源?谢谢您的帮助。

java android random arcore sceneform
1个回答
0
投票

为了帮助您简化此问题,应尝试将其分解为较小的目标。例如,您在这里尝试:

  1. 从文件夹中选择随机文件
  2. 将该对象放入AR

由于您已经有了第二步,因此,计算出的复杂步骤现在独立于第一步。您要问的问题是选择一个随机文件名。

有多种方法可以实现。最简单的方法是,如果您已经知道所有这些文件名是什么,则可以创建这些名称的Java列表,然后使用java.util.Random随机获得一个。更多详情:https://www.geeksforgeeks.org/randomly-select-items-from-a-list-in-java/

否则,您将必须具有读取文件夹中的所有文件,然后随机选择这些文件的功能。希望这会有所帮助。

© www.soinside.com 2019 - 2024. All rights reserved.