我正在关注udacity上关于webgl的一些初学课程。在在线摘录中,他们使用material.ambient
表示MeshLambertMaterial。
下面,我尝试从头开始创建一个基本的立方体示例,但是当我尝试用MeshLambertMaterial替换MeshBasicMaterial时,我遇到了试图让多维数据集显示的问题。
为什么没有在材质上定义环境,就像在udacity教程中那样? threejs文档不是很有用,他们甚至没有在材料上提到环境方法...... API是否发生了变化?
var scene = new THREE.Scene();
var camera = new THREE.PerspectiveCamera( 75, window.innerWidth / window.innerHeight, 0.1, 1000 );
var renderer = new THREE.WebGLRenderer();
renderer.setSize( window.innerWidth, window.innerHeight );
document.body.appendChild( renderer.domElement );
var geometry = new THREE.BoxGeometry( 1, 1, 1 );
var material = new THREE.MeshLambertMaterial( { color: 0x00ff00 } );
var kv = 0.4;
//this line gets error: app.js:36 Uncaught TypeError: Cannot read property 'setRGB' of undefined
material.ambient.setRGB(kv * material.color.r, kv * material.color.g, kv * material.color.b);
var cube = new THREE.Mesh( geometry, material );
scene.add( cube );
camera.position.z = 5;
function render() {
requestAnimationFrame( render );
renderer.render( scene, camera );
cube.rotation.x += 0.01;
cube.rotation.y += 0.01;
}
render();
答案 0 :(得分:3)
three.js材料不再具有ambient
属性。
材料的环境反射率(材料如何响应间接光或环境光)现在假设与材料的漫反射光度相同 (材料如何响应直射光)。
材质的漫反射率也称为材质color
。
three.js r.80