请把这个问题重复一遍,因为这些解决方案对我不起作用,而且对于Three.js来说真的很新。
我在场景中有几个对象,http://www.subirimagenes.com/imagen-captura-9426000.html它是一个地图,但每个区域都是一个对象,并根据它们的位置在平面上。但是现在我想将所有这些对象放在一个坐标中,例如0,0,0,它们都在一起。但如果我把municipios [i] .position.set(0,0,0),它处于相同的位置。当我这样做时,它处于笛卡尔平面的实际位置?
这大致是我的代码。
for(i in $scope.datosMunicipio){
Geometria[i]=new THREE.Geometry();
array_extrude[i]=new Array();
for (var a in vector_lat[i]){
if(a!=0){
if(vector_lat[i][a]==vector_lat[i][a-1]) {
continue;
}
}
Vector[i]=new THREE.Vector3((vector_long[i][a]+75.5)*10,((vector_lat[i][a])-5.5)*10,0);
Geometria[i].vertices.push(Vector[i]);
array_extrude[i].push(Vector[i]);
}
forma_figura[i]=new THREE.Shape(array_extrude[i]);
extrude_geometria[i]=new THREE.ExtrudeGeometry(forma_figura[i],datos_extrusion); // lento
materialFront[i] = new THREE.MeshBasicMaterial( { color: "#FF0000",name:$scope.datosMunicipio[i].nombre} );
municipios[i] = new THREE.Mesh( extrude_geometria[i], materialFront[i] );
充电数据数据库,每个位置的municipios [i]都有一个区域。坐标是数据谷歌地图,长和纬度分别,在这些数字的情况下,在5.5 ...和-75 ..... 每个区域都有自己的0,0,0,因为我所有区域都在同一个0,0,0?
答案 0 :(得分:0)
显然,所有几何图形都已共享相同的坐标系。它们从0,0,0开始,因此将它们移到那里只是将它们发送到“家”。
如果您致电extrude_geometria[i].computeBoundingBox()
,则会设置几何的范围值。要使所有几何图形移动到重合位置,请将每个几何图形设置为边界框的中心。此操作类似于几何.center()
方法。
municipios[i].geometry.computeBoundingBox();
var offset = municipios[i].geometry.boundingBox.center().negate();
municipios[i].position.copy(offset);