今のところMetasequoiaのmqoファイルを Redqueen Rendering Toolのrrtファイルに変換する コマンドラインツール'mqo2rq2'を含んでいるシステムです。
そのうちrrt2mqoとかもできるかもしれません。まぁソースもあるので必要な機能が有れば自分で追加して下さい。
パッケージに含まれる拡張子exe以外のファイルについては 改造&再配布は自由に行ってかまいませんが、 トラブル対処やサポート等は改造&再配布を行った人がやって下さい。
同梱のexeファイルは、 自作のRubyスクリプト群を Exerb 3.2.0と ActiveScriptRuby 1.8.1.1を用いて実行ファイル化したものです。
基本はコマンドラインからですが、デスクトップにショートカットを作ってやると アイコンへのドロップでも受け付けます。 アイコンへのドロップだとオプションの受け渡しができないので、 受け渡したいオプションはショートカットのプロパティで設定されている作業フォルダにある mqo2rq2.cfgで設定します。
コマンドラインからでもmqo2rq?.cfgを読み込みますが、その場合はカレントフォルダからの読込みになります。
Usage: mqo2rq2.rb [options] mqo_file ... normal options: -x, --width=WIDTH :integer [640] -y, --height=HEIGHT :integer [480] -o, --oversampling=SAMPLE :integer [3] -d, --tracedepth=DEPTH :integer [5] --scaling=SCALING :float [0.1] --no-default-lights background options: --bgcolor=R,G,B :float,float,float [MQO ambient color] --hdri=HDRI_FILE :*.pfm, *.png, *.ppm, *.tif --patch=PATCH_FILE :loading patch file for mqo2rq.rb common options: -?, --help show this message If exists 'mqo2rq2.cfg' in current folder then preload it.
おおざっぱにまとめると以下のような変換を行います。
Ruby/MetaRedによるMQO→RRT変換(概要) Metasequoia Redqueen 非表示オブジェクト 出力しません オブジェクト 基本的に材質ごとに分解しますが、 特別な名前のオブジェクト オブジェクト名の先頭が@の場合はprimaryunvisible="true"を出力します。
オブジェクト名の最後が!の場合はthroughphoton="true"を出力します。
Point[〜]等の場合は面を各光源に変換します(詳細は後述)オブジェクト名 オブジェクト名_材質名 材質未割当の面 default_materialを割当てる 四角形面 三角形に分割して 三角形面 座標値を変更して 座標値 座標系変換&1/10にスケールダウンして出力
スケーリングはRRT[:scaling], RRT[:camera_scaling]で任意に設定可能UV そのまま出力 ロック On castshadow="false" 材質 材質変換についてを参照のこと ドキュメント設定/周囲光 RRT[:ambient] = :use_mqoの場合renderer/ambientとして出力 下絵/透視 sky/imageとして出力しますが、RRT[:bgtype] = 'hdri'にしないと無意味です。 視点情報 cameraとlightへ適当に(^^;
なお、mqo2rq?の処理対象はmqoファイルであって、それが参照しているテクスチャなどの画像ファイルには手を出しません。 また、Redqueenで扱える形式かどうかのチェックもしないので、そのあたりは各自で対処して下さい。 まぁフルカラーのPNGファイルを使っておくのが無難だとは思う。
mqo2rq2は材質色をdiffusion/colorに変換します。 また、マッピング/模様はdiffusion/imageに、 マッピング/透明をtrimming/imageに、 マッピング/凹凸をbumpiness/imageにそれぞれ変換します。 不透明度が1未満の時はrefractionindex="1"を出力します。 ただし、後述の材質名によるrefractionindex値の指定があればそちらを優先します。
mqo2rq2では材質名で変換方法を制御します。
凡例: "mat01 (@1.23) [_tG]"
(@〜)の部分はrefractionindexの指定です。この例だとrefractionindex="1.23"となります。
[〜]の部分はtransparency等の変換方法の指定で、括弧内には英数字及び'_'を記入します。
(@〜)や[〜]の中には空白は入れないでください。
mqo2rq2は特殊な名前のオブジェクトを光源に変換します。 各面に割り当てられた材質の色をscale倍した値を光源の色として用います。 材質が割り当てられていない場合には白のscale倍になります。 ちなみに、scaleは省略可能で、その場合は1.0倍とみなします。 また、光源に変換した面はRedqueenの面としては出力しません。
'Point'と'['の間には空白を入れないで下さい。'['以降は空白を入れてもかまいません。 photonは正整数で、scaleは正数です。 scaleを省略する場合は'Point[5000]〜'のような書き方になります。
オブジェクト内の全ての面と辺を点光源に変換します。 光源の位置は各面(辺)の中心です。
"Point"は"Pnt", "Pt"のように省略できます。
blurは正数です。 オブジェクト内の全ての三角形面を平行光源に変換します。
図のような三角形ABC(辺AB > 辺BC > 辺CA)があったとき、変換された平行光源はA→Bの向きを照らします。
省略形: Para, Par, Pr
shadowrayは正整数です。 オブジェクト内の全ての三角形面を球光源に変換します。 球の中心は図で言うと頂点Aになり、半径は辺ABの長さになります。
省略形: Sphe, Sph, Sp
オブジェクト内の全ての面を面光源に変換します。 辺は変換されません。 面の第1頂点をlocation、第2頂点-第1頂点をvectorv、第3頂点-第2頂点をvectoruに変換します。 (四角形だと第4頂点がありますが、面光源変換においては利用しません。)
省略形: Ar
リクエストがあってそれが実現可能なことであれば追加する可能性はあります。 が、基本的に自分で何とかして下さい。
mqo2rq2.cfgは実のところ生のRubyスクリプトです。
だから、mqo2rq2.cfgの記述でmqo2rq2自体の動作の大部分を書き換えることができます(^^;
最悪 exit なんて書き込んでたらmqo2rq2.cfgを読み込んだだけで終わってしまう(笑。