java - Sceneform ARCore 加载并构建随机 3D 资源

标签 java android random arcore sceneform

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

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 资源?感谢您的帮助。

最佳答案

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

  1. 从文件夹中随机选择一个文件
  2. 将该对象放置在 AR 中

既然你已经有了第二步,即复杂的步骤,现在看看独立于它的第一步。您问的问题是选择一个随机文件名。

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

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

关于java - Sceneform ARCore 加载并构建随机 3D 资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59936441/

相关文章:

java - Android后台服务最佳实践

java - java ADT中生成0到7的随机数,每个数字出现2次

java - liquibase 中的自动增量

java - 如何将 JComboBox 添加到 JTable 单元格?

java - 如何使用java在netbeans输出中显示网站中的文本

android - 支持android、ios和blackberry操作系统的默认字体列表

java - 通过从扫描仪中读取行来实例化一个 ArrayList,在哪里声明对象?

java - Android Kotlin `.replaceRange` 不会替换 SpannableString 中的文本

c - 显示随机生成的整数的频率

random - 我的 'randomString' 函数不断返回相同的结果