вращение геометрии облака точек на себя

Я создал геометрию, используя некоторые позиции x, y, z. Теперь мне нужно повернуть эту геометрию к ее собственной оси, то есть она должна вращаться, как вращается Земля. Я не хочу, чтобы камера перемещалась, но я хочу, чтобы перемещалась геометрия. Кто-нибудь может помочь? Прямо сейчас код выглядит примерно так: var myGeometry = new THREE.Geometry ();

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;

Но это вращает мои точки по всему экрану, чего я не хочу. Я хочу повернуть их вокруг своей оси


person gzest    schedule 03.03.2015    source источник


Ответы (1)


Вы пытаетесь повернуть каждую вершину вокруг ее собственного локального положения? Или вокруг позиции 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;

person Andrew B    schedule 12.03.2015
comment
Привет, Спасибо за ответ. У меня есть код, который выглядит примерно так: jsfiddle.net/r7ocy1ff Это не работая прямо сейчас, я хочу вращение геометрии облака точек, как вращение аркбола. Я пробовал использовать кватернион, также вращение по оси, но это не то, что я хочу, чтобы вращение по оси работало для меня, но это не вращение на 360 градусов. также вращение должно быть только при наведении курсора мыши / вниз. - person gzest; 13.03.2015
comment
Привет, я мог заставить это вращаться вдоль оси, которая сейчас у меня работает нормально. Теперь может ли кто-нибудь помочь мне добиться этого при перемещении мыши, поскольку этот поворот вращается только в одном направлении, может быть, это 360 градусов, но все же я не могу контролировать его при перемещении мыши - person gzest; 26.03.2015