我第一次使用javascript、WebGL和Three.js。我添加了dae 3D模型到我的场景中,现在我必须获得它的大小来生成其中的对象。但当我添加dae对象时,它在场景中显示为旋转。当我在某处阅读和测试时,我不能只是旋转我的对象,因为边界框不会随着它旋转。我应该怎么做才能得到对象的大小?
<!DOCTYPE html>
<html>
<head>
<title>Collada Size.js</title>
</head>
<body>
<script src="js/three.min.js"></script>
<script src="js/ColladaLoader.js"></script>
<script>
window.onload = function () {
var renderer = new THREE.WebGLRenderer();
renderer.setSize(800, 600);
document.body.appendChild(renderer.domElement);
var scene = new THREE.Scene();
var camera = new THREE.PerspectiveCamera(
55, // Field of view
800 / 600, // Aspect ratio
0.1, // Near plane
1000 // Far plane
);
camera.position.set(-15, 1000, 10);
camera.lookAt(scene.position);
var loader = new THREE.ColladaLoader();
loader.options.convertUpAxis = true;
loader.load('models/MyFile.dae', function (collada) {
var dae = collada.scene;
var skin = collada.skins[0];
dae.position.set(0, 0, 0);
//dae.rotation.y = 45;
render();
dae.scale.set(120, 150, 120);
scene.add(dae);
sizeofDesk(dae);
});
function sizeofDesk(dae) {
var helper = new THREE.BoundingBoxHelper(dae, 0xff0000);
helper.update();
// If you want a visible bounding box
scene.add(helper);
// If you just want the numbers
var min = helper.box.min;
var max = helper.box.max;
console.log(min);
console.log(max);
}
var dirLight = new THREE.DirectionalLight(0xffffff, 1);
dirLight.position.set(100, 100, 50);
scene.add(dirLight);
renderer.setClearColor(0xffe5e5, 1);
render();
function render() {
requestAnimationFrame(render);
renderer.render(scene, camera);
}
};
</script>
</body>
</html>
发布于 2015-11-23 23:50:49
您正在使用dae.scale.set(120, 150, 120);您确定要将对象缩放150次吗?默认比例为dae.scale.set(1,1,1)。
你可以设置obj = new THREE.Object3D();scene.add(obj);和你的模型放到object obj.add(dae);,然后你可以操纵object (预缩放对象,旋转和平移。)
https://stackoverflow.com/questions/33874480
复制相似问题