スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

スカルプテッド版・マイクロプリムの作りかた

通常プリム以外の、マイクロプリムの作りかた、第2弾です。

今回は、スカルプテッド・プリム。

念のためおさらいしておくと、色や模様を表現するテクスチャの他に、プリムの形を指定するためのテクスチャ(以下、これを「UVテクスチャ」と呼びます)を使うプリムです。
UVテクスチャの、各ピクセルのRGB値をXYZの座標に見立てて、四角面が1,024ある立体を描画する、という仕組みです。

スカルプテッド・プリムは、頂点数やその配列に制限があるので、メッシュのように三角面を追加、ということができません。

そこで、テキトーな頂点を2個借りてきて、サイズを偽装してUVテクスチャを書き出したのち、画像編集ソフトを使って、UVテクスチャを直接編集する、という作業になります。



1、複数の頂点が1か所に集まった箇所を持つ形状の場合…スポイトツールでラクラク

マイクロスカルプ01

球体の両極や、両端の閉じた円柱の終端では、たくさんの頂点が1箇所に集まります。

マイクロスカルプ02

ここから、頂点を2つ借りて、1cm角の立方体の対角線に配置します。

マイクロスカルプ03

試しに面を貼ると、こんなふうになりますが、気にしないでUVテクスチャを書き出してください。



さて、書き出したテクスチャが、こちらです。
1か所に集まった頂点は、UVテクスチャでは同じ色になります。

マイクロスカルプ04

上端の左右に見える、あきらかに異質な白と黒の点が、サイズ擬装に使った頂点です。
これを、スポイトツールと塗りつぶしツールを使って、上端の他のピクセルと同じ色にして保存すれば、作業終了です。



2、トーラス、チューブなど、重なる頂点を持たない形状の場合…モデルを2個用意してラクラク

1,024個の頂点に、すべて固有の「色」が割り当てられている場合、サイズ擬装のために頂点を移動してしまうと、あとから元の位置の「色」を取得することは困難です。
そんなときは、モデリングができた時点で、擬装用の頂点を用意する前にモデルを複製しておき、それぞれ、別々の頂点を擬装用に使います。

マイクロスカルプ07

モデルごとに、なるべく遠く離れた場所のほうが、あとでわかりやすいでしょう。


この2つのモデルからそれぞれUVテクスチャを書き出し、画像編集ソフトで開きます。
擬装した頂点は、だいたい、周囲とあきらかに色が違うので、すぐわかると思います。

マイクロスカルプ05

あとは、一方の、擬装したピクセルを含まないエリアを、がばっと選択・コピーして、もう一方の擬装ピクセルを含むエリアの上に、べたっと貼り付ければ、修正完了です。

マイクロスカルプ06

マイクロメッシュとは異なり、マイクロスカルプには、小さくできる限界があります。
UVテクスチャの色の階調がRGBそれぞれについて0~255なので、マイクロプリムとして使用する場合、1/255cmより細かい凹凸は再現できないので、注意が必要です。

※ このエントリーは、「セカンドライフ技術系 Advent Calendar 2014」に参加していますよ。

テーマ : Seond Life(セカンドライフ)
ジャンル : オンラインゲーム

メッシュ版マイクロプリムの作りかた

マイクロプリム、あるいはナノプリムと呼ばれる小さなプリムをご存知ですか?

SecondLifeで作成/編集できるプリムは、縦横高さを~正確にいうと、回転がゼロのときに、XYZの各軸の方向に~1cmよりも小さくすることができません。

通常プリムのパラメータ

しかし、装身具やジュエリーのクリエイターさんたちは、通常プリムの、パスカット(Path Cut)や中空(Hollow)、切り取り(Slice)、テーパー(Taper)、ひねり(Twist)などを駆使して、プリムの性質としては各辺1cm以上を保ちつつ、見かけのサイズを1cmよりも小さくする方法を見つけ、共有し、受け継いできました。これが、マイクロプリムです。

でも、スカルプテッド・プリムやメッシュオブジェクトでは、これらの特殊なパラメータを使うことはできません。

では、どうするか?

ここでは、「マイクロメッシュオブジェクト」の作り方を説明します。



メッシュオブジェクトも、縦横高さの下限が1cmであることに変わりはありません。
できるのは、マイクロプリムと同様、【見かけだけ】1cm以下にすること。
このためにメッシュでは、見えない頂点を作ります。

マイクロメッシュ説明01

例えば、図の赤いラインのようなオブジェクトを作るとします。
ここでは説明にために円柱にしていますが、もちろんどんな形でもかまいません。
そのままでは、縦横高さが1cmに満たないので、アップロードすると強制的に拡大されます。

そこで、数値上、XYZとも1cmになるように…

マイクロメッシュ説明02

図のような、「面積がゼロの三角面」を、1辺1cmの立方体の、もっとも遠い2頂点を結ぶように追加します。

