Ich bin gerade dabei, einige Anfangslektionen über Webgl auf Udacity zu folgen. In den Online-Snippets verwendeten sie material.ambient
für MeshLambertMaterial.Uncaught TypeError: Eigenschaft 'setRGB' von undefined kann nicht gelesen werden
Im Folgenden versuche ich, ein grundlegendes Cube-Beispiel von Grund auf neu zu erstellen, aber wenn ich versuche, MeshBasicMaterial durch MeshLambertMaterial zu ersetzen, stoße ich auf Probleme, den Cube zur Anzeige zu bringen.
Warum ist Ambient nicht auf Material definiert, wie es in den Udacity-Tutorials ist? Die drei Dokumente sind nicht sehr hilfreich, sie erwähnen nicht einmal eine Ambient-Methode für Material ... Hat sich die API geändert?
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();
Haben Sie versucht, es zu debuggen, um zu sehen, was material.ambiente enthält? –