首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Collada对象的大小

Collada对象的大小
EN

Stack Overflow用户
提问于 2015-11-23 23:18:02
回答 1查看 1.6K关注 0票数 0

我第一次使用javascript、WebGL和Three.js。我添加了dae 3D模型到我的场景中,现在我必须获得它的大小来生成其中的对象。但当我添加dae对象时,它在场景中显示为旋转。当我在某处阅读和测试时,我不能只是旋转我的对象,因为边界框不会随着它旋转。我应该怎么做才能得到对象的大小?

代码语言:javascript
复制
<!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>

EN

回答 1

Stack Overflow用户

发布于 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 (预缩放对象,旋转和平移。)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33874480

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档