mieki256's diary



2014/05/27(火) [n年前の日記]

#1 [dxruby][cg_tools] 虎を描画して実験中

_File:Ghostscript Tiger.svg - Wikimedia Commons を swf に変換して、DXRuby上で描画して確認中。

svg から swf への変換は、 _svg2pdr と、 _ParaDraw を利用。
  1. svg2pdr を使って、.svg → .pdr (ParaDraw形式) に変換。
  2. .pdr を ParaDraw で開いて、修正を加えたり、swf で保存したり。
  3. あるいは、.pdr を Suzuka にアイテムとして登録して、swf で書き出したり。

さすがに虎は重い…。Imageに描画し終わるまで数秒かかる。これでは絶対に、毎フレーム、ベクターデータを再描画なんて無理だなと。一旦 Image に描画したら、その後はずっとその Image を使い続ける、みたいな書き方をしないと。ソレに比べると、Flash Player の処理速度はスゴイ。虎ですら一瞬で表示されるわけで。

参考ページをメモ。 :

凹多角形の塗りつぶしは、 _多角形塗りつぶし(1) を参考に、というかそのまま Ruby で書き直して試していたり。ところどころ描画がおかしくなって悩んだけど、こちらから渡す頂点配列にそもそも問題があったようで、そこのバグを取ったら、まともな結果を出してくれるようになってきた。

直線描画と、多角形塗りつぶしのエッジ部分がずれていたので、計算誤差でもあるのかなと。 _DDAによる線・円の描画3 を参考に、1ドットずつDDAで直線描画するメソッドも書いてみたり。しかし、結果は変わらず。ちなみに、件のページで紹介されてるDDAのソレのサンプルは、水平線か垂直線の場合に変な線になりそうな気がする。たぶん。

線幅を持った直線描画は、 _アンチエイリアス付きの自由線描画(1) を参考にさせてもらいました。しかし、さすがに Ruby では処理が遅く、線を一本描くだけでも十数フレームかかってる感じ。1ドット描くたびに64回ループ回してるから仕方ないのだけど。アンチエイリアス描画の実現方法については、もっと調べてみないといかんなと…。

二次ベジェ曲線は、 _新・C言語 〜ゲームプログラミングの館〜 [DXライブラリ] に書かれてた式を参考にして、最後は全部直線データとして吐き出すようにしてみたり。ただ、適切な分割数をどうやって求めるか…。結局、分割数は固定にしたまま試しているところ。

以上です。

過去ログ表示

Prev - 2014/05 - Next
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31

カテゴリで表示

検索機能は Namazu for hns で提供されています。(詳細指定/ヘルプ


注意: 現在使用の日記自動生成システムは Version 2.19.6 です。
公開されている日記自動生成システムは Version 2.19.5 です。

Powered by hns-2.19.6, HyperNikkiSystem Project