Javascript 旋转循环网格会产生意外的结果
我有一个three.js项目,其中添加了100个网格,分为10个场景: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
//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:感谢您不仅为我提供了答案,还为我提供了解释。感谢您不仅为我提供了答案,还为我提供了解释。