2015-03-03 45 views
0

我已经创建了几何使用一些x,y,z位置。现在我必须将这个几何体旋转到它自己的轴上,即它应该像地球一样旋转。我不想让相机移动,但我希望移动几何体。 有人可以帮忙吗?代码现在是这样的: var myGeometry = new THREE.Geometry();threejs点云几何旋转本身

for(i=0;i<n;i++) 
{ 
    vertex.x = green_arr[i]; 
    vertex.y = green_arr[i+1]; 
    vertex.z = green_arr[i+2]; 
    myGeometry.vertices.push(vertex); 
} 
var particleCube = new THREE.PointCloud(myGeometry, shaderMaterial); 
particleCube.dynamic = true; 
particleCube.sortParticles = true; 
scene.add(particleCube); 

我有旋转

var time = Date.now() * 0.0004; 
scene.children[0].rotation.y = time; 
scene.children[0].rotation.z = time * 0.7; 

但这旋转我点遍,我不想要的画面。我想旋转它们围绕自己的轴

回答

0

您是否试图围绕它自己的本地位置旋转每个顶点?或者在PointCloud的位置?

它看起来像你当前的代码围绕其原点旋转整个系统。 如果希望每个点周围的自己的本地的轴线旋转,你可以尝试将其添加到自己的独立阵列和循环通过在渲染功能:

for(var p=0; p<particleCube.geometry.length; p++){ 
    particleCube.geometry.vertices[p].rotation.y=time; 
    particleCube.geometry.vertices[p].rotation.z=time*0.7; 
} 

否则,你可以尝试

particleCube.rotation.y=time; particleCube.rotation.z=time*0.7;

+0

嗨, 感谢您的回复 我有这样的代码 http://jsfiddle.net/r7ocy1ff/ 这一个不是现在正在工作 我想旋转点云的几何形状,如弧球旋转。 我试过用四元数,也是沿着轴旋转,但是这个并不是我想要的沿着轴的旋转对我来说是工作的,但那不是旋转360度。旋转应该只在鼠标上/下。 – gzest 2015-03-13 07:34:40

+0

嗨,我可以得到那沿轴旋转,现在对我来说工作正常。现在任何人都可以帮助我在鼠标移动上实现这一点,因为此旋转只能在一个方向上旋转,可能是360度,但仍然无法控制鼠标移动 – gzest 2015-03-26 10:06:33