好吧,我刚开始学习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
所以我不得不添加一个光源来显示由网格朗伯材料制成的物体.当我添加一个点光源时,物体就会显示出来.
这是因为MeshBasicMaterial对照明没有反应但是颜色恒定.
一个MeshLambertMaterial但是,不应对照明,所以没有光,你看不到它!MeshPhongMaterial也是如此.