2014-01-24 68 views
1

我正在创建一个标准为new THREE.CubeGeometry的多维数据集。我也在改变网格的位置(x,y,z),并将它添加到场景中。稍后当用户点击该选项时,我想在立方体的所有六个角上画一个立方体。我怎样才能得到坐标系中每个顶点的位置?Three.js中的当前顶点位置

回答

0

你可以简单地做:

var geometry = new THREE.CubeGeometry(...); 
var verices = geometry.vertices; 
+0

是的,我知道这件事,但问题是,在我移动整个Mesh后,顶点不会给我目前的坐标。 – user1736479

+1

你在找吗? http://stackoverflow.com/questions/11495089/how-to-get-the-absolute-position-of-a-vertex-in-three-js btw。立方体有8个角;) – GuyGood

0

如果u寻找8个顶点/角落 ... http://jsfiddle.net/ebeit303/54uQ9/

function addShapes() { 
width = 100; 
height = 100 
depth = 100; 
var geometry = new THREE.CubeGeometry(width, height, depth); 
var material = new THREE.MeshBasicMaterial({color:0xffccff, side:2, overdraw:true}); 

mesh = new THREE.Mesh(geometry, material); 
group.add(mesh); 
mesh.position.set(10,20,20); 
var x = mesh.position.x; 
var y = mesh.position.y; 
var z = mesh.position.z; 
console.log(geometry.vertices); 
var len = geometry.vertices.length; 
for(var i = 0; i < len; i++){ 
    var vx = geometry.vertices[i].x; 
    var vy = geometry.vertices[i].y; 
    var vz = geometry.vertices[i].z; 
     var material1 = new THREE.MeshBasicMaterial({color:Math.random()*0xffffff, side:2, overdraw:true, opacity:0.6, transparent:true}); 
    var mesh1 = new THREE.Mesh(geometry, material1); 
    group.add(mesh1); 
    mesh1.position.set((vx*2)+x,(vy*2)+y,(vz*2)+z); 
} 
} 

这里的立方体现在包括8个顶点/角落,新的立方体被绘制,并在中间立方体的每个顶点上的位置,其简单的逻辑... cubegeometry - geo metry.vertices位置用于简单的计算....只是经过的jsfiddle链接...它可能给你一些公平的想法...