スカルプテッド プリム: FAQ
スカルプテッド プリム: よくある質問と答え
- Q. スカルプテッド プリムとは何か?
- スカルプテッド プリム とは、テクスチャで形状を設定するプリムです。そのテクスチャはスカルプト マップ (スカルプト テクスチャ) と言います。Second Life の従来のプリムでは不可能だった複雑な形状を、スカルプテッド プリムで作成できます。
- スカルプテッド プリムは本来、なめらかな生物的形状 を実現するため導入されたので、大雑把な形状が想定されていました。しかしその他の 3D ソフトで使われる標準的な 3D 表面メッシュ同様、複雑で くっきりした稜のある形状 も実現するため正確な形状も設定したいという要望が、のちに多く寄せられるようになりました。
- Q. スカルプト マップとは何か?
- スカルプト マップ, スカルプト テクスチャ とは一般的なカラーのテクスチャで、そこでは R (赤)・G (緑)・B (青) の値がそれぞれ X・Y・Z 軸の位置に対応づけられています。スカルプト マップはいわゆる "法線マップ" (normal map) と似ていますが、表面の法線でなく表面の位置を表します。
- また変位マップ (displacement map) とも似ていますが、一次元の距離でなく三次元の位置を表します — すなわち三色が三次元それぞれに対応します。スカルプト マップは NURBS のようなパラメトリック (parametric) な表現にとても近いものです。詳しくはスカルプテッド プリム: 技術的解説を参照してください。
- Q. 形状の表現になぜテクスチャ (画像) を使うのか?
- 画像とは 3 個の数字が組で連なったものであり、それはまさに立体表現で必要とされるものです。また、画像を扱うツールが既に多くありますので、形状表現に画像を使うと取り回しし易くなります。画像の圧縮、ストリーミング、プログレッシブ表示、アニメーションはいずれも、技術的に充分熟したものです。例えば、あるテクスチャ (スカルプト マップ) から別のテクスチャへと変化してゆくような QuickTime 動画を作成できます。それをスカルプテッド プリムに適用すると、それはある形状から別の形状へと "モーフィング" するわけです。他にも例えば、スカルプテッド プリムを生成するような Flash アニメーションを作成できます - アバターが touch した点に応じて、形状が揺れたり波打ったりするわけです。これが私たちの目指しているところです。
- スカルプテッド プリムの最初の実装では、スカルプト マップを (データの欠損が起こる) 不可逆圧縮して Second Life の資産保管システムに保存していました。これにより、くっきりした稜を持つオブジェクトはアップロード後に角が取れてしまいました。なぜならばアップロード時にどうしてもテクスチャの細部が損なわれ、近似値にされてしまうからです。
- 多くの要望により、スカルプト マップをアップロードする際に (データの欠損が起こらない) 可逆 圧縮を使えるようにするオプションが追加されました。これにより、テクスチャの細部と本来のオブジェクト形状を保持できるようになりましたが、Second Life の資産保管システムにより多くのテクスチャ用領域が必要となってしまいました。
- Q. スカルプト マップと表面テクスチャはどこで共有したらよいか?
- Q. スカルプト マップはどうやって作成するのか?
一番目の方法は、外部の 3D 制作ソフトで 3D モデルを作成し、スカルプト マップとしてエクスポートし、Second Life にアップロードする事です。
SL コミュニティーの人々は、オープンソースの 3D 制作プラットフォームである Blender のチュートリアルをいくつか書いています。 Qual Linden は Maya 用のエクスポート ツールを作成しました。(ソースはここで取得できます。インストール手順は後述。) 作成済みの 3D モデルを AC3D を使ってエクスポートするチュートリアルがあります。3D Studio Max と ZBrush 用のエクスポート ツールがあります。Wings 3D もインポート/エクスポートが可能です。Daz3d は Hexagon 2.5 でスカルプテッド プリム用のタブを用意しました。
Linden Lab は Second Life ビューア内にスカルプテッド プリム用エディタを組み込む予定です。現在の開発状況については Sculpted Prims: 3D Software Guide を参照してください。進行中の議論については Sculpted Prims:Talk を参照してください。
二番目の方法は、プログラミング言語と幾何学を使って、スカルプト マップを直接計算することです。例えば Tatara や nand Nerd の Sculpt Texture Generator がそれにあたります。
三番目の方法は、何人かの住人が制作した、LSL と Web アプリによる in-world のツールです。いくつかのパラメターを選択するか一連のプリムを編集することで、スカルプト マップのピクセルをプログラムが計算します。
その他、住人が作成した Second Life 内/外のツール一覧は Sculpted Prims: Resident-made Tools で見られます。
- Q. テクスチャをスカルプテッド プリムとして適用するには?
- まず (どのタイプでも良いので) 通常プリムを作成してください。編集モードにし、"オブジェクト" タブで "建造物ブロック・タイプ" を "変形済み" にしてください。するとそのタブでスカルプト マップを選択できるようになります。"テクスチャ" タブでは表面テクスチャの変更が可能です。
- Q. Maya のエクスポート ツールをどうやって使うか?
- このページを開いて、スクリプトの内容をコピーしてください。それを Maya のスクリプト エディタに貼り付け、保存してください。(代わりに、ツールバーのボタンにドラッグしてもよいです。) エクスポート スクリプトを実行すると、エクスポート設定のダイアログが開きます。どの形状をエクスポートするか選択し、"エクスポート" ボタンを押してください。エクスポートに最も適しているのは、各次元につき 16 以下の isoperm を持った NURBS 形状です。ポリゴン メッシュもエクスポートできますが、メッシュの UV 設定に問題が無いことが前提となります。(すなわちメッシュが表面全体を覆っており、穴が開いていないこと。)
- Q. ポリゴン モデルをスカルプト マップとしてエクスポートできるか?
- 注意深くいくつかの制約に従えば、可能です。詳細は Sculpted Prims Talk page for details を参照してください。
- Q. 自分 が今使っている 3D モデリング ソフトは NURBS モデルに対応しているか?
- NURBS は 3D モデリングソフトに於いて、プロ用途とそれ以外を分かつ特徴でしたが、その違いは小さくなってきました。
3D Studio Max, Maya, Blender はそれぞれ NURBS とポリゴンモデル両方に対応しています。 Google Sketchup, Milkshape, Wings3D, gMax 等、その他の多くの無料/廉価ソフトは違います。 Rhino3d は NURBS モデリングに特化した商用ソフト (ただし 3D Studio Max や Maya よりかなり廉価) です。使用可能な 3D モデリング ソフトに関する詳細な議論は Sculpted Prims: 3D Software Guide で見られます。
- Q. スカルプテッド プリムの形状の精度はどの程度か?
- 現在のところ、スカルプト マップ から採るピクセル数は "描画詳細度" (LOD) に応じて異なります。ビューアのカメラに近いプリムは 32x32 個の頂点からなる格子で構成されますが、カメラが遠ざかるにつれ 16x16 あるいは 8x8 に省略されます。
- Q. スカルプト マップの適当なサイズは?
- 64x64 ピクセルが推奨されます。これを超えたサイズは実際無用です - これを下回るサイズでは、描画詳細度 (LOD) によってはサンプリングに不具合が出ます。
- Q. スカルプテッド プリムにはサイズや距離の制約があるか?
- スカルプテッド プリムは通常プリムと同様の位置・回転・サイズ設定が使われます。例えば、(軸方向の距離を考えた場合) プリムは端から端までの距離が最大で 10m なので、スカルプテッド プリムの中心からの最大距離は 5m を超えません。
- Q. "ヒュージ プリム" を使って "ヒュージ スカルプテッド プリム" を作れるか?
- 作れます。このスナップショットをご覧ください。
- Q. デモ動画では滑らかな形状が多く紹介されている。スカルプテッド プリムでくっきりした稜を表現することはできるか? もっと複雑な形状は可能か?
- スカルプト マップのロスレス アップロードが採用されて以降、8 ビット値を正確に再現できるようになりました。"スカルプテッド プリム" という名称は "近似の" 形状という概念に合致するよう選ばれたのですが、上記の平らな板に見られる通り、"近似の" は "正確な" に近い概念でもあります。スカルプト マップを作成する際の手法によっては、スカルプテッド プリムは非常にくっきりとした稜を表現できます。描画詳細度が最高の時、32x32 ピクセルのスカルプト マップは (各ピクセルが各頂点に対応することで) 1024 個もの頂点を表現します。スカルプト マップの推奨サイズは 64x64 ピクセルですが、実際のところ Second Life でのスカルプテッド プリムの最大描画詳細度は 32x32 頂点の格子です。(これを超えたサイズは間引きされます。) 描画詳細度が落ちると、16x16 もしくは 8x8 頂点が使われます。これより多くの頂点が必要な場合は、複数のプリムに分割してください。目安として、SL のトーラス タイプのプリムが約 1000 個の頂点を持ちます。
- Q. プリムの頂点位置を画像のピクセルで記述するという事に関して、JPEG 圧縮によるノイズは頂点位置を不正確にするのではないか?
- これはスカルプト マップをアップロードする時に "ロスのない圧縮を使用" オプションを用いると防げます。より正確な位置指定が可能になるよう、将来的には一色あたりの色深度が 16 ビットのテクスチャを使えるようにするかもしれません。
- Q. スカルプト マップを作成した後、それをプリムに適用したら裏返しのような状態になってしまった。どう修正したらよいか?
- この場合 UV マップの U 軸方向を反転しなければなりません。編集ウィンドウの "オブジェクト" タブで "裏返し" のチェックを入れてください。あるいは、そのテクスチャを外部の画像エディタで開き、水平方向に反転してください。
- Q. フレキシブル属性つきのスカルプテッド プリムを作成できるか?
- 現時点ではできませんが、将来可能にする計画があります。
- Q. スカルプト マップをフォトショップやその他のペイント ソフトで作成できるか?
- 簡単ではありませんが、スカルプト マップの仕組みを技術的に理解した上ならば、作成は可能です。進行中の以下の議論を参照してください:
- Q. テクスチャのアップロード画面でスカルプト マップのプレビューは可能か?
- 可能です。アップロード画面の "イメージのプレビュー" で "変形されたプリム" を選択してください。
- Q. 通常プリムと同様に、スカルプテッド プリムに表面テクスチャを適用できるか?
- できます。スカルプテッド プリムは一つのテクスチャ面のみ持ちます。スカルプテッド プリムに対する表面テクスチャの配置は、スカルプト マップによって定義されます。
- Q. 表面テクスチャの UV マッピングはどんな具合か?
- スカルプテッド プリムに貼り付けた表面テクスチャの倍率/回転/移動は変更可能です。UV マッピングという意味においては、スカルプト マップは表面テクスチャの配置を決めるものです。スカルプテッド プリムは 3D モデリング ソフトにおけるオブジェクトと同じ UV 配置になるでしょう。
表面テクスチャ作成が容易になるよう UV マップを作成する様々な方法がユーザによって発見されつつあります。
- Q. 通常のテクスチャをスカルプト マップとして適用したらどうなるか?
- いわゆる "ゲロ状態" になります — ... はい、美しくありません。
- Q. 関連する LSL 関数と PrimitiveParams 関数の引数は?
- スカルプテッド プリムは llSetPrimitiveParams() 関数を用いて LSL で以下のように設定できます:
- llSetPrimitiveParams([PRIM_TYPE, PRIM_TYPE_SCULPT, "uuid", PRIM_SCULPT_TYPE_SPHERE]);
- llSetPrimitiveParams([PRIM_TYPE, PRIM_TYPE_SCULPT, "uuid", PRIM_SCULPT_TYPE_TORUS]);
- llSetPrimitiveParams([PRIM_TYPE, PRIM_TYPE_SCULPT, "uuid", PRIM_SCULPT_TYPE_PLANE]);
- llSetPrimitiveParams([PRIM_TYPE, PRIM_TYPE_SCULPT, "uuid", PRIM_SCULPT_TYPE_CYLINDER]);
- Q. 物理エンジンでのスカルプテッド プリムの振る舞いは?
- 現時点ではスカルプテッド プリムは、それと大体同じ大きさの不恰好な球形と似たようなものです。
それの上に立ったり座ったりすると、中へ沈み込んだり、浮き上がった状態になるかもしれません。将来的には、物理エンジンをより正確に反映させ、より現実に即したスカルプテッド プリムの動きや衝突判定を実現させるかもしれません。
- Q. これはコンピュータの処理能力を余分に必要とするのではないか — 何らかの制約、例えば 1 リージョンあたり 15,000 個のスカルプテッド プリムは置けないといった事はあるか?
- 描画詳細度が最高で頂点数が約 1,000 個という状況で、スカルプテッド プリムは中空が設定されたトーラスと大体同じ "描画負荷" を持ちます。従って描画に "余計な" コストはありません。リージョンをスカルプテッド プリムで満たすことも可能です。
- Q. スカルプテッド プリムを編集するとき、スカルプト マップが編集ウィンドウで丸見えになってしまう。画面キャプチャすれば、他人が簡単に盗用できてしまうではないか?
- 通常プリム同様、修正 権限を持っているスカルプテッド プリムならば、そのプリムの全ての形状パラメタを見、また変更できます。従って他人にスカルプト マップを見られたくない場合は、そのプリムを 修正不可 にする事です。
- しかし、たとえ相手がプリムのフルパーミションを持っていてもスカルプト マップを見られなくする良い方法があります。すなわち、スカルプト マップのαチャネルを使って、画像を透明にしてしまうのです。もっとも、相手がフルパーミションを持っていて、テクスチャを画像エディタで読み込んで再保存されると、αチャネルは取れてしまうでしょう。
- Q. スカルプテッド プリムは描画詳細度が最高の場合でも 32x32 個の頂点に限られている。256x256 ピクセルのスカルプト マップをアップロードし、そのぶん精緻な形状を実現するにはどうしたらよいか?
- それはできません。現在の Second Life では、制作者たちが描画リソースの取り合いに陥らないよう、"プリムの経済性" を掲げています。各リージョンには 15,000 プリムが割り当てられ、その各プリムには 1024 頂点が割り当てられます。これらのリソースはリージョンの地主たちに公平に分配されます。現在の描画ハードウェアの能力を考えれば、現状はうまくバランスが取れています。近い将来にこれらの制限値を増やす予定はありません。
関連資料
- スカルプテッド プリム
- スカルプテッド プリム: 技術的解説
- Sculpted Prims: 3D Software Guide
- Sculpted Prims: Sculpt Maps and Textures
- スカルプテッド プリム: 3Dモデリング用語集