三角面を構成する頂点のうち2つを完全に重ねると、面積がゼロになるので、MetasequoiaやBlenderの編集画面では頂点と辺が描画されますが、アップロードすると、インワールドではまったく見えなくなります。

この方法で、メッシュオブジェクトの見かけのサイズは、理論上は、好きなだけ小さくできます。

他の方法も試してみましたが、結局;

1、追加するのが三角面1、頂点3のみなので、ランドインパクトの増加がもっとも少ない
2、モデリング時にはただの直線として描画されるので、作業の邪魔になりにくい
3、アップロードすればそのまま不可視になるので、テクスチャ等の配慮が不要


という理由で、おそらくこれが最善の方法と思われます。

注意点は3つ。

1、重ねる2頂点は、正確にぴったりと重ねてください。わずかでもずれていると、面積が生じて、インワールドで見えるようになってしまいます。

2、この2頂点は、あくまでも「重ねる」だけにしてください。間違えてくっつけてしまうと、三角面の体をなさなくなり、例えばMetasequoiaだと、面を構成しない頂点と見做されて、消えてしまいます。

3、Blenderで「見えない三角面」を追加したときは、もとのオブジェクトと「統合」するのを忘れないでください。アップロード時にエラーが出ます。

※ このエントリーは、「セカンドライフ技術系 Advent Calendar 2014」に参加していますよ。

※ Twitter上で、うまくゆかない事例を報告していただきましたので、12月31日付で、注意点3を追記しました。

テーマ : Seond Life(セカンドライフ)
ジャンル : オンラインゲーム

輝き(反射)

…英語だと「Shininess (specular)」だそうですが、まあとにかくそういうパラメータが、いつの間にか拡充されていました。

これは、オブジェクトに光沢を与えるパラメータで、以前は、なし・低・中・高の4種類しか選べなかったものです。
おまけに、光沢を与えると問答無用で鏡面のような質感となり、オブジェクトの元の色が大きく変わってしまうとか、半透明のテクスチャを持つ面では光沢が無効になるとか、使い勝手も決してよくはありませんでした。

それが今では、グレースケールのテクスチャを読み込ませることで光沢を細かくコントロールできるようになり、更に、鏡面の度合いもパラメータが用意されて、例えば、元の色を活かした成型プラスチックのような光沢も表現できるようになっています。



ということで。

テトラポッドピアス

ピアスのテトラポッドに色をつけてみましたよ。

タッチするとダイアログが出て、色が変えられます。

もちろん今回も、編集可でのリリースですよ。

テーマ : Seond Life(セカンドライフ)
ジャンル : オンラインゲーム

マイクロプリムがあるなら、マイクロパーティクルがあったっていいじゃない!

マイクロパーティクル01

2年ほど前に作った、かまくらの内部です。
深夜設定だと、ろうそくのあかりがステキでしょ?

では、全景をご覧いただきましょう…。

マイクロパーティクル02

あれ?

ろうそくの炎が消えちゃった…。



セカンドライフのビューアには、描画がコンピュータなり回線なりにかける負荷を減らすために、いろんな仕様が盛り込まれています。
じつは、これもそのひとつで、一定より小さなパーティクルは、距離が離れると、さっさと描画をやめてしまうのです。

むろん、あなたが、ご自分のPCで見る分には、グラボやメモリを贅沢に積み、ビューアの設定を"ウルトラ高画質"に設定すれば、より小さなパーティクルまで詳細に表示させることも、たしか可能であったと思います。

しかし、例えばあなたの作ったものを見てくれる人、買ってくれる人の、すべてのビューアに、同じ設定を求めることはできません。

この記事は、ごくふつうの設定のビューアで、より小さなパーティクルを見てもらおう、というTipsです。



さて。



どうするか?



パーティクルを大きくします。はい解決。



…。



えーと、とにかく実際にご覧ください。

マイクロパーティクル03

こちらが、実際にパーティクルを大きくした、ろうそくの炎。

マイクロパーティクル04

ここまで遠ざかっても、まだ見えます。



マイクロパーティクル05

これが、パーティクルに貼ったテクスチャ。

最初は左のテクスチャを貼っていて、パーティクルのサイズは、見えている炎とほぼ同値に設定していました。

のちに、右のテクスチャに差し替え。
炎の見かけの大きさは変わりませんが、スクリプト上は、パーティクルの大きさはタテヨコとも4倍になっています。
すると、ビューアの奴め、まんまと騙されて、「あ、これは大きいパーティクルだから遠くまで描画しなきゃ」と、せっせと働いてくれる…というわけです。



このTipsは、これにて、おしまい。



ところで、ひょっとすると「で、テクスチャの下半分の透明部分は何?」と思われた初心者さんもいらっしゃるかもしれません。

これは何かというと、パーティクルの位置合わせです。

パーティクルを制御するパラメータには、PSYS_SRC_BURST_RADIUS という、発生源からの距離を設定する項目がありますが、これは発生源であるプリムの、Z軸方向にのみ有効です。
また、この距離とは、プリムの中心から、パーティクルとして使われる画像の中心までの距離を指します。
そのため、ろうそくの炎のような回転対称でない画像は、リアル世界での「発生源」である、ろうそくの芯の先にあたる部分が、全体の中央に来るように余白を調節しておくと、いろいろと楽なのです。



