3Dロゴのオブジェクトについて
3DロゴではVersion 0.80より、表示できる物体(オブジェクト)を任意に追加、削除、変更できるようになりました。
オブジェクトは、ロゴ生成ボタンを押したときにすべてまとめてサーバに送られ、サーバでその一連のオブジェクトに
基づいた一つの画像が生成されてブラウザからその画像を見ることが出きるようになります。
この3Dロゴで言うオブジェクトとは、pov-rayのプリミティブに対応するもので、テキストオブジェクトと
それを装飾するために役に立ちそうなごく基本的なものに限っています。なお、pov-rayのプリミティブについては
pov-rayの日本語マニュアルページなどを
ご覧ください。3Dロゴは画像生成をサーバで動いているpov-rayに任せているものです。
3Dロゴのオブジェクトは、基本データとして以下の情報を持ちます。
- 名前
- この名前はどのオブジェクトとも 異なるユニークな名前である必要があります
- タイプ名
- オブジェクトのタイプを表すタイプ識別名
- テクスチャ名
- このオブジェクトが描画されるときに使用されるテクスチャ名
- 質感のタイプ
- オブジェクトの表面がどのように見えるかを規定する質感タイプ識別名。これが指定されていて、かつ
テクスチャフラグがセットされていないときに、この質感でかつ指定の色でオブジェクトを
描画する。
- カラー名
- 質感が指定されているときに使用される色。テクスチャが指定されているときは使用されない
- テクスチャフラグ
- 指定されているテクスチャを使うかどうかのフラグ。
- 影 フラグ
- オブジェクトの影が描画されるかどうかのフラグ。
- 反射フラグ
- オブジェクトが反射して写り込むかどうかのフラグ。
- イメージフラグ
- オブジェクトを描画するかどうかのフラグ。一時的に全体を見るのに邪魔なオブジェクトなどを消去するときに使う。
- オブジェクト拡大縮小用データ
- オブジェクトを それぞれX,Y,Z 方向に拡大縮小するための データ。既定値は1(拡大縮小しない)
- オブジェクト回転用データ
- オブジェクトをそれぞれX,Y,Z軸上で 回転するための データ(-180から180度)。既定値は0(回転 しない)
- オブジェクト移動 用データ
- オブジェクトをそれぞれX,Y,Z方向に 移動するための データ。既定値は0(移動しない)
- テクスチャ拡大縮小用データ
- テクスチャを それぞれX,Y,Z 方向に拡大縮小するための データ。既定値は1(拡大縮小しない)
- テクスチャ回転用データ
- テクスチャをそれぞれX,Y,Z軸上で回転するためのデータ(-180から180度)。既定値は0(回転 しない)
- テクスチャ移動用データ
- テクスチャをそれぞれX,Y,Z方向に移動するためのデータ。既定値は0(移動しない)
オブジェクト自体は、原点を中心に作成されますが、上記の変換データを適用することによって、
任意のサイズ、角度、位置に配置することができます。そしてオブジェクトの種類によって、例えば球ならば半径と
いうように上の情報に加えて、タイプによる独自のデータも持っています。
オブジェクトの種類
具体的には、以下に示すようなオブジェクトがサポートされています。pov-rayがサポートしているものなら
これ以上に増やすことも可能ではありますが、ロゴの作成がメインの目的なので、現在のところこれだけに限っています。
テキストオブジェクト
pov-rayの三次元テキストに対応するもので、オブジェクトの基本要素に加えて、
文字列と、その文字列を表示するためのフォント名のデータを持ちます。タイプ名をPOV_TEXTとしています。
フォントはtruetypeフォントでなければならず、日本語の字形が入っているフォントなら日本語も3次元化できます。
フォントが対応していれば、英字・漢字まじりの文字列も扱えるようになっています。
テキストオブジェクトはpov-rayではオブジェクトの右前下付近を原点として生成されるのですが、
3Dロゴでは、他のオブジェクトとの関係や、全体を見渡すための利便性から、文字列前面を囲む
最小の長方形の中心部付近を原点に重ねるようにオブジェクトを移動させています。
平面オブジェクト
pov-rayのplaneオブジェクトに対応するもので、無限平面を表すオブジェクトです。背景等に
使用することを想定していて、タイプ名はPOV_PLANEです。
無限平面は、オブジェクトの基本要素に加えて平面の法線ベクトルと原点からの距離で指定しますが、
3Dロゴでサポートしている法線ベクトルは、X,Y,Z軸方向のベクトルのみです。
平面をこれ以外の方向に傾けたい場合は、変換行列の回転で指定することになります。
球オブジェクト
pov-rayのsphereに対応するもので球を表し、タイプ名はPOV_SPHEREです。
球は,基本データに加えて半径を指定して表現します。3Dロゴでは必ず原点を中心にした指定の半径の球が生成されますので、
位置の指定や、xyz方向のスケール変更はオブジェクトの変換行列部分の指定で行うことになります。
超二次楕円体オブジェクト
pov-rayのSuperquadric Ellipsoid(超二次楕円体)に対応するもので、タイプ名はPOV_SEです。
超2次楕円体オブジェクトとして知られている形状は、2次楕円体の拡張であり、
角の丸いボックスや円筒および他の面白い形を作るのに使えます。
このオブジェクトは基本データの他にeとnという二つの数によって表現されます。
このeとnは超二次楕円体の形状を決めるもので、どちらも0より大きい値を指定する必要があり、
通常は1以下の範囲で指定します。
e=n=1の場合、形状は球となり、eが1でnがそれ以外の場合は、形状は円柱となり、
eとnがともに1より小さい場合は角のまるまった箱型の形状となり、eやnが小さいほど
角がシャープになります。
なお、1より大きい値を使うと角の部分が中心に向かって
引っ張られたような形状になります。
このオブジェクトは、原点にあり、座標(-1,-1,-1)から(1,1,1)の大きさのスペースを占めます。
箱オブジェクト
pov-rayのboxオブジェクトに対応するもので、タイプ名はPOV_BOXです。
箱オブジェクトは、原点を中心に、指定したx,y,z座標から(-x/2, -y/2, -z/2),(x/2, y/2, z/2)を
対角線とする直方体のオブジェクトとして生成されます。
円柱オブジェクト
pov-rayのcylinderオブジェクトに対応するものでタイプ名はPOV_CYLです。
円柱オブジェクトはオブジェクトとしての基本データの他に、高さhと半径rを指定して
生成します。生成される円柱オブジェクトは、底面中心が(0,-h/2,0)で高さがh
半径rの円柱として原点を中心に生成されます。
また、開:にチェックをいれることによって、両端の開いた円柱、すなわち円筒を
生成することができます。
CSGオブジェクト
CSGオブジェクトは直接物体を表すオブジェクトではなく、他のオブジェクトを組み合わせて
一つの物体として扱うためのオブジェクトで、タイプ名はPOV_CSGです。CSGとは、Constructive Solid Geometryの略で
以下の4種類のものがあります。
- 論理和(union)
- 複数の物体の結合
- 論理積(intersection)
- 複数の物体の共通部分
- 論理差(difference)
- ある物体から別の物体との共通部分を取り除く
- マージ(merge)
- 複数の物体の結合だが物体の内側の境界を取り除く。透明オブジェクト等に有効
CSGオブジェクトは基本データの他に上記のunion等CSGタイプ名と、複数の他のオブジェクトのデータを持っています。
生成時はCSGタイプを指定するだけですが、あとでこのCSGオブジェクトが含む他のオブジェクトを一つ一つ
指定していくことになります。
なおCSG操作についての詳しい説明は
pov-rayのマニュアルに詳しいのでそちらを参照してください。例えばdifferenceを使うと物体に掘り込むような文字列が
作成できます。
なお、このCSGオブジェクトにもテクスチャが設定できますが、これは含んでいるオブジェクトにテクスチャが設定され
ていて、テクスチャフラグが立っている場合は、そのオブジェクトに対しては無効で、テクスチャフラグがoffになっている
オブジェクトにのみ、このCSGオブジェクトのテクスチャが適用されます。
オブジェクトの操作
3Dロゴではオブジェクトに対して任意の時点で、新規追加、変更、削除ができます。
それぞれについて以下に解説します。
オブジェクトの新規追加
オブジェクトを新規追加するためには、まず追加するオブジェクトのタイプ(POV_TEXT等上記で
説明したタイプ名)を画面左上のセレクションボックスから選んだ上、ユニークな名前を入力して
(text2など一意に決まれば何でも良い)そのタイプに応じた半径や座標などを入力したあと、
生成ボタンを押すことが必要です。もし、すでに使っている名前を指定した場合は、
エラーメッセージが出てオブジェクトは生成されません。
オブジェクトが生成されると、そのオブジェクトのタイプと名称が、
左上のセレクションボックスに表示されます。この様にして生成されたオブジェクトは
ロゴ生成ボタンを押したときに、すべてまとめてサーバーに送られ、そのオブジェクトに
応じた画像がサーバーで生成され、ブラウザ上に表示されることとなります。
オブジェクトの変更
画面上にはセレクションボックスで選択したオブジェクトのデータが表示されていますので。
オブジェクトのデータの変更は、表示されているオブジェクトデータを画面上で変更するだけです。
セレクションボックスから別のオブジェクトを選択した時、またはセレクションボックスの下の
更新ボタンを押したとき、またはロゴ生成ボタンを押した時に、直前に選択されていた
オブジェクトに画面上のデータが書き込まれ、内容が変更されます。
これらの操作をする前に、画面上で変更したデータを、オブジェクトが元々持っていたデータに
戻したい場合はセレクションボックスの下の取消ボタンを押します。セレクションの変更などを
既にしてしまった場合は、元のデータに戻す方法はありません。
CSGオブジェクトの変更
CSGオブジェクトは作成したら、CSG要素の操作画面のCSGリストに名前が表示されますので、
その中から要素を追加・削除したいCSGオブジェクトを選び,さらに上部のオブジェクトリストから
追加したいオブジェクトを選択して、追加ボタンを押すことによって、そのCSGオブジェクトに要素を
追加できます。追加した要素を削除するには要素リストから削除したいオブジェクト名を選び削除ボタンを
押すことで可能となります。
オブジェクトの削除
オブジェクトを削除するのは、セレクションボックスより削除したいオブジェクトを選択し、
削除ボタンを押すだけです。いったん削除したオブジェクトは元にもどすことはできません。
しかし新規追加はいつでも簡単にできますので、不要なオブジェクトは削除しても問題はありません。
以上。