!!!独り言日記 !!ドロネー三角形分割(2009/06/16) 2次元上にて複数の点が与えられた場合に、いい感じに三角形を構築してくれる「ドロネー」の手法を間接的に使うことがあったのでメモ。 カタカナで書くと間抜けなんですが、横文字ではDelaunayと書くようです。 http://ja.wikipedia.org/wiki/%E3%83%89%E3%83%AD%E3%83%8D%E3%83%BC%E5%9B%B3 ソースは以下のページをそのまま参考にしました。 http://www.prefield.com/algorithm/geometry/delaunay.html で、ちょっと勘違いしていた部分が このページの 「norm(p)」という関数。これは引数pがベクトルとしたとき、長さの二乗を求めるものなんですね。 norm(p) = p.x * p.x + p.y * p.y みたいに。 「cross(p1, p2)」は外積で cross(p1, p2) = p1.x * p2.y - p1.y * p2.x double minarg以降の行の「a, b, c」が三角形の頂点インデックスに相当、これを格納してあげると、、ランダムに配置した点を結ぶ三角形が以下のようになりました。 {{ref_image delaunay_01_20090616.png}} {{ref_image delaunay_02_20090616.png}} これってレンダラでも使えそう(フォトンマップとかベイクとか)。 たしか、v-rayあたりでボロノイを使ってたような画像を見たことがあった気がします。 !!グリーンセンター(2009/06/07) 自分にとって新しい土地に来たときは、まずは探検ということでさまよってます。 そして、公園というか植物園を見つけたので入ってみました。 ひさびさの公園写真に履歴を追加です(二年ぶりです)。 http://ft-lab.ne.jp/photo/saitama_green.html 埼玉県川口市の「グリーンセンター」という施設です。結局、家からはかなり遠いんですけど、歩いていけなくはない距離にありました。 温室のビニールハウスもあり、熱帯特有の植物(サボテンとか)もいました。 {{ref_image green_center_20090607.jpg}} もっと北のほうにいけば(さいたま市に入れば)、山とかありそうな気がするので、また探検がてら公園めぐりをしていこうかと。 !!日本ファルコムの音楽(2009/06/06) ドラゴンスレイヤーやソーサリアン、イースシリーズを作っている(作ってた)日本ファルコムの BGMは昔っから好きだったのですが http://www.itmedia.co.jp/news/articles/0906/05/news061.html http://www.falcom.co.jp/music_use/ より、「音楽フリー宣言」というのが!! 演奏とかアレンジMIDIとかをネットで見せるのが公式にOKになったということなのかな? 特に何かするわけじゃないけど、こんな動きはありがたいねぇ。著作権関連のネット利用は過渡期なんだろうなと。 でも、これってKey(AIRとかCLANNADのところ)では昔からしていたことかもと思ったりもしました。 私自身は加入して年一回も利用していないProject EGGではなにげに日本ファルコムの昔のソフトが充実してきてます。ソーサリアンは昔雑誌見ててほしかったなぁ。 http://www.amusement-center.com/project/egg/index.shtml が、時間がないのでできないわけですが(^_^;;。 EGG内ではいつのまにか一部のBGMを聴けるサービスを開始してますね。 http://www.amusement-center.com/project/egg/premium.html なんだか、EGGって知る人ぞ知る「タケル」(ソフトの自動販売機、たぶん今世代の人は知らないと思う)のオンライン版みたいだ、、、。 !!exporter_interfaceとリンク形状(2009/06/01) ShadeプラグインSDKの「exporter_interface」を派生させたクラスより、シーン階層をたどって形状情報をファイルへ出力することができます。 「exporter_interface::do_export」にて出力開始で、後はvirtualの関数がキックされます。 do_export <== エクスポートの開始 start <== シーンをたどる処理を開始 begin <== 形状開始 A set_transformation / clear_transformation / begin_polymeshなど begin <== 形状開始 B set_transformation / clear_transformation / begin_polymeshなど end <== 形状終了 B end <== 形状終了 A finish <== シーンをたどる処理の終了 のような関数が呼ばれることになり、begin〜endが入れ子で呼ばれることでツリー階層の表現がされます。 リンク形状はどうなるのか確認してみると、自動的に入れ子で展開されてますね。 あんまり意識してなかったのですが、そのまま行列計算してやれば出力可能な感じです(ただし、行列は独自スタックを作って計算してあげたほうがいいとは思います)。 せっかくmqoエクスポータを作るので礼儀にならって、と思って「proxy_shape」という形状を展開する仕組みを見てみたのですが、エクスポータでは出番がないかな。 問題は表面材質をどうするか、、拡散反射と透過の1枚だけ持っていくかなぁ。 トリム使ってる場合は、メタセコ流で行くとRGBAのアルファに反映させるほうが便利そうかも・・・。 このあたりはいろいろ制約をつけないといけなくなりそうです。 mqoインポータとの整合性も取らないといけないですね。