SQLの窓

2012年05月07日


最新のThree.js(2012/04/22-r49)は、IEで動かないバグがあります。それと、CanvasRenderer からLambert で テクスチャの処理が削除されました

何故か無条件に console.log でリビジョンを表示するようになっているので、IE の場合はF12 で開発者ツールを開かないとエラーで実行されません。そこで先頭で以下のコードを追加しておくといいです。
if(!window["console"]){window["console"]={};window["console"]["log"]=function(){}}
それから、光に対応している MeshLambertMaterial の CanvasRenderer の処理でテクスチャ処理が削除されているので、代わりに MeshBasicMaterial を使用します。もともと、CanvasRendererでは、無理やり Google Chrome でしかまともに動かない darker というものを使っていたのですが、無理が生じてきたものと思われます。結果的に、WebGLRenderer と CanvasRenderer では Materialを分けて使う運用になると思います。

CanvasRenderer で MeshBasicMaterial への移行

実際、ソース上では MeshBasicMaterial として仕様変更されているのですが、他の部分が完全に右へならえになっていないので、CanvasRenderer を使いたい場合は注意が必要です。

★ WEB 実行サンプル


1) 3D モデルをロードしたい場合は、JSONLoader のイベント内で MeshFaceMaterial を使う

mesh = new THREE.Mesh( geometry, new THREE.MeshFaceMaterial());
これは、ポリゴンの3角形データが内部で配列になっていて、それを統括するのが MeshFaceMaterial です。MeshFaceMaterial は定義上名前だけの器として内部にはなにもありません。ただ、さらにデータ内の shading を Basic にする必要がありますし、これらは今後のバージョンアップで仕様変更される可能性もあります。

※ データを変更しない場合、テクスチャが一枚だけならこれでも表示されます

var param = {
	map: THREE.ImageUtils.loadTexture('texture.png'),
	overdraw: true
};
mesh = new THREE.Mesh( geometry, new THREE.MeshBasicMaterial( param ));

2) 単純ポリゴンでは、パラメータでテクスチャを渡して MeshBasicMaterial を直接使う

キュープ等では MeshBasicMaterial でテクスチャは自分でロードします。
var image = new Image()
image.onload = function () {
	var texture = new THREE.Texture( this );
	texture.needsUpdate = true;
	material = new THREE.MeshBasicMaterial({map: texture});
	// キューブ
	cube = new THREE.Mesh(new THREE.CubeGeometry(300, 300, 300), material);
	cube.overdraw = true;
	scene.add(cube);
};
image.src = 'texture.png';



posted by lightbox at 2012-05-07 01:58 | Three.js & typeface | このブログの読者になる | 更新情報をチェックする
container 終わり



フリーフォントで簡単ロゴ作成
フリーフォントでボタン素材作成
フリーフォントで吹き出し画像作成
フリーフォントではんこ画像作成
ほぼ自由に利用できるフリーフォント
フリーフォントの書体見本とサンプル
画像を大きく見る為のウインドウを開くボタンの作成

CSS ドロップシャドウの参考デモ
イラストAC
ぱくたそ
写真素材 足成
フリーフォント一覧
utf8 文字ツール
右サイド 終わり
base 終わり