我使用Threebox (Mapbox的Three.js插件)将建筑物的三维模型加载到地图上。支持与建筑物的某种程度的互动(旋转和移动)。旋转功能通过浮动环访问,当单击该浮动环时,允许模型旋转。示例:

由于我的模型是不同的大小,环需要相应的大小,但我有一些问题,找到正确的测量模型,以做到这一点。
理想情况下,它应该如下所示:

我用这样的Three.js TorusGeometry创建了戒指:
let geom = new THREE.TorusGeometry(ringSize, 0.01, 30, 25);
let material = new THREE.MeshStandardMaterial({ color: 0xffc000, side: THREE.DoubleSide });
let mesh = new THREE.Mesh(geom, material);其中我需要计算的大小,戒指需要事先。
这是一个问题:上面的房子例子的圆环大小(半径)大约是0.7,但是我找不到从模型属性中的任何地方精确地导出它的方法。我怀疑这与三盒有米为单位,其中三有自己的地图单位有关。
下面是我可以在对象中访问的一些属性:
unitsPerMeter: 0.0600151
modelSize: { x: 13.9649, y: 11.4863, z: 9.1121 }
boundingBox.box: {
"min": {
"x": -6.982465131993985,
"y": -5.743162421920143,
"z": 0
},
"max": {
"x": 6.982465131993986,
"y": 5.743162421920143,
"z": 9.112114852394226
}
}
center: {
"x": -1.4794275894722282,
"y": 0.5752914186997362,
"z": -0.0858976981176804
}我试过以下几种方法来得到尺寸:
let box = new THREE.Box3().setFromObject(object);
let size = new THREE.Vector3();
box.getSize(size);
console.log(size)其结果是:
{
"x": 153.10896959049688,
"y": 125.93398806704032,
"z": 99.90357914196488
}这似乎没有多大帮助,因为长度大约是0.7
发布于 2022-08-12 11:55:35
对于正方形,总是a * sqrt(2),其中a是矩形的边
发布于 2022-08-12 13:22:13
https://stackoverflow.com/questions/73333740
复制相似问题