How to get the length, width and height of OBB of 3dtileset. What I know now is tile set_ root._ boundingVolume._ Oriented bounding box. Halfaxes matrix and tile set_ root._ boundingVolume._ Orientedboundingbox.center center

Now the default local coordinate system takes the center point of 3dtileset as the origin (0, 0, 0), the east direction is x, the north direction is y, and the vertical direction of the plane formed by the east-north direction is Z. The default AABB is generated in the above XYZ coordinate system.the picture is below
AABB

OBB


Now that I know the center point (in the world coordinate system) and the halfaxes of 3dfileset, I use the following method to convert (100, 0, 0) in the halfaxes coordinate system to the local coordinate system, and then convert the point to the world coordinate system, which is shown in cesium.but it is not located in the right position.i maybe do wrong somewhere or think wrong,hope to get your help!the code is below.

//transform the OBB local coordinate to the AABB local coordinate
var ceshiinverse=new Cesium.Matrix3();

    Cesium.Matrix3.inverse(tileset._root._boundingVolume._orientedBoundingBox.halfAxes, ceshiinverse);

    const result1 = new Cesium.Cartesian3(0,0,0);

    Cesium.Matrix3.multiplyByVector(ceshiinverse, new Cesium.Cartesian3(100, 0, 0), result1);

//transform the AABB local coordinate to the world coordinate
const frompoint_to_world_matrix = Cesium.Transforms.eastNorthUpToFixedFrame(tileset._root._boundingVolume._orientedBoundingBox.center);
const result = new Cesium.Cartesian3(0,0,0);
Cesium.Matrix4.multiplyByPoint(frompoint_to_world_matrix, result1, result);

let originPoint6 = new Cesium.Entity({

      id:'ceshi',

      position: result,

      point: {

       color: Cesium.Color.RED,

       pixelSize: 10

    }});
    viewer.entities.add(originPoint6);

@liliulei

Thank you for the detailed post! I believe that I have a decent understanding of what you are trying to accomplish. However, providing more information about your use case might help me find a simpler solution. There are a few resources that I want to point you to.

As you may know, there is a commercial measurement and analytics package for Cesium. You can read more about it here:

This package includes a measurements tool, allowing you to accurately measure the distance between any two points. It also gives you the ability to measure other metrics such as the height of a given point above the terrain. The website includes various videos that demonstrate the functionality of the toolkit. Does this package include the functionality that you are looking for?

Here is the documentation for Measure, an object in our Cesium ion API that allows users to make ephemeral measurements by clicking on Cesium3DTiles. I suspect this tool has a lot of the functionality that you are looking for. Let me know if you have any other questions or concerns.

-Sam