Metasequoia改造論(2) 透明マップの読み込み

  • このエントリーをはてなブックマークに追加
  • 0

で、次にMetasequoiaクラスの修正。Metasequoia#parseMaterialChunk内の、Materialチャンク行を解析しているfor文を、MetasequoiaMaterialを使用するように変更。

for (; l < endLine; ++l) { var material:MaterialObject3D; line = lines[l]; // マテリアルの名前を取得 var nameBeginIndex:int = line.indexOf("\""); var nameEndIndex:int = line.indexOf("\"", nameBeginIndex + 1); var name:String = line.substring(nameBeginIndex + 1, nameEndIndex); _materialNames.push(name); // テクスチャファイル名 var tex:String = getParam(line, "tex"); if (tex) { // テクスチャファイル名を取り囲む " " を取り除く tex = tex.substr(1, tex.length - 2); _materialsToLoad++; if (tex.toLowerCase().search(/\.tga$/) != -1) { material = loadTGAMaterial(path + tex); } else { // テクスチャの URL を絶対にして読み込む material = new BitmapFileMaterial(path + tex); material.addEventListener(FileLoadEvent.LOAD_COMPLETE, materialLoadCompleteHandler); material.addEventListener(FileLoadEvent.LOAD_ERROR, materialLoadErrorHandler); } // あまり重さが変わらないのでせっかくだからスムージング material.smooth = true; } else { // 形式 - col(1.000 1.000 0.000 1.000) var colorstr:String = getParam(line, "col"); if (colorstr != null) { var color:Array = colorstr.match(/\d+\.\d+/g); var r:int = parseFloat(color[0]) * 255; var g:int = parseFloat(color[1]) * 255; var b:int = parseFloat(color[2]) * 255; var a:Number = parseFloat(color[3]) * 100; //trace("rgb = " + r + "," + g + "," + b); material = new ColorMaterial((r << 16) | (g << 8) | b); } else { material = MaterialObject3D.DEFAULT; } } material.doubleSided = this.doubleSided; material.name = name; materials.addMaterial(material, name); } [/as] ↓ [as] for (; l < endLine; ++l) { var material:MetasequoiaMaterial; line = lines[l]; //マテリアルの作成開始 material = new MetasequoiaMaterial(); //マテリアルロード完了イベントの設定 material.addEventListener (FileLoadEvent.LOAD_COMPLETE , materialLoadCompleteHandler); //マテリアルのロード開始 material.load(path , line); material.smooth = true; material.doubleSided = this.doubleSided; materials.addMaterial(material, material.name); _materialNames.push(material.name); } [/as] これで、透明マップを読み込み可能になった。ただし、TGA画像の読み込み能力を失ってる(Revision100がベースなので)ので、そこは要改良。

スポンサーリンク
スポンサーリンク
  • このエントリーをはてなブックマークに追加

フォローする

スポンサーリンク
スポンサーリンク