4

私はアニメーションを行うためにthree.jsを使用しています。立方体メッシュのマテリアルを動的に更新したい。次に例を示します。

// create cube geometry 
var material1 = [new THREE.MeshBasicMaterial({color:0xBEE2FF}),.....];
var geometry = new THREE.CubeGeometry(50, 50, 50,0,0,0,material1 );
var cube = new THREE.Mesh(geometry, new THREE.MeshFaceMaterial());

// ...

var material2 = [new THREE.MeshBasicMaterial({color:0xFFFFFF}), ...];
cube.geometry.materials = material2;

CanvasRendererを使用すると、機能します。しかし、WebGLレンダラーに変更すると、エラーがスローされます:Uncaught TypeError:Undefinedのプロパティ'map'を読み取れません

WebGLを使用して実行時にキューブのマテリアルを更新するにはどうすればよいですか?

4

2 に答える 2

4

コード フラグメントでは、エラーの原因を特定することは困難ですが、テクスチャの有無に関係するマテリアルを変更することはできません。すべての素材を同じ種類に保つようにしてください。material.needsUpdateまた、フラグをに設定する必要がある場合もありますtrue

で物事を更新する方法について、Three.js wiki で詳細と例を見つけることができますWebGLRenderer

https://github.com/mrdoob/three.js/wiki/Updates

また、ここにあなたがやろうとしているように見えるものと同様のことをするフィドルがあります: http://jsfiddle.net/2FZU7/51/

編集: three.js r.58 用に更新されたフィドル

于 2012-09-10T13:44:37.360 に答える