【问题标题】:three.js init with object close to camerathree.js 初始化,对象靠近相机
【发布时间】:2020-06-28 17:59:03
【问题描述】:

在我的 three.js 项目中,我像这样设置我的场景和相机:

        var container = document.getElementById('container');

        renderer = new THREE.WebGLRenderer({ antialias: true });
        renderer.setPixelRatio(window.devicePixelRatio);
        renderer.setSize(window.innerWidth, window.innerHeight);
        renderer.setAnimationLoop(render);
        renderer.outputEncoding = THREE.sRGBEncoding;
        renderer.toneMapping = THREE.ACESFilmicToneMapping;
        renderer.toneMappingExposure = 1.25;
        container.appendChild(renderer.domElement);

        window.addEventListener('resize', onWindowResize, false);

        stats = new Stats();
        container.appendChild(stats.dom);

        //

        camera = new THREE.PerspectiveCamera(40, window.innerWidth / window.innerHeight, 0.1, 100);
        camera.position.set(3.5, 2, - 2.5);


        controls = new OrbitControls(camera, container);
        controls.target.set(0, 0.5, 0);
        controls.update();

        scene = new THREE.Scene();
        scene.background = new THREE.Color(0xeeeeee);
        scene.environment = new RoomEnvironment(renderer);
        scene.fog = new THREE.Fog(0xeeeeee, 10, 50);
        ...

我的场景是这样开始的:

我想开始将我的对象翻倍,如下所示:

我试试:

camera.zoom.set(2);

但什么也没发生 所以我尝试定义一个vector3(2,2,2)并缩放我的对象:

myobj.scale.set(myVector3);

什么都没有。

有人可以帮我用更大的对象开始我的场景吗?

提前非常感谢

【问题讨论】:

    标签: javascript three.js 3d


    【解决方案1】:

    如果你这样做:

    camera.zoom.set(2);
    

    您必须确保像这样更新项目矩阵:

    camera.updateProjectionMatrix();
    

    关于另一个问题,Vector3.set() 只接受三个标量作为参数。您不能将该方法与Vector3 类型的单个参数一起使用。所以你可以这样做:

    myobj.scale.set(myVector3.x, myVector3.y, myVector3.z);
    

    甚至更好:

    myobj.scale.copy(myVector3);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-18
      • 2013-06-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多