Estoy tratando de hacer una función que aleatorice la ubicación de algunas nubes que importé, pero el problema es que genera la cantidad de nubes, ¡pero en la misma posición! Aleatoricé la posición, pero cuando se ejecuta el código tengo como 10 nubes en la misma posición. ¿Que puedo hacer? este es el codigo:
loader.load('/clouds/clouds1/scene.gltf', function (clouds1) { var clouds1array = [] function addClouds1(){ for (var i = 1; i < 10; i++) { const clouds1Mesh = clouds1.scene const clouds1Position = clouds1Mesh.position clouds1Position.x = Math.random() * 10 clouds1Position.y = Math.random() * 10 clouds1Position.z = (Math.random() - 0.5 ) * 300 clouds1Mesh.scale.setX(0.05) clouds1Mesh.scale.setY(0.05) clouds1Mesh.scale.setZ(0.05) scene.add(clouds1Mesh) clouds1array.push(clouds1Mesh) } } addClouds1() }) editar: la estructura de clouds1.scene es esta: 
No se porque tiene esta cantidad de hijos, trate de resolver con la respuesta, pero sigue sin funcionar. El tercer hijo al final contiene la malla, y traté de usarla para que funcionara, pero dice que no puedo usarla en la función scene.add()
editar: ¡Resolví el problema! Solo tuve que poner el bucle for fuera de la función de carga
for(let i = 0; i < 30; i+= 3) loader.load('/clouds/clouds1/scene.gltf', function (clouds1) { const cloud = clouds1.scene const child1 = clouds1.scene.children[0].children[0].children[0].children[2].children[0] child1.material = new THREE.MeshStandardMaterial({ emissive: 'white', emissiveIntensity: 0.5}) cloud.scale.set(0.05, 0.05, 0.05) cloud.position.x = (Math.random() - 0.5) * 500 cloud.position.y = (Math.random() + ((Math.random() + 20 ) + 70)) cloud.position.z = (Math.random() - 1) * 500 cloud.rotation.x = Math.random() cloud.rotation.y = Math.random() cloud.rotation.z = Math.random() scene.add(cloud) })Los resultados de GLTFLoader , que tiene como clouds1 , es un objeto genérico, del que extrae correctamente clouds1.scene . Sin embargo, clouds1.scene también es un único objeto de Scene . Si tiene 10 nubes en el modelo GLTF que cargó, entonces clouds1.scene tendrá 10 hijos, y deberá recorrerlos de la siguiente manera:
loader.load('/clouds/clouds1/scene.gltf', function (clouds1) { var clouds1array = [] const clouds1Children = clouds1.scene.children for (var i = 1; i < 10; i++) { const clouds1Mesh = clouds1Children[i] const clouds1Position = clouds1Mesh.position clouds1Position.x = Math.random() * 10 clouds1Position.y = Math.random() * 10 clouds1Position.z = (Math.random() - 0.5 ) * 300 clouds1Mesh.scale.setX(0.05) clouds1Mesh.scale.setY(0.05) clouds1Mesh.scale.setZ(0.05) scene.add(clouds1Mesh) clouds1array.push(clouds1Mesh) } })