我有一种在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列表,然后使用java.util.Random
随机获得一个。更多详情:https://www.geeksforgeeks.org/randomly-select-items-from-a-list-in-java/
否则,您将必须具有读取文件夹中的所有文件,然后随机选择这些文件的功能。希望这会有所帮助。