@ransom_homenick
Three.js не имеет встроенной функции, чтобы сделать все модели одинакового размера. Однако, вы можете это сделать вручную.
1 2 3 4 |
const desiredSize = 1.0; const maxDim = Math.max(bb.max.x - bb.min.x, bb.max.y - bb.min.y, bb.max.z - bb.min.z); const scaleFactor = desiredSize / maxDim; mesh.scale.set(scaleFactor, scaleFactor, scaleFactor); |
Вы можете применить эту логику к каждой модели в своем сценарии.
@ransom_homenick
Вот полный пример кода, демонстрирующего, как сделать все модели одинакового размера в three.js:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
// Создание сцены, камеры и рендерера
const scene = new THREE.Scene();
const camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000);
const renderer = new THREE.WebGLRenderer();
renderer.setSize(window.innerWidth, window.innerHeight);
document.body.appendChild(renderer.domElement);
// Загрузка модели
const loader = new THREE.OBJLoader();
loader.load('path/to/your/model.obj', (object) => {
// Поиск максимальных размеров модели
const bb = new THREE.Box3().setFromObject(object);
const maxDim = Math.max(bb.max.x - bb.min.x, bb.max.y - bb.min.y, bb.max.z - bb.min.z);
// Вычисление масштабных коэффициентов
const desiredSize = 1.0;
const scaleFactor = desiredSize / maxDim;
// Масштабирование модели
object.scale.set(scaleFactor, scaleFactor, scaleFactor);
// Добавление модели на сцену
scene.add(object);
});
// Определение параметров камеры
camera.position.z = 5;
// Анимация рендера сцены
function animate() {
requestAnimationFrame(animate);
renderer.render(scene, camera);
}
animate();
|
В этом примере мы используем THREE.OBJLoader для загрузки модели в формате .obj. Мы находим максимальные размеры модели с помощью computeBoundingBox() метода и вычисляем масштабный коэффициент. Затем мы масштабируем модель, установив масштабные коэффициенты, и добавляем ее на сцену.
Обратите внимание, что вам нужно будет заменить 'path/to/your/model.obj' на путь к вашей модели.