2013-10-29 41 views
1

所以我使用THREE.JS并创建了一个三角形。但即使我给它的颜色:0xFF0000,它在屏幕上显示为黑色。THREE.js三角形是黑色的

这里是我的脚本:

var camera, scene, renderer; 
var geometry, material, mesh; 

init(); 
animate(); 

function init() { 

    scene = new THREE.Scene(); 
    camera = new THREE.PerspectiveCamera(35, window.innerWidth/window.innerHeight, 1, 10000); 
    camera.position.z = 500; 
    scene.add(camera); 

    var geometry = new THREE.Geometry(200,200,200); 
    var v1 = new THREE.Vector3(200,0,0); // Vector3 used to specify position 
    var v2 = new THREE.Vector3(-100,0,0); 
    var v3 = new THREE.Vector3(0,50,0); // 2d = all vertices in the same plane.. z = 0 

    // Push vertices represented by position vectors 
    geometry.vertices.push(v1); 
    geometry.vertices.push(v2); 
    geometry.vertices.push(v3); 

    // Push face, defined with vertices in counter clock-wise order 
    geometry.faces.push(new THREE.Face3(0, 2, 1)); 

    // Create a material and combine with geometry to create our mesh 
    var redMat = new THREE.MeshLambertMaterial({color: 0xFF0000}); 
    var triangle = new THREE.Mesh(geometry, redMat); 
    scene.add(triangle); 

    renderer = new THREE.CanvasRenderer(); 
    renderer.setSize(window.innerWidth, window.innerHeight); 

    document.body.appendChild(renderer.domElement); 

} 

function animate() { 

    requestAnimationFrame(animate); 
    render(); 

} 

function render() { 

    renderer.render(scene, camera); 

} 

希望你能找到我所犯的错误。我相信这只是一件非常愚蠢的事情。

+0

工作正常,我。 JSFiddle:http://jsfiddle.net/ProgramFOX/cKu42/ – ProgramFOX

+0

好的,那很奇怪。在浏览器中,它显示为黑色。但是,是的。在JSFiddle上它是红色的...... – RenokK

+0

您正在使用哪种浏览器?你使用的是最新版本的Three.js吗?对我来说,Fiddle在Firefox,Chrome,Opera和Safari中运行良好(不在IE中,因为IE不支持WebGL)。 – ProgramFOX

回答

2

派对迟到......但对于所有追随我的人。 这里的问题是使用

变化

new THREE.MeshLambertMaterial({color: 0xFF0000}); 


new THREE.MeshBasicMaterial({color: 0xFF0000}); 

材料的类型,它会显示为红色

0

即使我已经从这个问题挣扎一段时间。对于我来说,解决方案是如果您使用Lambert材料,则为场景添加环境光线。

只需添加:

var light = new THREE.AmbientLight(0xffffff); 
scene.add(light);