2014年3月25日火曜日

ImageMagick : 画像の特定の色の変更


 

久しぶりにImageMagickによる便利ネタ。

特定の色を他の色に変更したい場合。 ケースとしては単色の濃淡で作られたアイコンに限定する。FaceBookとかTwitterみたいな。白と青二色のアイコンみたいなのにも有効。

こうしたアイコンはたいていまとまった数があるのでluaかpythonかbashかまあなんでもいいので、バッチでも組んで一括で変換したい。

さて、下記は検索で見つけた例。

convert -fill #00FF00 -opacity 0xFF0000 a.png b.png

のように、すると緑の部分が、赤くなるよということだが。
これだと通常画像にはアンチエイリアスがかかってるのでうまくいかない。
(昔風の1色で構成されたドット絵なら話は別だが…)

でそれを解消するために-fuzz 50%とかかけると、エッジがぎざぎざになったり、画像が膨らんだりしてしまってさらに泥沼になる。というわけで、convert -fillの方針は大抵の場合よくない。

上記のような問題を回避するためには、以下のように、RGBチャネルのうち一枚を切り出して、一度グレイスケールにしたのち、黒い部分をlevel-colorsで変更したい色にするといい。

下記の例の場合#253578を赤(#FF0000)に変更している。

convert a.png -background #253578 -alpha background -alpha off -channel B -separate +channel -alpha on bw.png

convert bw.png +level-colors #ff0000, b.png

綺麗に濃淡が変換されるわけではないので注意。RGBチャネルの一枚を切り出しているので、色が薄いなと思ったら -channel Bとなってる個所を-channel Gとかしてあげると色が濃くなる。
他にはグレースケールの時点で明度をいじるとかすればよくなるかも。



2014年2月17日月曜日

Unityの問題点という題名の愚痴

多分問題点なんてなくて、とてもいまリソースが集まっていて旬で
さくさく3D使ったインタラクティブなアプリが作れる、最高の開発環境に違いないのだ。

でも金がなくて使えないので、悔し紛れにUnityを使わない理由を書く。

①払う金額で利用できる技術が差別される
  Unity PROでないとLODもAudio FilterもStencil Bufferもない
②Unity用のC#とかJavaScriptとか覚えても世の中が飽きた後職に困る
③Unityテクノロジーズに囲い込まれるうえクローズドソースだ
④結局コンパイル言語なのでスクリプトベースのものより開発ループを回すのに
  時間がかかる。LuaとかJava scriptとか使おうよ。
⑤それなりに広い知識が要求され難しいうえに、
  それで育った人間の知識は中途半端に潰しの利かないものになる。
⑥そも3Dまではいらない事例のが身の回りに多い。

いつかUnityがなくなるなんてことはなかなかないと思う。
納得いかないのは①だ。端末に備わってる機能を使うのに金余計に払うとか馬鹿らしい。

スマホ開発に関してもOSの更新に対して即応性はない。一時期マルチ開発でTitaniumの採用事例があったが、
広告をいれるのにコストが余計にかかるせいで、標準的な仕様で作り直してるなんて事例もある。
(Titaniumについては、ぶっちゃけ「分かる人があんまりいないので」避けたほうが無難だ。
 やってみたけどTitanium用のプラグイン開発なんてCOMプログラム思い出すくらい手間)

いやTitaniumなんて、わざわざ出さなくても、Unityプロジェクトの破綻事例はいくつか目にしてる。
体制を整えて乗り込まないと、危険というのは事実っぽい。

①Unityを作れば3Dゲームが簡単に⇒3D以外のところとかUnity固有の問題、ローカライズの問題にぶちあたり、プロジェクトが盛大に座礁。
②Unityをつかってゲーム作りました⇒開発者がいなくなってコンパイルできない
③とにかくUnity(Unreal Engineでも可)を使える人材が欲しい⇒いない

Unityを使うことで得られるのはUnity社の知見でありUnity社の知見を理解できて使いこなせる人がいないとまあどうにもならない。

もしくは、頭のいい根性のある子に、時間とUnityを与えて好きに作らせるとかですね。

2014年2月14日金曜日

cocos2d-x 2.2.1とかそのあたりでandroid向け/armeabi-v7でコンパイルすると大量に警告

