我刚刚开始学习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();
上面的脚本生成一个立方体,当我从
更改立方体的材质时,立方体会连续旋转var material = new THREE.MeshBasicMaterial({color: 0xD43001});
到
var material = new THREE.MeshLambertMaterial({color: 0xD43001});
没有显示任何内容。我错过了什么?
更新
所以我必须添加一个光源来显示由网格朗伯材料制成的物体。当我添加一个点光源时,物体就会显示出来。
答案 0 :(得分:5)
这是因为MeshBasicMaterial对照明没有反应,但颜色是恒定的。
然而,一个MeshLambertMaterial,对做出反应,所以没有光线,你就看不到了! MeshPhongMaterial也是如此。