Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
2.1k views
in Technique[技术] by (71.8m points)

javascript - How to get size of PlaneGeometry in three.js

I made mesh with PlanGeometry and BasicMaterial.

function createMesh(width, height) {
      let geometry = new THREE.PlaneGeometry(width, height);
      let mat = new THREE.MeshBasicMaterial({
          color: 0xffffff,
          transparent: true,
          side: THREE.DoubleSide,
          opacity: 0.5
      });
      return new THREE.Mesh(geometry, mat);
  }

And I used this mesh in other place and make transformed this mesh. So

mesh.matrix.identify();
mesh.applyMatrix(matrix); // make some transform.

Now, I want to get size of plane geometry So I tried with following method.

  let boundingBox = new THREE.Box3().setFromObject(mesh);
  let size = new THREE.Vector3(0,0,0);
  size = boundingBox.getSize(size);
  console.log('size', size);

But size is not correct. How can I get width, height value when created PlaneGeometry (width, height) before?

let geometry = new THREE.PlaneGeometry(width, height);

I want to know width, height value upper code. Please anyone help.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

You will probably have better results by checking the bounding box, geometry.parameters is not a reliable object - it's only created for primitives, and is not updated when the object is manipulated, so it won't reflect any scale changes.

mesh.geometry.computeBoundingBox()
const size = mesh.geometry.boundingBox.getSize()
console.log('size', size);

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...