Fix BMP テクスチャローダー
BMPテクスチャを使用したモデルの読み込みに問題が発生した場合は、このドキュメントを参照して問題を解決できます。
問題の診断
MMDスクールオーディトリアムステージステージモデルからの不正確に読み込まれたテクスチャの例。
BMPテクスチャを使用したモデルを読み込む際、アルファチャンネルを持つBMPファイルが正しく表示されないケースがあります。
原因
この問題は、ブラウザとMMDがBMPテクスチャファイルを読み込む方法の違いによって発生します。(Babylon.jsはブラウザのBMPテクスチャ読み込み実装を使用しています。)
問題は、テクスチャにアルファチャンネルがあっても、ブラウザがアルファチャンネルを無視してRGBチャンネルのみを読み取ることです。これによりアルファチャンネルの損失が発生します。
解決策
babylon-mmdは、BMPテクスチャを正しく読み込むための追加処理を行うBMPテクスチャローダーを提供しています。
これを使用するには、babylon-mmdのBMPテクスチャローダーをBabylon.jsのテクスチャローダーのグローバルステートに登録する必要があります。
import { RegisterDxBmpTextureLoader } from "babylon-mmd/esm/Loader/registerDxBmpTextureLoader";
RegisterDxBmpTextureLoader();
RegisterDxBmpTextureLoader
関数は、babylon-mmdのBMPテクスチャローダーをBabylon.jsのテクスチャローダーに登録します。この関数は最初の呼び出し時にのみ有効です。
この関数は、インデックスをインポートすると実行されるサイドエフェクトです。例:import { MmdRuntime } from "babylon-mmd";
したがって、babylon-mmdのインデックスを一度でもインポートすると、DxBmpTextureLoader
はすでに登録されています。
MMDスクールオーディトリアムステージモデルからの正しく読み込まれたテクスチャの例。