独り言日記
2003/05/31 update.

先人の知恵を借りてみる
更新日時 2003/05/31
内容 レンダラのアンチエイリアス処理を再度見直しました。
太洋さんの案を採用してみて、レンダリング画像分のバッファに 一度(アンチエイリアスなしの)レンダリングを蓄えて、 その後に再帰的に1ピクセルをたどるようにしてます。
で、ピクセル間の再帰処理判定用の彩度(S)と明度(V)の差分のしきい値を0.1にしてみました。
たしかに、色相(H)での判定・Z・αでの判定もいりますねぇ。 (今は色数が少ないサンプルなので問題はないのですけど)
これも加えるつもりです。

http://y-yutaka.cool.ne.jp/diary/render_0531.png

アンチエイリアス 2x2で37秒、
アンチエイリアス 4x4で48秒、
アンチエイリアス 8x8で67秒、
でした。
サンプル画像において、後ろの壁の右上のエッジ部を見ると、サンプリングサイズによる違いが分かるかと思います。
アンチエイリアス処理は、1ピクセルを4等分して再帰的に色を詰めていく方向に変更。
偉大なり先人の知恵。品質も速度もアップしました。
やっぱ、私が一日悩むよりも過去の研究者が編み出した方法を採用するほうがアルゴリズムとしても美しいですわ(笑)

