ソラマメブログ

2008年05月21日

SHADE10でスカプリ(7)エッジとスカプリの解像度のお話



今回は、スカプリのエッジの出し方と解像度についてです。

スカプリって角が丸いのが気になることあるんですがエッジをシャープにすることは、ある程度は可能です。

でも、スカプリ自体の解像度というか、分解能の限界があるので、
これを理解したモデリングが必要になってきます。

Shadeのせいじゃなくて、セカンドライフの仕様ですね^^
限界を無視すると、思ったような形になりません。







* * *

(1)エッジをシャープに!! とりあえずやってみよう

エッジをシャープにするには、エッジ周辺のポイントを増やせばいいと言われてますよね。とりあえず実験してみることにします。


テストに使用したのは、このモデル。




前回作った立方体を変形させると、このカタチになります。

これをなにもせずに普通に出力した場合と、エッジの周辺にポイント追加した場合を比較してみます。
ちなみに、このダイヤのような形は、もともと頂点の数が少ないのでPhotoShopでもシャープにできますので一緒に比較します。





たしかにうわさどおり、エッジ周辺にポイントを追加するとシャープになってますね。

使ったスカプリのテクスチャは、これ。

(1)ノーマル (2)エッジ強調 (3)Photoshop


エッジを強調するとテクスチャも鮮明になるのがわかります。





(2)エッジ周辺にポイントふやすとどうなるか?

エッジ周辺にポイント増やすとデータがどうなるってことなんでしょうか?

上の3枚の画像を逆にShadeにインポートしてみました。
※インポートツールはないので、以前作った自作スクリプトを使用してます。
(過去記事→不完全メモ:Shadeでスカプリに挑戦(2) スカプリを読む




スカプリテクスチャをShadeに読み込みなおすと寝てしまうのは、ワタシのスクリプトが、SLに座標をあわせて回転させているからなので気にしないで下さい。

この3枚の図。右に行くほど、点が少なく見えますが、どのデータも実は、128x128の頂点があります。
極端な例ですが、右端のPhotoshopで加工した画像だと、図形の角にあたる部分に頂点が集中してます。エッジをきれいに立たせるための理想に近い形です。

エッジ付近にポイントを追加した、真ん中の図では、
エッジ周辺にポイントが集中し(線が太く見えますね)、その他の部分のポイントは減っています。

これに対して何も処理していない左端の画像は、均等に点が散らばっているのにくわえて、
線の精度が悪く見えます。




上の図は、先ほどの通常の出力の部分を拡大したものです。
頂点が直線上にならばず、ガタガタしている感じわかりますか?

精度が悪くなる原因は、スカプリのテクスチャの表現できる解像度のようです。
256階調しか表現できないので、直線上に並ぶはずの、128x128の頂点の座標が正確に再現できてません。


使えるポイントの数は、限界がありますが、この図形のようにシンプルな形の場合は、エッジ周辺のポイントを増やすようにすると、結構うまく行きます。
ただし、曲線を表現するにもポイントの数が必要なことを忘れないで下さい。
複雑な形状の場合は、そもそも全体の形状を表現するのにもポイントを消費しますので、バランスが必要になります。



(3)歯車が作れない・・・

歯車を作ってみました。
※データ作成には、すばらしいスクリプトをたくさん公開されているうりさんの「基本形状作成.py」というスクリプトを使用しました。




これをエクスポートしてSLにアップすると・・・



みごとに壊れてしまいました・・・
エッジを増やしてもダメ。
何故でしょうか?



(4)スカプリの仕様を再度チェック

技術解説のWikiをもう一度読み返してみると、なんだかおもしろいことが書いてありました。

●テスクチャの色は、256階調

うんうん、これは、知ってたよー

●最大の頂点数は、33x33かも・・・

ええ!って、そうやったん!?



なんかそう読めるんですけど・・・
英語に自信がないので、是非原文をご覧下さい→こちら


スカプリのテクスチャは、32x32だと頂点数が足りないので、
64x64以上のものを使うと、この中から33x33の頂点を見つけるみたいですね。

でも、セカンドライフの画像アップローダには、別のバグがあって、(→VWR-2404
64x64以下の画像をアップすると、ロスレスのはずなのに、画像がおかしくなってしまうみたいです。

んで、結論的には、128x128を使うのがいいみたいなんです。

でも、この中のすべての頂点を使ってるのではなく、
33x33しか使われてないってことみたいです。



(5)SLでワイヤーフレームを確認

と、ここで、SLの中でもワイヤーフレーム表示できることを思い出したので、早速調べてみました。
(ワイヤーフレームの表示は、Ctrl+Shif+Rです。)



1周を数えてみると確かに32個。
最初と最後が重なってる(ステッチ)ので、実質33個の頂点ですね。

なるほど!!

で、さっきの歯車を見てみると・・・



頂点数が足りていないことが、一目でわかります。
このモデルだと、交差方向に48の頂点が必要なんです。
エッジ強調以前に、そもそもこの頂点数だとSLのビュアが再現できなくて
カタチが崩れてしまうようです。


頂点数をへらすために歯の数を減らしてみると、うまく行きました。
(歯車らしさは、減ったけどねー)




うん、そっかーそうゆーことやってんやー
やっと謎が解けた気がします♪

これが、おーてたらなんですが・・・
だはは^^



手元のメモはあと少し、
次回は、実際にいろいろ作った作例をご紹介したいと思います。

(追記:5/22 15:02)
さきほど、続きを公開しました^^
SHADE10でスカプリ(8)いろいろなカタチに挑戦!!

Shade10でスカプリ:目次ページ

この記事へのトラックバックURL

http://jinko.slmame.com/t241752
この記事へのコメント
jinkoサンすげー。

敬服します。

おいらなんかまだ意味わからんですよスカプリなんて。
Posted by neofix at 2008年05月22日 09:31
neofix さん^^

お久しぶりですねー
ブログの更新がないとおもったら、
PCがたいへんなことになってたんですね

半年も・・・

快方に向かってるようでよかったです^^

スカプリって、すごい方たくさんいますので、
ワタシなんて、まだまだですよー
Posted by jinkojinko at 2008年05月22日 14:59