在使用three.js渲染图形时,不会生成具有网格朗伯材质的对象

Smr*_*ita 7 three.js

好吧,我刚开始学习three.js,这对我来说完全是全新的.所以我正在编写这些系列的hello world kinda scrips.我写了下面的脚本,用MeshBasicMaterial生成一个多维数据集(这只是博客中给出的教程的精确副本)

        var scene = new THREE.Scene(); 
        var camera = new THREE.PerspectiveCamera(75, 640/340, 0.1, 1000); 
        var renderer = new THREE.WebGLRenderer(); 

        renderer.setSize(640, 340); 
        document.body.appendChild(renderer.domElement);

        var geometry = new THREE.CubeGeometry(1,1,1); 
        var material = new THREE.MeshBasicMaterial({color: 0xD43001});
        var cube = new THREE.Mesh(geometry, material); 


        scene.add(cube); 
        camera.position.z = 5; 

        var render = function (){

                requestAnimationFrame(render); 

                cube.rotation.x += 0.1; 
                cube.rotation.y += 0.1; 

                renderer.render(scene, camera); 

            };

            render();
Run Code Online (Sandbox Code Playgroud)

上面的脚本生成一个立方体,当我更改立方体的材质时,立方体会连续旋转

var material = new THREE.MeshBasicMaterial({color: 0xD43001});
Run Code Online (Sandbox Code Playgroud)

var material = new THREE.MeshLambertMaterial({color: 0xD43001});
Run Code Online (Sandbox Code Playgroud)

没有显示出来.我错过了什么?

UPDATE

所以我不得不添加一个光源来显示由网格朗伯材料制成的物体.当我添加一个点光源时,物体就会显示出来.

Bre*_*ble 5

这是因为MeshBasicMaterial对照明没有反应但是颜色恒定.

一个MeshLambertMaterial但是,应对照明,所以没有光,你看不到它!MeshPhongMaterial也是如此.