2016-09-15 3 views
0

私はudacityのwebglの初めのレッスンの一部をしています。オンラインスニペットでは、MeshLambertMaterialにmaterial.ambientを使用しました。Uncaught TypeError:未定義のプロパティ 'setRGB'を読み取ることができません

以下では、最初から基本的なキューブの例を作成しようとしていますが、MeshBasicMaterialをMeshLambertMaterialに置き換えようとすると、キューブを表示しようとして問題が発生しています。

なぜ物質が大気圏に定義されていないのですか?それはudacityチュートリアルの方法ですか? 3jsドキュメントはあまり役に立ちませんし、マテリアルに関するアンビエントメソッドについても言及していません... 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

material.ambientにはどのようなものが含まれていますか。 –

答えて

3

three.jsの材料は、もはやambientプロパティを持たない。

材料(材料は光、間接的、または周囲にどのように応答するか)の周囲反射率は今材料(材料が光向けるためにどのように応答するか)の拡散反射率と同じであると仮定されます。

材料の拡散反射率は、材料のcolorとしても知られています。

three.js r.80

+0

ありがとうございます。これらの廃止された方法について学び、より新しいapiに移行するために古い例から始める私たちのためのとにかくありますか?私はソースコードの履歴を読んでいると思います... – Homan

+0

ah、https://github.com/mrdoob/three.js/releases ambient削除r71 – Homan

関連する問題