Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
ai2playgame opened this issue Jun 7, 2020 · 1 comment
Open

Comments

@ai2playgame
Copy link

ai2playgame commented Jun 7, 2020

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を読み込んだ際に発見しました。

@ryutorion
Copy link

これ,unsigned charの変数にいったん結果を格納してたら0になるんですけど,可変長引数にそのまま渡しているのでintとしての値がそのまま入っちゃいますね.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants