将绝对位置放在Three.js中,所有对象放在0,0,0位置

时间:2015-07-28 05:14:17

标签: javascript three.js coordinates

请把这个问题重复一遍,因为这些解决方案对我不起作用,而且对于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?

1 个答案:

答案 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);