PMXのテクスチャが表示されないときに見るところ
PMXを読み込んだのにテクスチャが出ない、という状況の原因はだいたい決まっています。よくある順に挙げます。
1. 大文字小文字が食い違っている
これがいちばん多い原因です。 PMXの中に Texture\Body.png と書かれているのに、実ファイルは texture/body.png ということが実際によくあります。Windowsのファイルシステムが大文字小文字を区別しないため、作者の環境では問題なく表示されてしまうからです。
ブラウザやLinuxのサーバは区別するので、ここで初めて表示されなくなります。このサイトは、完全一致で見つからなかったときに小文字に揃えた名前でもう一度探すようにしています。
2. テクスチャがフォルダごと揃っていない
PMXは自分の中にテクスチャを持たず、相対パスで外のファイルを参照するだけです。PMXファイル1つだけを渡しても絵は出ません。配布物のフォルダ構造をそのまま保つ必要があります。
このサイトのアップロードは、フォルダごとドラッグ&ドロップすると相対パスを保ったまま受け取ります(ファイル1つずつ選ぶ方式だとフォルダ構造が失われます)。
3. 拡張子が sph / spa
スフィアマップの .sph / .spa は、中身はただのBMPやPNGです。名前が違うだけなので画像として読めることが多いのですが、サーバのContent-Typeは application/octet-stream で返るのが普通です。「拡張子が画像でないから表示しない」と決め打ちすると、出せるはずのものまで出なくなります。
4. 拡張子が tga(ブラウザは開けない)
MMDのテクスチャにはTGAがよく使われますが、ブラウザは <img> でTGAを表示できません。three.jsに同梱の TGALoader で読んでcanvasへ描き、PNGへ変換すれば表示できます。このサイトのテクスチャ一覧はその方法で中身を見せています(左下原点・左上原点・RLE圧縮の3種類で確認済み)。
5. 拡張子が dds
.dds は中身がDXT圧縮なので、2Dのcanvasへ描くには展開の実装が別途必要です。このサイトでは対象外にしています(3Dの描画自体は問題なく動きます)。
確かめ方
手元のモデルなら、ローカル再生にフォルダごとドロップすれば、アップロードせずにその場で結果が見られます。ファイルは端末から出ません。テクスチャが欠けている場合、どのファイルが見つからなかったかは開発者ツールのネットワークタブで404を見るのがいちばん早いです。