将绝对位置放在Three.js,所有对象都在0,0,0位置
Put absolute position in Three.js, all objects in 0,0,0 position
请把这个问题作为一个重复问题,因为这些解决方案对我不起作用,而且对 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]在每个位置都有一个区域。坐标是数据 google 地图,分别是经度和纬度,在这些数字的情况下,范围是 5.5 ... 和 -75 .....
每个区域都有自己的 0,0,0 就像我做的那样所有区域都在同一个 0,0,0?
显然您的所有几何图形都已共享相同的坐标系。它们从 0,0,0 开始,所以将它们移动到那里只会发送它们 "home."
如果您调用 extrude_geometria[i].computeBoundingBox()
,这将设置几何的范围值。要让所有几何体移动到重合位置,请将每个几何体设置为边界框的中心。此操作类似于几何.center()
方法。
municipios[i].geometry.computeBoundingBox();
var offset = municipios[i].geometry.boundingBox.center().negate();
municipios[i].position.copy(offset);
请把这个问题作为一个重复问题,因为这些解决方案对我不起作用,而且对 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]在每个位置都有一个区域。坐标是数据 google 地图,分别是经度和纬度,在这些数字的情况下,范围是 5.5 ... 和 -75 ..... 每个区域都有自己的 0,0,0 就像我做的那样所有区域都在同一个 0,0,0?
显然您的所有几何图形都已共享相同的坐标系。它们从 0,0,0 开始,所以将它们移动到那里只会发送它们 "home."
如果您调用 extrude_geometria[i].computeBoundingBox()
,这将设置几何的范围值。要让所有几何体移动到重合位置,请将每个几何体设置为边界框的中心。此操作类似于几何.center()
方法。
municipios[i].geometry.computeBoundingBox();
var offset = municipios[i].geometry.boundingBox.center().negate();
municipios[i].position.copy(offset);