しかし、セレクティブレイトレースの前処理とピクセルのずれが起こってる状態だったので 普通のレイトレーサーになってしまってます(笑)。 このあたり、もっと詰めなければ。
アルゴリズムについては明日書きますねー。ねむ〜〜っ。
アンチエイリアス処理を高速にするには?
更新日時 2003/05/30
内容 仕事そっちのけでレンダラいじっているわけですが(^_^;;(ま、まだ余裕あるし・・いいよね)、 アンチエイリアス処理の高速化についてアルゴリズムを考えてみました。
あ、ちなみに細かい部分をちょこちょこいじった結果、前日よりもさらに4秒ほど速度アップしました (ループのネストが深いため、深い部分の最適化をするだけで速度アップに貢献できるんす)。
「アンチエイリアス」は、画像を拡大したときのガクガクとした段差(ジャギー)を緩和するための方法です。 1ピクセルでは表現できない色(1ピクセルよりも小さい領域内での色)をそれらしく見せるための手法、と言った方がいいかもしれません。
以下のようなやり方があります。

  • オーバーサンプリング
    画像自体を2x2などに拡大してレンダリングしておき、最終的にはバイリニアで縮小(2x2ピクセルの平均を取って1ピクセルとする)してジャギーを緩和する。
    欠点として、必要のないピクセルのレイ計算をしないといけないため、 2x2の場合は単純計算で4倍のレンダリング時間がかかってしまう。
    また、メモリもレンダリング画像×数倍消費してしまう。

  • ほかしフィルタをかける
    カレントのピクセルと周囲(上下左右)のピクセルの色の平均を取り、カレントのピクセル色とする。
    高速ではあるが、全体にぼかしがかかった感じになるうえ、正確にはアンチエイリアス処理をしたとは言えない(^_^;;。

で、以下の画像が今回実装したアンチエイリアス処理のサンプル画像です(セレクティブレイトレースしてます)。

http://y-yutaka.cool.ne.jp/diary/render_0530.png

上の画像が、アンチエイリアスなしで34秒・ありで46秒、
下の画像が、アンチエイリアスなしで26秒・ありで40秒です。

極端な(数倍とか)速度低下は起こってないのが分かるかと思います。
また、大したメモリ消費も発生しません。 で、これらは上記の方法のどちらも使ってないです。
アルゴリズムとしては、 1ライン分を一度(アンチエイリアスなしで)レンダリングします。
この状態で、1つ前のラインとカレントラインの各ピクセルの色情報を バッファに蓄えます。つまりは、2ライン分の色情報を蓄えるメモリだけを 確保してやるといいことになります。
再びカレントのラインを走査し、 カレントのピクセルと真上・左・右のピクセルをある条件で比較し、 条件を満たした場合に、カレントのピクセル内の周囲4点から再度レイを飛ばして各色を求め、 カレントのピクセル色との平均を最終的なピクセル色としてます。
条件を満たさない場合は、そのままスキップします(バッファに蓄えられたカレントピクセルの色をそのまま返す)。
これにより、結果的には2x2のオーバーサンプリングを行ったのと近い結果を得ることができます。
で、「比較条件」なのですが、 簡潔に言うと「カレントと周囲の色(上・左・右)との差が大きいかどうか」となります。
ここでは、RGBをHSVに変換して、カレントのピクセルと上・左・右の それぞれのS(彩度)V(明度)の差が0.2以上のものがあれば、再度周囲4点をレイトレース、としています。
0.2というのを0.1としてやればさらに密になります。が、あまり小さくすると時間がかかります。

すでに論文などにはあるかもですが、 メモリも描画速度も無駄にしたくないってことで考えてみたのですがどうでしょう?
レイトレだからできる、って感じのアルゴリズムではありますね。
さらに速度アップ
更新日時 2003/05/29
内容 さらにレンダラを速度アップしてみました。
見にくくてすみませんが、サムネイルオンリーです(^_^;;。


Athlon 1100MHz/Mem512MBで、640*480のレンダリングをしています。
サンプルは2つで、左が19215ポリゴン、右が9510ポリゴンのシーンです。
レイ追跡回数(反射・透過共に)は、最大10回です。

左上:反射なし・影のみの状態で、18秒→11.7秒、
左下:反射+影で、43秒→31.9秒、
右上:反射なし・影のみの状態で、26.5秒→22.7秒、
右下:反射+影で、41.1秒→37.1秒、
に改善できました。

約1.1から1.5倍くらいの速度アップです。ばらつきがあるのは、ある局所的な処理を高速化してるからなんです。
試しに、影も反射もまったくない状態でレンダリングすると、両方のサンプル共に2.6秒(改善前と比べると約3倍速)ほどでレンダリングが完了します。
・・・とここまで書くと、薄々技術的なことで気づかれる方もおられるかもしれません。
レイトレーシングでは、視点から目の前にある仮想的なスクリーンの各ピクセルに対し、個々にレイを飛ばし、 物体にぶつかると反射してさらにレイをたどる、という再帰的な処理を繰り返します。
このときの「1次レイ」をレイトレーシングではなく、普通のスキャンラインで行っても処理としては問題ないはずです。 そうすることで、レイをたどるときの1回目は、あるポリゴンとレイとの当たり判定を一発で済ませることができます (作成したスキャンラインのテーブルより、あるピクセルのオブジェクト番号・ポリゴン番号を引っぱってくるだけ)。
つまり、スキャンライン+レイトレーシングのハイブリッドである「セレクティブレイトレーシング」を実装してみたんですね。
つか、「セレクティブレイトレーシング」って言葉自体があっているのかは自信なしです(^_^;;。
CARRARAは、「ハイブリッドレイトレーサー」って言ってますね。
なにせ、ほとんどの物体は反射しないと考えると、この方法はかなり有効だと思います。
ただ、欠点としてはノーマルのレイトレースに比べると(アンチエイリアス処理を行わない場合)粗い、ってことかな。
ポリゴン同士の境界部が若干揺れてます。浮動小数点の誤差の関係でしょうかね。
しかし、物体数・ポリゴン数が増えれば増えるほど効果絶大です。
これは、LUXORを見れば分かりますよね。

後、影をもうちょっと高速化できないかなぁとか思ったりしますが、 私のレベルでは上記くらいの速度が今のところ限界っぽいです(^_^;;。
Shadeと比べて見ると、勝てるシーンもあれば負けるシーンもありますねぇ・・
これは、空間分割法の違いによって起こる差かもしれません。
(Shadeは、おそらくバウンディングボックスで物体を入れ子にしていると思うのですが、 こちらでは、格子状に空間を分割してます。このあたりの最適化の説明は後ほど)
さて〜、レイトレの場合(周囲の色の差分が大きければ再帰的にピクセル内を再走査→平均を求めることで、1ピクセル以下の色を再現)と違って、 セレクティブレイトレースの場合のアンチエイリアスの処理をどうしよう・・・オーバーサンプリングだと無駄に時間がかかってしまうし・・
マイ・レンダラ
更新日時 2003/05/27
内容

オリジナルレンダラでのレンダリング画像をちょびっと公開です。
19215ポリゴンのシーンを640*480ピクセルでレンダリングをしています(光源として平行光源と点光源を配置)。
まだ、影がおかしかったりノイズがのったりしてますねぇ・・
速度を求めるためにいろいろはしょったり、誤差をなくすために小数をわざと丸めたりしてますので、 そこらへんのしわ寄せでしょうか。
実は、レンダラのネーミングも搭載機能もすでに決まってはいるのですが、わけあって伏せております。
Athlon 1100MHz/Mem 512MBのWindows 2000環境での結果です。
ところで、半透明を使った場合に著しく速度低下しますね。 このあたり、いろいろ試してみたのですがいまいち目立った効果がなかったです。
レイトレの肝は、「どれだけレイとの交点計算を省くか」でありますが、 このあたりでまだまだ未開拓の道は残っているような気がしてます。
レイトレの基礎や高速化技法については、また後日日記の肥やしとしていこうかと(^_^)。
私は、正確性よりもどちらかというと「速度優先・フェイク上等」ですので(ならレイトレは使うなという話ではありますが(^_^;;)、 ある程度の妥協のある高速レンダラができればなぁ、と思ってます。
これについては、まったりお待ちくださいませ。
(低機能レンダラは誰も欲しがらないでしょうけど、私の勉強も兼ねてですので(笑))
・・・何かいろいろ手をつけてますが(覚えのあるやつだけで、Java/Flash/3DCG)、 どれも手つかずにはならないようには進めていきたいもんです。
Flashでミニゲーを作ってみる
更新日時 2003/05/25
内容 なんてことはないブロック崩しですが(しかもまだ途中)、作ってみました。
なんとなく思いつきで作ってみたのですが、これを元にFlashの解説なぞやってみようかな、とか思ったりもしてます。
その前に、一応の形として完成させとかないとダメですね。

http://y-yutaka.cool.ne.jp/flash/block.html

※ゲームとしては限りなく中途半端です。
効果音は「http://utm-game-web.hp.infoseek.co.jp/」のフリー効果音を使わせていただきました。
ゲームオーバーにはなりません。1つのステージを延々とReplayです。

Flash MX購入&変なメール
更新日時 2003/05/24
内容 そろそろFlash体験版の試用期限が切れるため、重い腰を上げて 製品版のFlash MXを購入してきました。
ということで、堂々とFlashユーザーとしていろいろやっていこうかと。
その前に、いろいろ先行投資したものの元を取らないといけないのですが・・・(^_^;;

ソフトウェアとしていろんなことができる(=幅広い表現能力がある)と特になのですが、どうしてもプログラムが必要になってきます。 Flashはまさにそうなのですが、「デザイン能力もいるしプログラム能力もいる」ということで デザインを専門にする方に聞くと、「ActionScript(Flashのプログラム言語)」まではちょっと・・・ となるそうですね。見えない壁があるとのこと。
ということで、仕事の場合はデザイナとプログラマが連携を密に取れるとなると、 幅が抜群に広がるのではないかなぁ、とかいろいろ妄想します。
幸い、今の仕事環境がそんな感じになってきつつあるため、「コラボレーション」というほど大したことではないですが 協力できればな、と思ってます。

ところで、関係ないですが、 最近「絵画のオークション」のメールが毎日決まった時間にきます。
しかし、海外からの英文メールですので読めないです(^_^;;。
興味あるか、というとありませんので放置ですけどね〜〜。
うちのページと絵画がどうつながったのか不思議です(^_^;;
「http://list.artauction.net/」につないでほしいらしいです。 ググってみると、こりゃスパムですね。

別件で電波系のメールも来ました(笑)。
日本語がおかしい上に、自分の名前や住所・ホームページのURLまで載せていた 赤の他人なのですが・・・
まず・・・CCで送信先のアドレスをすべて公開するのはやめれ(^_^;;。
そして、同じ内容のを連続投稿するのも止めていただきたいです。
っていうか、誰(^_^;;?
内容があまりにも支離滅裂ですので覚えてますよ。数年前にも たしかに同じ人から同様のメールをいただいてました。
注意のメールを返すのは ちと危険な香りがしますので(ホームページを見ると、完全にイっちゃってる感じが(^_^;; )、 とてもでないですがレスはできそうにないのですが・・・
これも放置がいいですかねぇ。ちなみに、私とはまったく関係のない「自己紹介?」の内容です。
この手の対処法を知っておられる方がいれば教えてくださいませ。 あまりしつこければ、メール内容とホームページのURL暴露も考えようと思ってます。

カマキリ watch
更新日時 2003/05/21
内容 casTYの「ひかり荘」にて、 ゲストルーム(イベントがあるときは202号室に移動)で カマキリの卵がライブ映像されてます。
私も小学生時代に虫を育てるのが好きだったので、カマキリも当然育てたことがあるのですが 孵化時はワサワサしてちと怖いですよね(^_^;;。
きっちりと虫かごに入れて、さらに細かい網のネットで覆ってるんでしょうか・・
幼なじみの家では、家中カマキリだらけになってましたが(笑)
5/21現在を見る限りでは、今晩から明日の晩にかけて孵化しそうな予感がします。ということで、 最近は暇があればひかり荘見てます。
なかなか見るのを止めるタイミングが掴めない・・・ハマってます(笑)。

ちなみに私が人に自慢できることとして「カタツムリを育てて産卵まで導いたことがある」、 「アゲハチョウは、職人のように卵から蝶になるまで育て上げることができる」、 というのがあります(笑)。何の自慢にもならないですが。
で、今の子達は昆虫の飼育とかやるのかなぁ、と思ってしまいました。
カマキリが何を主食とするのか知らない世代もいるのは、ちとジェネレーションギャップを感じましたね(^_^;;
Flashでサーバーにアクセス
更新日時 2003/05/15
内容 Flashからサーバー上のCGIにアクセスすることが可能なのですが、それでテスト用のミニ掲示板を作ってみました。

http://y-yutaka.cool.ne.jp/flash/flash_bbs.html

この例は、クライアント側のFlashよりサーバーのCGI(Perlプログラム)を呼び出している例です。
・・・と遊んでみて、Flashの制限(というよりもブラウザ上のプラグインの制限)として「ウィンドウサイズ(Flashで管理できる領域)が固定」ってのが上げられますね。
JavaAppletもそうなのですが、この場合は縦方向に可変長なスクロールをする掲示板が作れないです。
Flash中に仮想的なウィンドウを作ってその中でスクロールなら、できるのかなと思うのですが、 Flashのムービークリップ内に複数のムービークリップを持たせてScrollPaneで実装しても なぜか1つのムービークリップしか表示できず断念。
BBSのスレッドごとをFlashにして、複数回CGIにアクセスすればスクロールもできるFlashを使った掲示板ができそうなのですが・・・ 負荷が大きそうです。

Flashを使うと何でもかんでもできるって幻想を抱いていたわけですが、 固定の矩形内ではいろいろできるよ、ってそんな感じですね。
UDに参加してみる
更新日時 2003/05/13
内容 今更ながら、UDに参加してみました。
簡単に言うと、白血病の治療薬を作るために膨大な量の解析を行うプロジェクトです。
そのためのクライアントソフトが「UD Agent」になります(Windows版のみ)。
普通に解析すると2,400万時間(2740年)くらいくらいかかるため、とてもでないけど追いつかない、ということで グリッド技術により全世界のコンピュータに計算してもらおう、という世界的なプロジェクトです。
分散(グリッド)の世界がかいま見れるというのもありますが、その解析に日本も貢献しているというのを最近知ったので 意気を感じて試してみました。
相当な時間がかかる、という理由は、 何億という分子を総当たりで調べていき「ぴったり合うカギ(これが薬の元となる情報?)」を探すという作業を行っているからだそうです。



処理中の画面を眺めてみたのですが・・・化学は苦手でしたのでよく分かってないです(^_^;; (Smallpox=天然痘、かな)
で、このプロジェクトはチームに所属することもでき、今のところ世界中で一番活躍しているチームが「Team2ch」、 おなじみの2ちゃんねるの有志メンバーだったりしてます。
で、私も「Team2ch」に属させてもらいました。
闇の部分ばかりが取り上げられる2ちゃんねるですが、その他にもいろいろ貢献してますよね。

以下のページがTeam2chのポータルサイトとしてわかりやすかったです。
「白血病解析プロジェクト@Team2ch」

将来、ガンなどの(現状は)不治といわれる病も治るようになればいいなぁ。

・・・・で、たった今、1つの処理が終わって結果がサーバーに送信されたようなのですが、 開始から9時間経過・・・時間がかかりますねぇ。
まさに「ちりも積もれば山となる」です。
Flash修行中
更新日時 2003/05/10
内容 今後いろいろ使う可能性が出てきたのでFlash勉強中です(体験版で)。
後半月ほどで体験版期限が切れるため、それまでには一通りマスターせねば。
垂れ流しのムービーを作る場合は、さほど言語にタッチする必要がないのですが、 ボタン押して分岐するとか、凝ったWebページやFlashゲームなどを作ろうとすると、 Cライクなスクリプト言語にタッチする必要があります。
このあたりは、プログラム好きな私としては楽しいのですが、 デザイン専門の方は苦労されるみたいですね。
でも、Cライクといってもポインタとかはない「スクリプト」ですので覚えやすいかも。
表現手段としては、(mpegやAVIなどの)ムービー作成よりもラクチンで、 かつ考えていることが実現しやすいのでわ、という気がしてます。
今度収入が入ったときにも購入しようかな(仕事でも使うでしょうけど、趣味での作品作りで使うのもいいですし)。 勉強・・・ってよりも、触っていると楽しいです(笑)。
なにやら最近はいろいろなものに手を出していますが・・・公私ともにやること絞らないとダメですね(^_^;;。
いろいろと散漫としてますが、あれもしたいしこれもしたい・・・逆5月病状態です(^_^;;。
疑似OS
更新日時 2003/05/08
内容 最近はネズミもめっきり姿を見せなくなったため、ネズミ奮闘記は一時中断。

さて、現在は主に3Dツールを実現するための「OS」と「アプリケーション」の差異を吸収するライブラリを作成してます。
C-Partsを拡張し、疑似OSのようにしてその上に3Dツールをのせようかなぁと考えてます。



MDIのように見えますが、C-Partsの管理するウィンドウ内が1つのOSのような感じになります。 というか、そのようにしたいです。
これによりイベントと描画部分を「C-Parts」によりラップしてますので、 WindowsであろうがOS XであろうがLinuxであろうが、プログラムは同じソースを流用可能になります。
・・ですが、描画処理でかなり低レベル部分にタッチするため、半透明処理などを行うときに速度がネックになりそうな予感です。
このあたりは、ウィンドウをOpenGLやDirectXのハードウェアで管理し、3Dアクセラの半透明機能を利用するほうが速度をかせげそうですね。
Wings3Dに影響を受けまくりの設計ですが(笑)。これが、OS依存の壁を突破するには一番いい構成かもしれません(OS→疑似OS→アプリケーション)。
将来は、独自のコンパイラとVMを持って疑似OS上でアプリを管理、とかできればいいなぁ・・
ネズミ 2日目
更新日時 2003/05/05
内容 「粘着シート」式のネズミ取りを買ってきたのでセッティング。真ん中に米粒を配置してみました。
1日経過しましたが、残念ながらひっかかりませんでした。けど、粘着シートに 明らかにネズミの通った後が・・・。しかも、シート自体がずれている・・
どうやら逃げられたようですね(^_^;;
あの粘着力でも脱出しましたか・・おそるべし・・
数週間試してみて、ダメなら芳香剤のような「嫌いな匂い攻撃」でアタックしようかと思います。 ということで、しばらくは戦闘態勢が続きそうです。
私は、どっちかというとゴキブリのほうが怖いので、ネズミは若干楽しんでバトルできればいいかな、 と思ってます(笑)。 ダニを出さない・柱をけずらない・目の前に姿を見せない・糞を落とさない・病気の感染源にならない、ってことさえ 守ってくれれば、棲み分けするのになぁ・・・
こんなときこそネコ飼いたいっすね(ネズミは、どうもネコに匂いを嫌うらしい)。
うちのアパートはペット禁止なので残念、なのですけど。
ネズミ
更新日時 2003/05/04
内容 アパート住みだしてから、初めて昼間にかけ走っていくネズミの後ろ姿をリアルで見ました、家の中で。 夜は走り回っている音が聞こえたり鳴いていたり、といったのはしょっちゅうだったのですが。
そうか、それでアパート入居時になにげに殺鼠剤が置いてあったのか・・。
家の電気系統がかじられて仕事に支障をきたしたらたまったもんじゃないですので、 ネズミ撲滅に向けてがんばってみようかと思います。で調査。
ネズミ駆除方法としては、「粘着マット」「殺鼠剤(毒餌)」「超音波発生器」などがあるみたいですが、 超音波はネズミが慣れてしまうし、そもそも効き目がないらしいです。
毒餌の場合は、遅延でネズミを逝かせますので後始末が大変そう。巣を見つけることができなければ意味なしですしね。
粘着マットがよいかなぁ、と思ってますが賢いネズミ(学習能力のあるクマネズミなど)はそれを避ける知恵を持っているみたいです。 なにせ、「死体」が転がるわけですからあまり気持ちのいいものでもないですね(^_^;;
家に寄りつかせないようにできないかなぁ、ということで生活雑貨で何があるのか調べてみようと思ってます。 場合によっては、業者さんに頼むのもいいかも。

ネズミの種類としては、主に以下の3種類いるようです。

  • ドブネズミ
    体長22-26cm。
    寒さに強い。まるっこい。他の種類よりも学習能力が劣る。
    どう猛。なんでも食べる。

  • クマネズミ
    体長15-23cm。
    見た目はスマート。俊敏で学習能力が高い。
    臆病。主に植物性のものを好む。

  • ハツカネズミ
    体長6-10cm。
    まるっこい。
    活動範囲はあまり広くない。

ネズミは繁殖能力が高く、半月ほどで巣立ちを迎えるそうです。
繁殖は1ヶ月半から2ヶ月ほどで、環境が良ければ文字通り「ねずみ算」式で増加・・・。
なお、夜行性のため夜の活動が主。
当たり前ですが、ネズミの餌になるもの(食材・生ゴミなど)は片づけて(ビニールでは簡単に破いてしまいますので効果なし) 空腹にさせて「粘着シート」などの罠にかかりやすくすることが常とうとのこと。

というわけで、しばらくはネズミ取り日記が続くかと思います(^_^;;。
でも、どこから進入してるんだろ・・・特に壁の隙間などの穴は空いてなかったのですが・・・
ただ、唯一の利点として「ゴキブリ」を食ってくれるようですので、それだけは感謝(笑)。
ゴールデンウィーク
更新日時 2003/05/03
内容 GW気分だけでも味わおうと、ひさびさにふらふらっと秋葉原に行ってきました。今年入ってはじめてです。
LAOXデジタル館がなくなってますね。あと、スモークなんとかという休憩所(?)が出来てました。 相変わらず、違和感なくコスプレイヤーがいるのは流石です(^_^;;(ビラ配りの人でなくて、当たり前のように歩いていたり)
つか、普通のハデ目の私服だったんでしょうか・・・メイドさんでしたが(元ネタがわかんないです(笑))。
最近は、パーツあさりとかはあまり興味がなくなっているので値段だけ確認して、 いろいろ店を見て回ってました。
LAOXのASOBITCITYという巨大おもちゃ屋があるのですが、飽きないですね。 懐かしの鉄道模型やプラモが1フロアにずらっと並んでいて感動です。ガンプラは私の子供時代も人気がありましたが、今でも人気あるんですね。 むしろ、あの時代で止まっているような気が・・・(^_^;;
「ひだまりの民」ないやろかと思って探したけどなかったです、残念。これは渋谷ロフトで探すことにします。
で、「ハリーポッターと秘密の部屋」のDVDを購入。はりぽたシリーズはハズレなしって感じで楽しめました。
・・・と、今日一日はひさびさにディスプレイとにらめっこしない日を過ごしました。
3DCG
更新日時 2003/05/02
内容 先日、太洋さん「Wings3D」という3Dモデラーを 見せてもらいました。OS Xで結構軽快(G3でもさくさくなレベル)に動作してました。
SDL(独自描画を行うGUIライブラリです。拡張でOpenGL機能を追加できます。OS Xでは、X11経由)使ってるんですねぇ。 なので、AquaなどのOS特有のGUIウィジットは一切未使用です。
Wings3Dは、開発者の方がお金ないので「ないものは作れ」の精神で作っちゃった、という経緯みたいです。
プログラマの基本ですね(笑)。

・・・もうそろそろ解禁にしてもいいかな、5月にもなりましたし自分を奮い立たせるためにリークします。
実は私も今年始めから ほそぼそと3Dツールを作ってまして「対Shade」じゃないですが、 モデリングからレンダリングまでできるソフトウェアを構築中だったりします。
Windows/Mac OS X/Linuxでの対応を行うつもりです。
私が作品を作りたいためだけの「オレサマツール」です(^_^;;
なので、ターゲット層としては初心者用で必要最低限の機能しか実装しない予定(が、プラグインで拡張できるようにはするつもり)。
今後、私の3Dの技術はこちらに集約していこうかなぁ、と思っています。
で、悩んでいた部分で「マルチプラットフォームにおけるウィジットの扱い」です。
一番プラットフォーム依存を吸収できる手段としては「Java」を使うことだったのですが、 「速度」と「メモリ食い」の問題がどうも引っかかります。
速度の問題は、SWTを使用するとかなり緩和ができるのですが、ハードウェア(OpenGL/DirectX)にアクセスする部分が 一元化しにくいです。(SWTでは、OpenGLにアクセスする拡張機能もあるのですが、OS Xでは未対応だったり)
なによりも、OS XのAquaを経由する段階で重すぎです。
OS Xでは、普通のC/C++ベースのCarbonアプリでも、Aquaを使わないほうが軽快感がかせげる感じがします(体感的にですが)。
変わってC/C++で開発すると、速度の面ではベターなのですが、今度勃発する問題としてウィジットをどう処理する、というのが出てきます。
GTKなどのすでにあるGUIライブラリを使用した場合は、ライブラリ(so)の競合問題・バージョンアップの面倒くささがあります。
このあたりで悩んだのですが、最終的には「独自描画のGUIライブラリを作っちゃえ」ということに落ち着きました。
こちらは、C-Partsを持ってますので、それを一からのアプリ設計ができるレベルまで大幅に練り直し・拡張していこうと思います。
もう、OS XやWindows XPで他とLook&Feelが違おうがどうでもいいです(笑)。 むしろ、そんなところで振り回されたくはないというか(なら、マルチプラットフォームはあきらめろよ、と言われそうですがこれはやっておきたいですので)。
もちろん、スキン機能をつけてLook&Feelを自由にカスタマイズできるようにはする予定です。
今のところ開発進行度2%くらいなのですが、レンダラ(レイトレース)のみ形になってます。 レンダリング速度としては、Shadeと同じくらい(ちょっと勝ってる・・かも)は出ているかな。もっと速度アップできる秘策もありますので 「スピード命」で進めていこうかと思います。ボリューム(ライトなど)もレンダラに組み込んでしまう予定っす。
将来的にはパーティクル・ファーも実装予定ではありますが、レンダラに機能として組み込むかどうかはまだ未定。
なにせ、いろいろ構想を練っているときが一番楽しいですね。
ほそぼそではありますが、着実に3D方面も進めていってます。