※ 今年も、去年に続いて、「セカンドライフ 技術系 Advent Calendar 2013」に参加しているんですよ。

テーマ : Seond Life(セカンドライフ)
ジャンル : オンラインゲーム

中空にしたプリムの内部に、きれいにテクスチャを貼るTips…なのか?

スカルプトだメッシュだといっても、やっぱり便利です、通常プリム。

「中空(空洞)」パラメータをいじれば、ボックスやシリンダーを筒状にしたり、球体をドームにしたりできるので、工夫すればものすごい省プリムで、家や店舗が建っちゃいます。

しかし、ここで立ちはだかるのが、テクスチャの問題です。
ここで躓く初心者さんも、少なくないのではないでしょうか。



そこで、この記事では、プリムの内部にテクスチャを貼る手順をご説明します。

最初にお断りしておきますが、プリムの仕様について、「なぜ」そうなっているのかは、私にもわかりません。
しかし、理由はともかく、法則性と対処法はわかるので、よかったらついてきてください。

あと。

計算がいっぱい出てきます(苦笑)。


おさらいとしての中空のルール1・内部は形状に関係なく「1面」

hollow01.jpg

この画像は、中空にしたボックスの、外側と内側、それぞれ1面だけに格子状のテクスチャを貼ったものです。
外側は確かに1面だけに貼られていますが、内側は、テクスチャが全体に貼られています。

空洞の内部は、見た目が四角柱でも三角柱でも、あるいは円柱や球でも、とにかく、全部で1面、ということになっています。

ですから、建物の内装を作るような場合には、テクスチャの作り方には注意が必要です。


おさらいとしての中空のルール2・内部のテクスチャは「反転」している

英数字の書かれたテクスチャを貼りましたが、よく見ると内部のテクスチャは字が反転しています。
あらかじめ反転を考慮したテクスチャでない場合は、制作ツールの「材質」タブで、テクスチャの「反転」にチェックを入れておきましょう。

hollow02.jpg



中空のルール3・内部のテクスチャは、とにかく、ずれる

さあ、いよいよここからが本題ですが、画像の例でも、すでにテクスチャがずれているのがわかりますよね?

hollow09.jpg

結論を言うと、テクスチャは中空の割合の分だけ、ずれます。
しかし、そこにはきちんとしたルールがありますから、高い精度で補正が可能です。



ここで、「形状」タブに戻って、作例のプリムを見てみましょう。
すると、「中空(空洞)」の値は、93となっています。

hollow04.jpg

この場合、空洞の内部に、繰り返し1回のテクスチャをぴったり貼るには、「材質」タブの「面ごとに繰り返す~水平(U)」に、次の式で求めた数値を入れます。

1.0 ÷ (93 / 100) = 1.0752688…

hollow06.jpg

入力欄は、小数点以下3桁しかありませんが、それでも、テクスチャの繰り返しは、見た目ではほぼぴったり1回になりました。

が。

hollow05.jpg

はい、そのとおりです、位置がずれたままですね。


今度は、次の計算。

0 - (1.0752688… - 1.0) / 2 = -0.0376344…

こうして求めた値を、今度は「テクスチャのズレ~水平(U)」に入力すると…。

hollow07.jpg

テクスチャの端が、ぴったりと角に収まりました。

hollow08.jpg

ほらね。


以上、ふたつの計算をまとめると、こんなふうになります。

中空の内部のテクスチャの繰り返しの求め方
= 出来上がりの"見た目の"繰り返し ÷ (中空の値 / 100)



テクスチャのずれの補正(見た目の繰り返しが奇数回の場合)
=  - (実際の繰り返し見た目の繰り返し) / 2


テクスチャのずれの補正(見た目の繰り返しが偶数回の場合)
= 0.5 - (実際の繰り返し見た目の繰り返し) / 2



なお、ずれの補正については、ルール2で書いた、テクスチャの反転をしている場合の計算式を書いています。材質タブで反転させていないテクスチャの場合は、プラスマイナスが入れ替わったりしますので、なんとなくごにょごにょしてみてください。


あと、上級編というかなんというか、もし、スクリプトが書けるなら、テクスチャの繰り返しやずれは、llSetPrimitibeParams関数で数値指定してみましょう。
こちらは、小数点以下6桁くらいまで受け付けてくれるので、制作ツールよりも遥かに精度の高い調節が可能です。


中空の形状に関係なく使えるので、計算方法だけでも覚えておくと、いろいろ便利ですよ。

テーマ : Seond Life(セカンドライフ)
ジャンル : オンラインゲーム

プロフィール

儒艮堂店主

Author:儒艮堂店主
SecondLifeで、建築物、樹木、タイニーアバター、海洋生物などを製作中。

最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QRコード
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。