【问题标题】:Size of Collada ObjectCollada 对象的大小
【发布时间】:2016-02-25 18:17:36
【问题描述】:

我第一次使用 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>

【问题讨论】:

  • 你的物体会变形吗?否则,您可以在初始化时获取边界框并在旋转对象时旋转它。

标签: javascript three.js size collada


【解决方案1】:

您使用dae.scale.set(120, 150, 120); 确定要将对象缩放 150 倍吗?默认比例为dae.scale.set(1,1,1)

您可以设置obj = new THREE.Object3D();scene.add(obj); 并将您的模型放入对象obj.add(dae); 然后您可以使用对象进行操作(预缩放对象、旋转和平移。)...

【讨论】:

    猜你喜欢
    • 2013-04-17
    • 2013-10-14
    • 2013-02-26
    • 2016-03-26
    • 1970-01-01
    • 2015-02-26
    • 2015-02-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多