【问题标题】:Put absolute position in Three.js, all objects in 0,0,0 position将绝对位置放在 Three.js 中,所有对象都在 0,0,0 位置
【发布时间】:2026-01-18 03:05:01
【问题描述】:

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

【问题讨论】:

    标签: javascript three.js coordinates


    【解决方案1】:

    显然,您的所有几何图形都已共享相同的坐标系。它们从 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);
    

    【讨论】:

    • 谢谢朋友,但我还是得到了想要的效果,也就是说每个区域都想要这个在 0,0,0 然后从我想要的任何区域移动到我想要的位置,或者我移动一个城市 [i ] 的特定区域在给定的坐标这样的城市 [24] .position.set (5,0,0),但是是真正的坐标。
    • 有谁知道我怎么做我需要的吗?
    • 恐怕我不明白你的愿望。你能添加一个你真​​正想要的插图吗?