2008年08月12日
素手スカルプ4・妥当なサイズは?
1週間以上ご無沙汰してすみません。マイペースでまいります。
第4回は、スカルプトテクスチャの適切なサイズについてです。
スカルプトの各頂点が、スカルプトテクスチャの個々のドットを情報として使っているという事は、前回までで説明しました。
では、適切な頂点数=スカルプトテクスチャのサイズは、どのくらいでしょう?
(公式Wikiなどに説明はあるのですが、実学として)実際に、16*16、32*32、64*64のスカルプトテクスチャを作って、そこに升目模様のテクスチャを張り付けてみました。

32*32と64*64はほぼ同じ模様ですが、16*16は飛び飛びになっています。よく見ると1つ飛びで目が詰まってしまっているようですね。
この結果から、テクスチャを正しく表示するには、スカルプトテクスチャの1辺が最低32ピクセル必要ということがわかります。
逆に、それ以上のサイズで作っても、手間が増える割に解像度が上がらないことが予想されます。
しかし、この話にはもう少し先があります。
実はリンデンが推奨しているスカルプトテクスチャのサイズは64*64なのです。
詳細はこのへんに書かれていますが、かいつまんで言うと、スカルプトの設定によっては32列ではなく33列分の頂点データが必要になる場合がある…ということのようです。
(64*64のテクスチャの場合、0,2,4…62という風に偶数ピクセル目から32列分のデータを拾ったあと、33列目には63ピクセル目のデータを使うようです)
この条件に当てはまるときに32*32のテクスチャを使っていると、当然ながら最後のデータが正しく取得されないことになります。
その結果スカルプトの端が予想外の向きに歪んでしまう。
実際、作ったスカルプトのちょうど継ぎ目にあたる部分がズレて困った経験がおありの人も多いのではないでしょうか?
結論としては、《32*32で作ったスカルプトテクスチャを、64*64に拡大して使う》のが、一から構築する場合には最も妥当な方法といえそうです。
(ちなみに拡大時には、《ニアレストネイバー(=いちばん近い座標の色をそのまま使う)》形式を選ぶといいでしょう。多くのツールの場合、デフォルトの拡大方法(バイキュービックなど)ではスキマを中間色で埋めてしまいます)
#蛇足ですが、かつてはスカルプトテクスチャを大き目に作る理由がもうひとつありました。
#もともと画像は、アップロード時にJPEG2000形式に変換されるため、多少の劣化を伴います。
#しかし、小さい画像…特にスカルプトテクスチャでは、この小さな劣化も致命的な結果になるため、それを防ぐために必要以上に大きいサイズ(128*128など)でアップロードすることがよく行われました。
#現在では、小さい画像のアップロード時にはロスレス(劣化するのを防ぐ)設定ができるようになって、こういった大型スカルプトテクスチャの必要性は薄れているようです。
第4回は、スカルプトテクスチャの適切なサイズについてです。
スカルプトの各頂点が、スカルプトテクスチャの個々のドットを情報として使っているという事は、前回までで説明しました。
では、適切な頂点数=スカルプトテクスチャのサイズは、どのくらいでしょう?
(公式Wikiなどに説明はあるのですが、実学として)実際に、16*16、32*32、64*64のスカルプトテクスチャを作って、そこに升目模様のテクスチャを張り付けてみました。

32*32と64*64はほぼ同じ模様ですが、16*16は飛び飛びになっています。よく見ると1つ飛びで目が詰まってしまっているようですね。
この結果から、テクスチャを正しく表示するには、スカルプトテクスチャの1辺が最低32ピクセル必要ということがわかります。
逆に、それ以上のサイズで作っても、手間が増える割に解像度が上がらないことが予想されます。
しかし、この話にはもう少し先があります。
実はリンデンが推奨しているスカルプトテクスチャのサイズは64*64なのです。
詳細はこのへんに書かれていますが、かいつまんで言うと、スカルプトの設定によっては32列ではなく33列分の頂点データが必要になる場合がある…ということのようです。
(64*64のテクスチャの場合、0,2,4…62という風に偶数ピクセル目から32列分のデータを拾ったあと、33列目には63ピクセル目のデータを使うようです)
この条件に当てはまるときに32*32のテクスチャを使っていると、当然ながら最後のデータが正しく取得されないことになります。
その結果スカルプトの端が予想外の向きに歪んでしまう。
実際、作ったスカルプトのちょうど継ぎ目にあたる部分がズレて困った経験がおありの人も多いのではないでしょうか?
結論としては、《32*32で作ったスカルプトテクスチャを、64*64に拡大して使う》のが、一から構築する場合には最も妥当な方法といえそうです。
(ちなみに拡大時には、《ニアレストネイバー(=いちばん近い座標の色をそのまま使う)》形式を選ぶといいでしょう。多くのツールの場合、デフォルトの拡大方法(バイキュービックなど)ではスキマを中間色で埋めてしまいます)
#蛇足ですが、かつてはスカルプトテクスチャを大き目に作る理由がもうひとつありました。
#もともと画像は、アップロード時にJPEG2000形式に変換されるため、多少の劣化を伴います。
#しかし、小さい画像…特にスカルプトテクスチャでは、この小さな劣化も致命的な結果になるため、それを防ぐために必要以上に大きいサイズ(128*128など)でアップロードすることがよく行われました。
#現在では、小さい画像のアップロード時にはロスレス(劣化するのを防ぐ)設定ができるようになって、こういった大型スカルプトテクスチャの必要性は薄れているようです。
Posted by Noras Karas at 06:01│Comments(0)
│分析