Javascript 旋转循环网格会产生意外的结果

Javascript 旋转循环网格会产生意外的结果,javascript,three.js,Javascript,Three.js,我有一个three.js项目,其中添加了100个网格,分为10个场景: //add 100 meshes to 10 scenes based on an array containing 100 elements for (var i = 0; i < data.length; i++) { mesh = new THREE.Mesh(geometry, material); //random positions so they d

我有一个three.js项目,其中添加了100个网格,分为10个场景:

//add 100 meshes to 10 scenes based on an array containing 100 elements
    for (var i = 0; i < data.length; i++) {    
        mesh = new THREE.Mesh(geometry, material);    
        //random positions so they don't spawn on same spot
        mesh.position.x = THREE.Math.randInt(-500, 500);
        mesh.position.z = THREE.Math.randInt(-500, 500); 
// Assign 10 meshes per scene.
var sceneIndex = Math.floor(i/10);
scenes[sceneIndex].add(mesh);
我还编写了一个功能,可以围绕场景中心旋转网格

但我不知道如何将旋转功能应用于所有网格,同时仍将它们划分为相应的场景。这听起来可能太模糊了,所以我有一个包含所有相关代码的

如果您将这两行注释回中,您将看到网格都移动到
场景[0]
,并且它们都按照我想要的方式旋转,但是我仍然需要将它们划分到各自的场景中

spinningRig.add(mesh);
scenes[0].add(spinningRig);

代码应该是什么样子的?它的逻辑是什么?

逻辑相当简单。最简单的格式是每个场景都有一个单独的spinningRig——本质上是每个场景的一组网格

创建每个场景时,还将创建一个spinningRig并将其添加并指定给该场景:

// Setup 10 scenes
for(var i=0;i<10;i++) {
  scenes.push(new THREE.Scene());

  // Add the spinningRig to the scene
  var spinningRig = new THREE.Object3D();
  scenes[i].add(spinningRig);

  // Track the spinningRig on the scene, for convenience.
  scenes[i].userData.spinningRig = spinningRig;
} 
最后,旋转指定给当前场景的旋转装备:

currentScene.userData.spinningRig.rotation.y -= 0.025;

请参阅jsiddle:

逻辑相当简单。最简单的格式是每个场景都有一个单独的spinningRig——本质上是每个场景的一组网格

创建每个场景时,还将创建一个spinningRig并将其添加并指定给该场景:

// Setup 10 scenes
for(var i=0;i<10;i++) {
  scenes.push(new THREE.Scene());

  // Add the spinningRig to the scene
  var spinningRig = new THREE.Object3D();
  scenes[i].add(spinningRig);

  // Track the spinningRig on the scene, for convenience.
  scenes[i].userData.spinningRig = spinningRig;
} 
最后,旋转指定给当前场景的旋转装备:

currentScene.userData.spinningRig.rotation.y -= 0.025;

请参阅jsiddle:

感谢您不仅为我提供了答案,还为我提供了解释。感谢您不仅为我提供了答案,还为我提供了解释。