当我想要显示简单的网格时,Three.js渲染不显示简单的立方体

时间:2017-03-16 10:39:15

标签: javascript 3d three.js

我想要显示一个简单的平面和一个简单的立方体,但是平面隐藏了立方体,立方体位于相机和平面之间,但是平面"隐藏"立方体。

这是我没有飞机的场景: image

这里是添加的飞机: image

我很确定它们位于应该展示立方体的位置。

这是我的代码:

var scene = new THREE.Scene(),
    camera = new THREE.PerspectiveCamera(45,Window.innerWidth,window.innerHeight,0.1,1000),
    renderer = new THREE.WebGLRenderer({ antialias: true });

renderer.shadowMapEnabled = true;
renderer.shadowMapSoft = true;

var axes = new THREE.AxisHelper(20);
scene.add(axes);

var cubeGeometry = new THREE.CubeGeometry(4,4,4);
var cubeMaterial = new THREE.MeshBasicMaterial({color:0x777777});
var cube = new THREE.Mesh(cubeGeometry,cubeMaterial);
//cube.castShadow = true;
cube.position.x = 0;
cube.position.y = 10;
cube.position.z = 5;
scene.add(cube);



var planeGeometry = new THREE.PlaneGeometry(60,20);
var planeMaterial = new THREE.MeshBasicMaterial({color: 0x55cc88});
var plane = new THREE.Mesh(planeGeometry,planeMaterial);
plane.rotation.x = -0.5*Math.PI;
plane.position.x = 15;
plane.position.y = 0;
plane.position.z = 0;
//scene.add(plane);
//plane.receiveShadow = true;



camera.position.x = -30;
camera.position.y = 40;
camera.position.z = 30;
camera.lookAt(scene.position);

var spotLight = new THREE.SpotLight(0xffffff);
spotLight.position.set(-40,60,-10);
scene.add(spotLight);


//renderer.setClearColor(0xEEEEEE,1);
renderer.setSize(window.innerWidth,window.innerHeight);


renderer.render(scene,camera);


$("#WebGl-salida").append(renderer.domElement);

2 个答案:

答案 0 :(得分:0)

注意方法中的对象名称和顺序以及参数的正确性:

camera = new THREE.PerspectiveCamera(45,Window.innerWidth,window.innerHeight,0.1,1000)

应该是:

camera = new THREE.PerspectiveCamera(45,window.innerWidth / window.innerHeight,0.1,1000)

jsfiddle示例

答案 1 :(得分:0)

非常感谢!答案和建议编辑问题以使其更容易理解(我的英语必须改进)现在它完美地运作。