【发布时间】:2019-09-25 10:05:06
【问题描述】:
我正在尝试为数组中的每个项目向我的 three.js 场景中添加一个对象。我无法判断所有对象是否都添加到场景中,因为它们都添加到相同的位置,而且我不知道如何更改每个对象的位置。
下面是代码循环并为数组中的每个项目添加一个立方体:
var geometry = new THREE.BoxGeometry( 1, 1, 1 );
var material = new THREE.MeshBasicMaterial( { color: 0x00ff00 } );
var cube = new THREE.Mesh( geometry, material );
getData()
async function getData() {
const response = await fetch('/api/indexvr');
const data = await response.json();
console.log(data)
for (var i=0; i<data.length; i++) {
try {
scene.add( cube );
// cube.position.y = i //1++
} catch (e) {
console.error(e)
}
}
}
camera.position.z = 5;
我也尝试过在 for 循环中声明立方体及其位置,但这也不起作用。我需要所有对象都是可见的,并且它们的位置是动态的,具体取决于数组中的数量,例如像相机周围的圆圈,如果超过 10/15,将 y 轴增加 4 并再次继续圆圈。我不知道如何或找到帮助文档。有什么想法或链接可以提供帮助吗?提前致谢。
【问题讨论】:
-
您需要为每个要显示的东西创建一个新的网格。换句话说,如果您想在屏幕上看到 10 个立方体,那么您需要调用
new THREE.Mesh(...)10 次并将它们中的每一个添加到场景中。 -
那么根本就没有办法通过遍历 for 循环或 for each 来添加网格?