Find object dimensions in three.js
Asked Answered
C

1

13

Short question. How does one find the dimensions of a mesh in three.js?

I have Collada (.dae) files which I would like to know the size of in units (x,y,z). I have seen comments about using geometry.computeBoundingBox(), but I am still not exactly sure how to use it.

Also I am aware of using scale but my ultimate goal is to compare objects in the scene with realistic measurements (mm) so it helps to know the exact physical dimensions of an object so that I may change it if necessary.

Appreciate any words of wisdom :^)

Cadaverous answered 2/1, 2018 at 14:32 Comment(0)
L
19

Using a bounding box sounds like a good idea. You can try something like this

    boundingBox = new THREE.Box3().setFromObject(your_object)
    size = boundingBox.getSize() // Returns Vector3

Docs:

Comment update: Now that I have the object dimensions X,Y,Z, how can I change the value of let's say 'X' and have the object scale to it?

scaleFactor = otherSize.x / mySize.x 
myObject.scale(scaleFactor, scaleFactor, scaleFactor)
Larianna answered 2/1, 2018 at 17:15 Comment(3)
Now that I have the object dimensions X,Y,Z, how can I change the value of let's say 'X' and have the object scale to it?Cadaverous
size = boundingBox.getSize() doesn't appear to be correct, probably outdated use of getSize()? See here: jsfiddle.net/8L5dczmfClap
I guess its usage was updated. Now a Vector3 needs to be passed into getSize() as an argument. See here for implementation https://mcmap.net/q/354115/-what-is-the-proper-use-of-threejs-box3-getsize-methodClap

© 2022 - 2024 — McMap. All rights reserved.