threejs matrx manipulation

by mmalex

HTML

<script src="https://cdnjs.cloudflare.com/ajax/libs/three.js/91/three.js"></script>
<script src="https://threejs.org/examples/js/controls/OrbitControls.js"></script>
<script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
<a href="https://stackoverflow.com/questions/54928137/how-to-calculate-the-position-of-objects-in-three-js/54929110#54929110">https://stackoverflow.com/questions/54928137/how-to-calculate-the-position-of-objects-in-three-js/54929110#54929110</a>

CSS

body {
  overflow: hidden;
}

JavaScript

let renderer;
let camera;
let controls;

let scene = new THREE.Scene();
camera = new THREE.PerspectiveCamera(54, window.innerWidth / window.innerHeight, 0.1, 1000);

renderer = new THREE.WebGLRenderer({
  antialias: true
});
renderer.setSize(window.innerWidth, window.innerHeight);
renderer.setClearColor(new THREE.Color(0xfefefe));
document.body.appendChild(renderer.domElement);

camera.position.x = 500;
camera.position.y = 500;
camera.position.z = 500;
camera.lookAt(0, 0, 0);

controls = new THREE.OrbitControls(camera);

let gridHelper = new THREE.GridHelper(40, 40);
scene.add(gridHelper);

// ============= example code ===================
// ref: https://stackoverflow.com/questions/54928137/how-to-calculate-the-position-of-objects-in-three-js/54929110#54929110

  var texture = new THREE.TextureLoader().load( 'https://threejs.org/examples/textures/crate.gif' );
  var geometry = new THREE.BoxBufferGeometry( 200, 200, 200 );
  var geometry2 = new THREE.BoxBufferGeometry( 200, 200, 200 );
  var material = new THREE.MeshBasicMaterial( {map:texture} );
      let mesh = new THREE.Mesh( geometry, material );
      let mesh2 = new THREE.Mesh( geometry2, material );
      //  mesh2.position.x = 170
      //  mesh2.position.y = -48
      //  mesh2.position.z = 100
      mesh.rotation.x = 0.45;
      mesh.rotation.y = 1;
	  mesh.updateMatrix();

      //mesh2.rotation.x = 0.45;
      //mesh2.rotation.y = 1;
      scene.add( mesh );
	  
	  mesh2.applyMatrix(new THREE.Matrix4().makeTranslation(210, 0, 0));
	  mesh2.applyMatrix(mesh.matrix);

      scene.add( mesh2 ); // << ---- solution

///// end of example

let animate = function() {
  requestAnimationFrame(animate);
 
  controls.update();
  
  renderer.render(scene, camera);
};

animate();