three.js-设置对象相对于其自身轴的旋转

three.js-设置对象相对于其自身轴的旋转,three.js,Three.js,我试图用点云制作一个静态的3D棱镜,每个点云中有特定数量的粒子。我已经得到了棱镜每一侧的角坐标,基于旋转角度,并尝试在这些坐标所限定的区域内繁殖粒子。相反,生成的点云只保留了左下角的坐标 截图: 我尝试设置每个云对象的旋转,使其边缘相交,但它们将仅围绕世界中心旋转。我想这与旋转矩阵和欧拉角有关,但是,我已经连续三天试图解决它们了,我已经绝望了。我是一名社会学家,不是开发人员,在这个项目之前我从未接触过图形 请帮忙?如何设置棱镜每个面上的旋转?或者也许有一种更合理的方法让粒子首先在正确的区域繁殖

我试图用点云制作一个静态的3D棱镜,每个点云中有特定数量的粒子。我已经得到了棱镜每一侧的角坐标,基于旋转角度,并尝试在这些坐标所限定的区域内繁殖粒子。相反,生成的点云只保留了左下角的坐标

截图:

我尝试设置每个云对象的旋转,使其边缘相交,但它们将仅围绕世界中心旋转。我想这与旋转矩阵和欧拉角有关,但是,我已经连续三天试图解决它们了,我已经绝望了。我是一名社会学家,不是开发人员,在这个项目之前我从未接触过图形

请帮忙?如何设置棱镜每个面上的旋转?或者也许有一种更合理的方法让粒子首先在正确的区域繁殖

守则:

// draw the particles

var n = 0;

do {

    var geom = new THREE.Geometry();    
    var material = new THREE.PointCloudMaterial({size: 1, vertexColors: true, color: 0xffffff});    

    for (i = 0; i < group[n]; i++) {

        if (geom.vertices.length < group[n]){

            var particle = new THREE.Vector3(

                Math.random() * screens[n].bottomrightback.x + screens[n].bottomleftfront.x,                    
                Math.random() * screens[n].toprightback.y + screens[n].bottomleftfront.y,                   
                Math.random() * screens[n].bottomrightfront.z + screens[n].bottomleftfront.z);

           geom.vertices.push(particle);       
           geom.colors.push(new THREE.Color(Math.random() * 0x00ffff));             
        }
    }

    var system = new THREE.PointCloud(geom, material);
    scene.add(system);

    **// something something matrix Euler something?**


n++
}           
while (n < numGroups); 
我尝试设置每个云对象的旋转,使其 边相交,但它们将仅围绕世界中心旋转

它们确实只围绕0,0,0旋转。然后,简单的解决方案是将对象移动到中心,旋转它,然后将其移回原始位置

例如,未测试的代码可能需要一些调整:

var m = new THREE.Matrix4();

var movetocenter = new THREE.Matrix4();
movetocenter.makeTranslation(-x, -y, -z);

var rotate = new THREE.Matrix4();
rotate.makeRotationFromEuler(); //Build your rotation here

var moveback = new THREE.Matrix4();
moveback .makeTranslation(x, y, z);

m.multiply(movetocenter);
m.multiply(rotate);
m.multiply(moveback); 

//Now you can use geometry.applyMatrix(m)

考虑在棱镜的形状中创建几何学,然后在几何学的面内生成随机点:三。几何。您可以在examples/js/utils目录中找到GeometryUtils.js。先试试圆柱几何。啊哈,我希望有类似的东西存在,谢谢!突然间,矩阵变得更有意义了。这是我错过的乘法步骤。谢谢