简体   繁体   English

使用Three.js的对象视图不良

[英]Objects in with bad view using Three.js

I have problems with a simple code with three.js, where I'm trying to draw a room with three walls and a floor ... everything is perfect, according to the codes I used of the references of three.js page... but you may notice that the walls are not aligned... 我用three.js编写一个简单的代码时遇到了问题,在这里我试图绘制一个由三堵墙和一个地板组成的房间……根据我对Three.js页面的引用使用的代码,一切都非常完美。 ,但您可能会注意到墙壁未对齐... 在此处输入图片说明

why are not aligned?, if my code is right (I think). 为什么不对齐?,如果我的代码正确(我认为)。

The Code: 编码:

    //scene-camera
    var scene = new THREE.Scene ();
    var camera =  new THREE.PerspectiveCamera (90, window.innerWidth/window.innerHeight, 1, 1000);
    camera.position.z = 13;
    camera.updateMatrixWorld (true);
    scene.add (camera);

    //renderer
    var renderer = new THREE.WebGLRenderer ();
    renderer.setSize (window.innerWidth, window.innerHeight);
    document.body.appendChild (renderer.domElement);

    //geometry      
    var geometryPlane = new THREE.PlaneGeometry (10, 5);
    var geometryPlane2 = new THREE.PlaneGeometry (10, 10);

    //materials
    var materialBlue = new THREE.MeshBasicMaterial ({color: 0x3C64C8, side: THREE.DoubleSide});
    var materialGreen = new THREE.MeshBasicMaterial ({color: 0x3CC864, side: THREE.DoubleSide});
    var materialRed = new THREE.MeshBasicMaterial ({color: 0xFF33C3C, side: THREE.DoubleSide});
    var materialYellow = new THREE.MeshBasicMaterial ({color: 0xFFD700, side: THREE.DoubleSide});

    //objets-plane      
    var plane1 = new THREE.Mesh (geometryPlane, materialBlue);
    var plane2 = new THREE.Mesh (geometryPlane, materialGreen);
    var plane3 = new THREE.Mesh (geometryPlane, materialRed);
    var plane4 = new THREE.Mesh (geometryPlane2, materialYellow);

    //vectors
    var vecY = new THREE.Vector3(0, 1, 0);
    var vecX = new THREE.Vector3(1, 0, 0);
    var vec0 = new THREE.Vector3(0, 0, 0);

    //add scene-camera position of the objects
    scene.add (plane1);
    scene.add (plane2);
    scene.add (plane3);
    scene.add (plane4);

    var render = function (){
        //translate
        plane1.translateOnAxis (vecX, 5);
        plane3.translateOnAxis (vecX, -5);
        plane4.translateOnAxis (vecY, -2.5);

        //rotate            
        plane1.rotation.y = THREE.Math.degToRad(95);
        plane3.rotation.y = THREE.Math.degToRad(95);
        plane4.rotation.x = THREE.Math.degToRad(95);

        renderer.render (scene, camera);
    }
    render ();

Thanks for any help! 谢谢你的帮助!

Try 尝试

    plane1.rotation.y = THREE.Math.degToRad(90);
    plane3.rotation.y = THREE.Math.degToRad(90);
    plane4.rotation.x = THREE.Math.degToRad(90);

instead of 代替

    plane1.rotation.y = THREE.Math.degToRad(95);
    plane3.rotation.y = THREE.Math.degToRad(95);
    plane4.rotation.x = THREE.Math.degToRad(95);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM