ベータ版の完成形である ver 1.3 を10月完成目標に開発していましたが、それはやめて、新たに ver 2.0 として全ての仕様もソースも何もかも新しくすることにしました。なので、さらに時間がかかります。
具体的には、今まで開発に使用していた MFC + LEADTOOLS(ActiveX) のライブラリを、Qt4 のライブラリに変更します。つまり、今までのソースコードは全部書き直しになるということです。大変ですが、これをやることで未来がグッと広がります。たとえば Mac OSX や MeeGo などもターゲットにできるということです。
完成時期は正確なところは皆目見当も付きません。速く見積もっても来年春か夏…。遅くて3年後…。そんなところです。
全くの白紙から書くわけじゃありません。昨年の9月頃から今年の3月まで(その間4ヶ月程度はコンテの仕事で中断してましたが…)Qt4 を使ってAniLaPaint ver1.3の次に作る予定だったペイントソフトの雛形をすでに作ってあります。回転の出来るビューやナビゲータやカラーピッカーなどが完成していて、ツール類(ブラシなど)を作っている最中でストップしていました。それを流用したいと思います。
これは、現在作成中の画面です。
本当は嫌なのだけど…、自分で絵を描きました…。仕事以外で絵を書いたのはもう10年ぶりぐらいでしょうか…。
まだ、ペンの機能のつくりかけなので、色を塗ると下の線が消えてしまいます。つまり筆モードがまだスタンダードのみなのです。
筆圧はとってもやわらかく拾うんですが、私が筆圧に対応していないので……、筆圧があると絵が書けなくなるのでとっても細い線にしてチマチマ下書き的に書いています。これは私のスペックの限界です…。
つまり……、筆圧を巧く生かしたデモって今後も出来ないってことだよね…。
レイヤ機能がまだ無いので、清書するわけにもいかないし、なにせ保存機能を付けていないので、スクリーンショットを取るたびに描かなきゃならないという…。
この画面をそのまま AniLaPaint ver2.0 に使います。というか、このソフト自体 AniLaPaint という名前で作ったのでタイトルがそのまんまなのですが……。
完成は来年秋の予定だったので、今まで公開してこなかったのですが、AniLaPaint ver2.0 にこの画面を使用することにしたので、ビジュアルを公開することにしました。
スクリーンショットってめんどくさいので嫌なのだが…。
回転や拡大縮小も超高速でできます。ほとんど Qt4 のおかげですが、縮小部分については、12000×12000ピクセルの画像でも高速にできるようにと、縮小キャッシュシステムを自分で実装してあります。高速性というだけでなく、 Qt4 の縮小は汚いので自分で何とかしないと日本向けのCGソフトとしてはあり得ない出来になるおそれがあったからです。PhotoShopの縮小とか拡大って超汚いでしょ。それとQtもおんなじ。日本人の嗜好ってそういった細かいところに気を使うという部分だから、そういった部分はそのまんまは使えないよね……。
上にGLボタンがあるけど、これを押すと OpenGL モードになって、グラボパワーで超高速な拡大縮小や回転。それに超高速というかほとんどタイム0でレイヤの合成が行えます。……、というかレイヤまだ実装してないけどね…。レイアのみを実装するためのテストソフトを作ってすでに実験をしています。レイヤ自体の機能はQt4 クラスライブラリ自体に組み込まれているのです。それを操作するためのGUIをまだ作っていないだけなのです。だから、レイアは簡単に実装可能(すでに内包されてるの)です。
ナビゲータではナビゲータ自体を拡大縮小できる縦のスライドバーを付けました。これで、細かい被写体にもナビゲータを使用することができます。ナビゲータ自体は、某2つの有名な回転可能ペイントソフトを足して2で割ったような実装にしました(笑)。でも、たぶんこれもリテイクします。ここで使われているスライドバーはまだまだ反応速度がトロイので、自分で描画するスライダーに変えちゃうつもりです。
スクロールバーの方式は、色々と試してみたのですが結局ぶつかって中心軸がガタガタしちゃうのも嫌なので、画像を回転した時の直径分全てをスクロールできるほどのサイズにしました。これも結果として某ソフトと同じになってしまいました。某ソフトと同じようにスクロールバー自体を消してしまうということも考えたのですが……。それもユーザフレンドリーじゃないし…。結局、画面がどっかにいなくなっちゃう的問題は、画像の何%以上が画面から外れると、自分でクイッっと画面に戻るようにスクロールバーにバネを仕込みました。これで、画像が突然画面の外に出てしまってオロオロするようなことも無くなります(キリッ)!
では、次にカラーピッカーの説明です。三角形のカラーピッカーにしています。これは、Qt ソリューションというLGPLのカラーピッカーが三角形の物を使用していたから、その流れで三角形になりました。
最初そのLGPL物を外部リンクで使ってたのですが、透明度に対応していなかったので、結局自分で全部書くしかないかな…と、こうなりました。
少しでも三角形の面積を増やすために Hue の中に食い込ませることにしました。念のため、Qt ソリュージョンのソースは全く参考にしなかったので、…というか、自分で一からロジックを考えたほうが他人のロジックを理解するよりも断然速いので……、全くのオリジナルです。この部分のソースをLGPLとして公開することはありません。
これを見れば分かると思いますが、半透明に対応しています。しかも、半透明の背景色を設定して、その上にカラーピッカーを表示することで、ある色との合成後の色を選択することが簡単にできます。また、HSV と HSL に対応しています。Valueボタンで、色の数値を表示するか非表示にするかが決められます。
右上に A というパラメータがありますが、これがアルファチャンネルです。このチェックを外すとアルファ禁止となります。アニメ塗りでは、うっかりアルファチャンネルが付いていてダブラシになってしまったのを気づかずに、撮影時にウラが透けていたみたいなことになったりもした私の苦い経験から……、アルファ禁止モードが付いています。
2番目のカラーピッカーは従来の AniLaPaint の物と同じものです。バーが縦になったけど。 HSV か HSL かどちらかのモードを選択し、縦のバーを HSV(L) のどれかに設定すると、表示が変わります。下のバーはアルファチャンネル濃度です。上の色の羅列は、背景に選択する色の列挙です。背景なし、現在の色、現在の色の補色、灰色、灰色、白、黒のどれかを選択できます。
3番目のカラーピッカーはRGBCMYKの要素ごとにスライダーで色を選択するためのピッカーです。時に、その方が便利な場合があります。
なお、CMYK は必ず1つの要素はOFFになるということを皆さんご存知でしょうか?全ての色がONになることは原理的にありません。つーかそれは黒~灰色ということだから、K要素だけということになるしね。
あ…、全部英語っていうのは、Qt4 は原則ソースコードに文字列をべた書きしちゃうんですよ。MFC みたいにリソースに文字列を別に確保するんじゃなくってもうそのまんまソースに書いちゃうのです。だから見通しのいいソースになるのです。ただし、 tr() で括っていますので、完成版はちゃんと日本語で翻訳表示されますよ。
4番目のカラーピッカーは HSV HSL のスライダーです。説明の必要はありませんよね。
なお、数値を表示する画面は、RGBの場合%や#を使った表記にもできます。他の色空間数値では、%が他にあります。H要素については角度のみです。
やっぱ 0~255 を Hue にするのはやめました。元々角度が正解なので。
ところで、背景に使っている市松模様ですが、このカラーピッカーのものはこの色で固定です。カラーピッカーなのに市松模様の色が色々と変えられたら訳が判らなくなるので。
ビューの画面のほうは、市松模様の色を色々と変えることが可能です。しかもアイコン一発で変えられます。
こんな感じのドッキング可能なウィンドウがありまして、ここに表示されているサムネイルをクリックすると、背景を変えることが可能です。
左の図の下の方にフォルダ構造がありますが、このフォルダーごとに色々と分類したアイコンが入っています。デフォルトでは色の種類とピクセルサイズ毎のアイコンが入っています。
このサムネイルはもちろん自作することができます。デフォルトで入っている色は原色に近いものばかりなので、淡い色などは自分で設定できます。
もちろん、真っ白の背景が良い方は真っ白にもできます。
右の図を見てみると分かると思いますが、市松模様 checker 以外にも、画像ファイルを利用したテクスチャーを設定することもできます。テクスチャーの場合は、できるだけ小さい画像でリピートしても破綻しないような絵にしておきます。すると、例えば画用紙のような質感の背景にすることもできます。
テクスチャーも市松模様も選択しない場合は背景色は単色表示となります。
これらはレイア構造になっていて、たとえば、単色のバックグラウンドの上に市松模様を半透明で重ねて、その上にさらにテクスチャーを半透明で重ねることもできます。
実験してみたところ、3レイア分背景部分だけで重ねても全く拡大縮小などの実行速度は変わりませんでした。
Qt4 って凄い速いです。
PhotoShop などとは違って、市松模様は、常にビューの位置に固定表示されています。つまり、スクロールすると背景位置はそのままで、絵だけスクロールします。ですから、よりセルの感じがして気持ちイイです。
…
はてさて、実は、こういう情報を出してしまうのはリスクであるとも言えます。なぜなら、これで間違いなく誰かに Qt4 が感染するからです(笑)。プログラマー出身でもないアニメ演出家が数カ月でこのくらい簡単に作れてしまうフレームワークだということが、プログラマの皆さんに伝播すれば、そういった人達は私よりもズッと超高速でプログラムできるわけだから、あっという間に追い抜かれてしまう…。
まぁしかし、AniLaPaint の開発が、架空のやるやる詐欺に見られるかも知れないというのもリスクですから、こうやって現状を公開することにしました。Feature Pack の方の画面もあるけどかんべんしてね。最後まで画面が壊れまくった状態だったから……。
とうわけで負けずにがんばります!!
Twitter はこちら→ http://twitter.com/AniLaPaint









完成期待してますよ~。
どうもです~。