Skip to content

トゥーンテクスチャ読み込み周りの実装の不具合 #24

Description

@ai2playgame

sprintf(toonFileName, "toon%02d.bmp", pmdMaterials[i].toonIdx + 1);

書籍中(p312)では、PMDファイルから 0xff のトゥーン番号を読み取った時、 toon/toon00.bmp をトゥーンテクスチャとして利用するとあります。ですが現在の実装は、以下の2点の問題から不適切だと考えます。

  1. pmdMaterials[i].toonIdx = 0xffの時、toonFileNameが toon256.bmpとなる
    暗黙にint型に変換されることから、0xff + 1 をunsigned charの範囲にまるめて0とすることが出来ていません。明示的にunsigned charにキャストする必要があります。

  2. そもそもtoon00.bmpというファイルが存在しない
    本レポジトリ中にも、MikuMikuDance(x64)をDLする際に付属するトゥーンテクスチャにも、toon00.bmp というファイルは存在しません。
    本実装ではトゥーンテクスチャの読み込みに失敗した場合はダミーで生成したグレーグラデーションテクスチャを代わりに利用する実装になっているため、エラーになることはありませんが……

このIssueは、トゥーン番号に 0xff を使用している巡音ルカ.bmpを読み込んだ際に発見しました。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions