【问题标题】:Sceneform ARCore load and build a random 3D assetSceneform ARCore 加载并构建随机 3D 资产
【发布时间】:2020-01-27 17:54:18
【问题描述】:

我有一种在 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】:

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

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

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

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

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

    【讨论】:

    • 您好,感谢您的帮助!我决定采用您的最终选择,即创建一个读取所有文件并随机选择一个的函数。使用互联网和编译想法,我想出了一个函数。无论我尝试什么,File 对象都会作为空对象引用返回。即,该文件找不到我引用的目录。这是文件的声明: final File folder = new File("C:\\Users\\mark\\HelloAR\\app\\src\\main\\assets\\");这是错误: final File f : folder.listFiles()
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-24
    • 1970-01-01
    • 2019-09-27
    • 1970-01-01
    • 1970-01-01
    • 2019-07-21
    相关资源
    最近更新 更多