2016-09-15 25 views
0

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(); 
+0

Haben Sie versucht, es zu debuggen, um zu sehen, was material.ambiente enthält? –

Antwort

3

three.js Materialien haben keine ambient Eigenschaft mehr.

Die Umgebungsreflexionsvermögen des Materials (wie das Material auf indirekte reagiert, oder Umgebungs, Licht) ausgegangen wird, nun die gleiche wie die diffuse Reflektanz des Materials sein (wie das Material Licht zu lenken reagiert) . Das diffuse Reflexionsvermögen des Materials wird auch als des Materials bezeichnet.

three.js r.80

+0

Danke. Gibt es für diejenigen von uns, die mit älteren Beispielen beginnen, etwas über diese veralteten Methoden und den Übergang zu neueren Apis zu lernen? Ich nehme an, die Quellcode-Geschichte zu lesen ... – Homan

+0

ah, https://github.com/mrdoob/three.js/releases Umgebung in R71 entfernt – Homan

Verwandte Themen