はい

cocos2d-x 2.2.1でarmeabi-v7でコンパイルするとワーニングが大量にでてコンパイルできない問題。2.2.2は知らない。3系はためしてないが多分解決している。リリース用にコンパイルすべとv7をいれた途端コンパイルできねえとなるので、とても困る。

再現が面倒なので細かいメッセージは省くが、ワーニングを見るとlibcurlが含まれているのが確認できるはず。これは配布ファイル内のlibcurl.aがstripされてるのが原因とのこと。
$(cocos2dx_home)\cocos2dx\platform\third_party\android\prebuilt\libcurl\libs\armeabi-v7a\libcurl.a

これをgithubの3.0の配布ファイルに含まれてる下記のURLにあるものに置き換えれば、ワーニングは消える。

https://github.com/cocos2d/cocos2d-x/tree/develop/external/curl/prebuilt/android/armeabi-v7a/

2014年2月5日水曜日

Flash : FLAファイルのライブラリから音声ファイルを抽出したい場合

FlashもCCになったので、なんとなく触ることもすくなくなってきたんだけど
あまり情報がないやつ

Flashにはライブラリの機能があって、動画や画像、音声など、いろいろな
要素をつっこんでおける。

素材は基本的にはflaファイルと同じ場所にディレクトリを掘っておいて置
くものなのだがこれを紛失した場合も画像と動画に関してはflaファイルの
ライブラリから直接取り出すことが可能だ。

基本的に素材のまま格納されてるので素材を紛失してもflaファイルがあ
ればなんとかなったりする。
 ただUIを追う普通のやり方だと音声ファイルだけはFlashのライブラリから
取り出すことができない。
元の素材なくしちゃったけどflaファイルだけある場合取り出す方法は下記

swfファイルからもツールを使って取り出すことは可能ではあるが、これは
画像も音声もswfにする際にflashが圧縮するので微妙になる。

で手順。

①空のFlaファイルを作成し、対象の音声をライブラリにコピーする
②音声をステージにドラッグドロップするとタイムラインができる
③タイムラインを音の収まる範囲まで広げる
④ファイル⇒書き出し⇒ムービーの書き出しでwavファイルとして出力

元ファイルではないが、FlashCS6で圧縮する前の音声を取り出すことができた

2013年8月14日水曜日

COCOS2D-XでAndroidビルド時に"Zip add failed"

COCOS2d-X 2.1.4+Windows 7+Eclipse+cygwin

掲題の環境でbuild_native.shを実行すると、
Zip add failedと表示されてapkが生成されない問題。
おそらくwindowsオンリーの問題と思われる。

処理を行っているのはaaptというandroid sdk側のパッケージャー
ファイルが指示されるので直す。
 ・日本語を含むファイル名は処理されない
 ・cygwin上で権限が適切(777とか)に設定されている必要がある。

そのまま実行するとフォルダを掘ってその中にあるファイルが上記のエラーで処理されない。
確認するとこれらのファイルには権限が一切ついていない。

これはbuild_native.shの中で呼び出されているcygwinのcpの問題である。
⇒Windows7+cygwinでpermissionの問題があるとのこと。

なので一通りの処理が終わったあとでchmod 777 -R $directoryとでもしてあげればいい
具体的にはbuild_native.shでコピー処理のあとに下記のようにchmodを追加する

========================================
if [ -f "$file" ]; then
    cp "$file" "$APP_ANDROID_ROOT"/assets
fi
chmod 777 -R "$APP_ANDROID_ROOT"/assets
========================================

2013年8月4日日曜日

ソロミッション(Paranoia-XP翻訳)


Paranoia-XPソロミッションの翻訳です。随分前にやってたのだけれど扱いに面倒になって放置していたもの。なんか、他のサイトでも見たことあるな。

書籍を手に入れてから読んでね! 

Paranoia-XPに載ってるプレイスタイルについて(Paranoia-XP翻訳)

Paranoiaに関する記事ふたつめ、これも誤解が蔓延してそうなParanoia-XPに載ってるプレイスタイルに対する解説です。国内で見る限り程度の差はあれどみんなクラシックでプレイしてると思う。Straightは難易度高そうだな。

書籍を手に入れてから読んでね!