3D对象在three.js中显示为平面

时间:2018-10-23 20:57:05

标签: three.js

我只是为three.js建立了一个非常基本的“ hello world”…… 但显然我的3d立方体显示为2d正方形...

js文件的代码here

const t = THREE;
const scene = new t.Scene();
const camera = new t.PerspectiveCamera(75, window.innerWidth, window.innerHeight, 0.1, 1000);

const renderer = new t.WebGLRenderer();
renderer.setSize(window.innerWidth, window.innerHeight);
document.body.appendChild(renderer.domElement);

// create a shape
const geometry = new t.BoxGeometry(1, 1, 1);

// create a material
const material = new t.MeshBasicMaterial({color: 0xFFFFFF, wireframe: true});
const cube = new t.Mesh(geometry, material);
// cube.position.y = 1;
scene.add(cube);

// camera.position.x = 300;
camera.position.z = 5;

// logic
const update = function () {
    cube.rotation.x += 0.01;
    cube.rotation.y += 0.01;
};

// draw scene
const render = function () {
    renderer.render(scene, camera);
};

// run render loop (update-render-repeat)
const RenderLoop = function () {
    window.requestAnimationFrame(RenderLoop);
    update();
    render();
};

RenderLoop();

代码的结果here

Imgur

感谢您的帮助!

编辑: 很抱歉不包含代码

1 个答案:

答案 0 :(得分:1)

您错误地建立了PerspectiveCamera

您的方式:

PerspectiveCamera(75, window.innerWidth, window.innerHeight, 0.1, 1000);

正确的方法:

PerspectiveCamera( 75, window.innerWidth / window.innerHeight, 0.1, 1000 );

您需要传递比率w/h,而不是两个单独的w, h参数。