首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Box3和Threebox中找到Three.js的对角线长度

如何在Box3和Threebox中找到Three.js的对角线长度
EN

Stack Overflow用户
提问于 2022-08-12 11:52:15
回答 2查看 62关注 0票数 -1

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

由于我的模型是不同的大小,环需要相应的大小,但我有一些问题,找到正确的测量模型,以做到这一点。

理想情况下,它应该如下所示:

我用这样的Three.js TorusGeometry创建了戒指:

代码语言:javascript
复制
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,但是我找不到从模型属性中的任何地方精确地导出它的方法。我怀疑这与三盒有米为单位,其中三有自己的地图单位有关。

下面是我可以在对象中访问的一些属性:

代码语言:javascript
复制
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
}

我试过以下几种方法来得到尺寸:

代码语言:javascript
复制
let box = new THREE.Box3().setFromObject(object);
let size = new THREE.Vector3();
box.getSize(size);
console.log(size)

其结果是:

代码语言:javascript
复制
{
    "x": 153.10896959049688,
    "y": 125.93398806704032,
    "z": 99.90357914196488
}

这似乎没有多大帮助,因为长度大约是0.7

EN

回答 2

Stack Overflow用户

发布于 2022-08-12 11:55:35

对于正方形,总是a * sqrt(2),其中a是矩形的边

票数 0
EN

Stack Overflow用户

发布于 2022-08-12 13:22:13

文档的这部分是您要找的吗?

根据它,你可以:

tb.projectToWorld(lnglat)

计算给定lnglat的相应THREE.Vector3

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73333740

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档