2009/03/11

テクスチャの変更をスムースに

昨日の記事でクッションを作りましたが、あれはベッドに使用する「まくら」です。(見れば分かるか・・・)

かなり以前にH to H factoryさんにベッド用のアニメーションを依頼し、
即納!ってぐらいのスピードで納品していただいたにもかかわらず、
肝心のベッドの製作はサボって滞ってました。

で、今頃になってやっと取り掛かったという次第です。


当店で現在販売しているベッドもそうなんですが、
今回もカバー(フトン)の形状やテクスチャを変更できる仕様を考えています。



製品に限らず、
テクスチャを変更する際(特に初回)にはグレーの表示が続いたり、
スカルプの形状を変更する際には「球」や「グチャグチャ(?)」の状態になったり・・・
なんてことは皆さん経験されているかと思います。

PCや通信の環境にも因りますが、
作り手としては出来るだけ軽い(テクスチャ)データの制作や同じデータを使うなどで、
表示されるまでの時間を短縮することは配慮したいところです。

ご存知の方も多いかと思いますが、
『同じデータ』という考え方で、見えない(見せない)面にそのテクスチャデータを貼っておくという回避手段もあります。

もちろん最初の読み込みには時間がかかりますが、
読み込んでしまえばキャッシュにある場合と同様に即座に表示されるというわけです。

スカルプデータも同様に、スカルプマップ(テクスチャ)を貼っておけばよいのです。
(スカプルの形状にしておく必要はありません。)


ではどうするのか・・・というのを具体的に。



この画像のベッドの場合、スカルプのパーツのみで作っているので
見えない面というのがありません・・・・と思ったら、
影の部分は通常のキューブのプリムです。

使用しているのは上の面だけ。
つまり下の面やサイドの面を使用するということなんです。
(中空やパスカットを使えばさらに面が増やせます)



この図は分かりやすいように影のパーツを縦に引き伸ばした(厚くした)状態ですが、
このように変更・変型時に使用するテクスチャを貼ります。
左側はテクスチャデータ、右側はスカルプのデータです。

要は最初からこれらのテクスチャが読み込ませておいて、
切り替えた時には読み込みなしで表示させるということです。

見えない面であればそのままでもよいですし、
真っ黒に塗れば下のテクスチャは見えませんから黒い部分として使えばOKです。

また今回のように見せない場所の場合は透明にします。

ただ、編集画面での透過度は上限が90%ですので、うっすら見えてしまいますので
スクリプトでアルファをゼロに指定します。

llSetAlpha(0.0,指定する面番号);

※スカルプデータなら最初からアルファで透明にしておけばよいですね。


というようなことも考えながら、バリエーションを検討していますが・・・



面が全然足りません!!

まあ単にたくさん詰め込めばよいと言うものでもないので、
数を絞っていこうと思います。

使い勝手を考えると、
スカルプの形状変更を優先し、テクスチャは出来る範囲でというところでしょうかね。
(と今から言い訳しておきます。)

 

0 件のコメント: