Я новичок в программировании 3D-графики.Я использую Three.js для разработки программного обеспечения, которое использует 3D-визуализацию для упаковки 3D-бина.Прямо сейчас я использую приведенный ниже код для создания и позиционирования двух элементов.
var camera, scene, renderer;
var mesh, mesh2;
init();
function init() {
camera = new THREE.PerspectiveCamera( 70, window.innerWidth / window.innerHeight, 1, 1000 );
camera.position.z = 800;
scene = new THREE.Scene();
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} );
mesh = new THREE.Mesh( geometry, material );
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;
mesh2.rotation.x = 0.45;
mesh2.rotation.y = 1;
scene.add( mesh2 );
scene.add( mesh );
renderer = new THREE.WebGLRenderer( { antialias: true } );
renderer.setPixelRatio( window.devicePixelRatio );
renderer.setSize( window.innerWidth, window.innerHeight );
document.body.appendChild( renderer.domElement );
}
Прямо сейчас я использую (170, -48, 100) в качестве координат для выравнивания второго куба.Я прибыл на эти номера, подправляя номера и постоянно проверяя.Но должна быть некоторая формула, чтобы получить эти x, y, z, поскольку я поворачиваю их на определенный угол (x = 0.45, y = 1).Я не уверен, как начать вычисление для этого.
Задача состоит в том, что, учитывая набор измерений кубов '(l1, w1, h1), (h2, w2, h2) и так далее, ипозиции кубов (x1, y1, z1) (x2, y2, z2), как рассчитать и разместить их рядом и / или сложить их?