threejs获取对象中心

罗伯特

我试图检索和绘制某些对象的中心点,但是我对所有对象始终获得相同的值,即x = 0,y = 0和z = 0。因此,我的中心点始终是场景的中心点。我目前正在阅读3D计算机矩阵,所以我在这个领域有点新手。我是否需要以某种方式更新场景或在每个添加的对象或其他东西之后更新一些矩阵?

function initBoxes(){
    var box = new THREE.Mesh(geometry, material);
    box.position.set(0, 2, 2);
    getCenterPoint(box);

    var box2 = new THREE.Mesh(geometry, material);
    box2.position.set(0, 6, 6);
    getCenterPoint(box2);
}

function getCenterPoint(mesh) {
    var middle = new THREE.Vector3();
    var geometry = mesh.geometry;

    geometry.computeBoundingBox();

    middle.x = (geometry.boundingBox.max.x + geometry.boundingBox.min.x) / 2;
    middle.y = (geometry.boundingBox.max.y + geometry.boundingBox.min.y) / 2;
    middle.z = (geometry.boundingBox.max.z + geometry.boundingBox.min.z) / 2;

    return middle;
}
枯萎

该对象boundingBox在本地空间中。如果要在世界空间中居中,则必须将middle顶点转换为世界空间。您可以使用以下THREE.Object3D localToWorld方法轻松地做到这一点:

function getCenterPoint(mesh) {
    var middle = new THREE.Vector3();
    var geometry = mesh.geometry;

    geometry.computeBoundingBox();

    middle.x = (geometry.boundingBox.max.x + geometry.boundingBox.min.x) / 2;
    middle.y = (geometry.boundingBox.max.y + geometry.boundingBox.min.y) / 2;
    middle.z = (geometry.boundingBox.max.z + geometry.boundingBox.min.z) / 2;

    mesh.localToWorld( middle );
    return middle;
}

更新:

在较新的three.js版本中该类内部提供了一种便捷方法getCenterTHREE.Box3

function getCenterPoint(mesh) {
    var geometry = mesh.geometry;
    geometry.computeBoundingBox();
    var center = new THREE.Vector3();
    geometry.boundingBox.getCenter( center );
    mesh.localToWorld( center );
    return center;
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

threejs如何绕对象自己的中心而不是世界中心旋转

来自分类Dev

OpenCV获取多个对象的中心

来自分类Dev

OpenCV获取多个对象的中心

来自分类Dev

在 ThreeJS 中获取本地对象旋转

来自分类Dev

如何使用OpenCV仅获取图像中的中心对象?

来自分类Dev

iOS-获取已缩放对象的中心

来自分类Dev

Unity - 如何获取父游戏对象中心的位置

来自分类Dev

从点对象获取值,该点对象用作Java中圆对象的中心

来自分类Dev

threejs遍历对象onClick

来自分类Dev

ThreeJS对象的位置/旋转

来自分类Dev

在线的中心获取div

来自分类Dev

从UIButton获取位置中心

来自分类Dev

在页面中心获取日期

来自分类Dev

获取屏幕中心

来自分类Dev

查找两个Tris的中心点-ThreeJS

来自分类Dev

在threejs中相对于球体中心跟踪精度

来自分类Dev

如何从pycharm的中心旋转对象?

来自分类Dev

SwiftUI围绕中心对象放置

来自分类Dev

计算Maxscript中子对象的中心

来自分类Dev

拖动时对象跳到中心

来自分类Dev

Threejs从场景中删除所有对象

来自分类Dev

ThreeJs在单击时创建对象/网格

来自分类Dev

ThreeJS如何选择对象的交点颜色

来自分类Dev

ThreeJs在单击时创建对象/网格

来自分类Dev

使用鼠标在Threejs场景中移动对象

来自分类Dev

在 hazelcast 管理中心控制台上获取 SerializationException,自定义对象用作映射中的键、值

来自分类Dev

如何获取Arraylist()的中心4

来自分类Dev

在铯地图上获取中心

来自分类Dev

ThreeJS通过id获取元素(Mesh)