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のテクスチャローダーに登録します。この関数は最初の呼び出し時にのみ有効です。
ルートの babylon-mmd エントリーポイントは、利便性のためのサイドエフェクトの一部としてこの関数を呼び出します。たとえば import { MmdRuntime } from "babylon-mmd"; を使用すると自動的に登録されます。
個別の完全なモジュールパスを使用する場合、アルファチャンネルを持つ BMP テクスチャをサポートするには RegisterDxBmpTextureLoader() を明示的に呼び出してください。
MMDスクールオーディトリアムステージモデルからの正しく読み込まれたテクスチャの例。