2014/05/17(土) [n年前の日記]
#1 [dxruby][cg_tools] swfmillの出力したxmlをRubyで読んで試していたり
swfmill で、swf → xml 変換したモノを、Ruby + Nokogiri で読み込んで色々試しているところ。
とりあえず、DXRuby で、位置、拡大縮小率、不透明度を再現できたけど。回転が分からない…。xmlには、skewX、skewYという属性が書かれているのだけど、どういう意味を持った値なのかがさっぱり分からず。
例えば、90度回転した時のxmlが以下で。
とりあえず、swfで出力された際、制御点の位置情報は、表示位置その他に反映された状態で値が出てくるあたりは助かった。これなら、表示側で一々計算しなくて済む。マジ助かる。
とりあえず、DXRuby で、位置、拡大縮小率、不透明度を再現できたけど。回転が分からない…。xmlには、skewX、skewYという属性が書かれているのだけど、どういう意味を持った値なのかがさっぱり分からず。
例えば、90度回転した時のxmlが以下で。
<PlaceObject2 replace="0" depth="16383" objectID="2"> <transform> <Transform scaleX="0.0000000000000000" scaleY="0.0000000000000000" skewX="1.000000000000000" skewY="-1.000000000000000" transX="8980" transY="1560"/> </transform> <colorTransform> <ColorTransform2/> </colorTransform> </PlaceObject2>1度回転した時のxmlが以下。
<PlaceObject2 replace="1" depth="16383"> <transform> <Transform scaleX="0.9998474121093750" scaleY="0.9998474121093750" skewX="0.01745605468750000" skewY="-0.01745605468750000" transX="8980" transY="1560"/> </transform> </PlaceObject2>scaleX と scaleY も指定されてるあたり、両方組み合わせて回転してるのかなという気もするけど…。
とりあえず、swfで出力された際、制御点の位置情報は、表示位置その他に反映された状態で値が出てくるあたりは助かった。これなら、表示側で一々計算しなくて済む。マジ助かる。
◎ HguFlashの出力するpngのガンマ値について。 :
DXRuby 上で HugFlash が出力した png を読み込んで表示させたら画像が白っぽくなってしまって。なんでだろうと。
ガンマ値の問題だった。元画像は Gamma: 0.454545 = 1/2.2 だけど、HugFlash が出力した png は Gamma: 1 だった。
DXRuby の画像ロードは、png のガンマ値も反映してくれるのか…。ありがたいけど困る…。png の gAMAチャンクを削除するツールを使わないといかんなと。
ちなみに、ガンマ値を調べる作業には、ImageMagick の identify を使用。
1ファイルずつpngを開いてgAMAチャンクを削除しても構わないなら、 _TweakPNG なるツールが使えるらしい。でも、複数のpngに対して一括して処理したいところ。
_PNGGauntlet という、pngを最適化してファイルサイズを小さくできるツールを使えば、複数のpngに対し、一括してgAMAチャンク削除もできる模様。
と、ここまで書いたところで知ったのだけど。HugFlash にそもそもガンマ値を指定する設定項目があった…。そこが「1」になってたから、ガンマ値が1になって出力されたらしい。「1/2.2」を選んでおけば良かったのか…。
ガンマ値の問題だった。元画像は Gamma: 0.454545 = 1/2.2 だけど、HugFlash が出力した png は Gamma: 1 だった。
DXRuby の画像ロードは、png のガンマ値も反映してくれるのか…。ありがたいけど困る…。png の gAMAチャンクを削除するツールを使わないといかんなと。
ちなみに、ガンマ値を調べる作業には、ImageMagick の identify を使用。
identify -verbose hoge.png
1ファイルずつpngを開いてgAMAチャンクを削除しても構わないなら、 _TweakPNG なるツールが使えるらしい。でも、複数のpngに対して一括して処理したいところ。
_PNGGauntlet という、pngを最適化してファイルサイズを小さくできるツールを使えば、複数のpngに対し、一括してgAMAチャンク削除もできる模様。
と、ここまで書いたところで知ったのだけど。HugFlash にそもそもガンマ値を指定する設定項目があった…。そこが「1」になってたから、ガンマ値が1になって出力されたらしい。「1/2.2」を選んでおけば良かったのか…。
[ ツッコむ ]
以上、1 日分です。