カテゴリー別

お絵描き、デザイン

写真、動画関連ソフト

アメーバピグ専用ソフト

ホームページ関連

画像処理

スキャナー用

SEO 関連

お楽しみ

その他

過去ログ

2017年06月22日(木)

簡単なループアニメーションを生成するソフト、位相テスト

ドロー系のお絵描きソフト、 ストローク で作成した 2 枚の画像から
アニメーションを生成するソフトのテスト、デバッグ中です。

今日は、補間機能の再テストしました。

上は、2 枚の入力画像。左で開始、右で終了です。
右の画像は、図形の位置を右に平行移動しただけ。

↑ 線形補間。左は復路「なし」、右は「反転」。
線形補間の場合は、反転と回転の違いはありません。

↑ それぞれ、三角形の位相を - 1 ずらした場合。
左の復路「なし」では、三角形の位置が反転しないので
最初の位置よりも左から開始する仕様 (予定)。

右の復路「反転」では、位相が 1 ずれることで
三角形とおにぎりの動きが完全に逆になります。

↑ 円で補間。両方とも復路「なし」。
右は、三角形の位相を -1 した場合。

↑ 円で補間。両方とも復路「反転」。
右は、三角形の位相を -1 した場合。

↑ 円で補間。両方とも復路「回転」。
右は、三角形の位相を -1 した場合。

ま、こんな感じ。

・・・

ストロークループアニメーターの公開はまだなので、
気になる方は、とりあえず、ストロークでもお試しください。

アイコン作成に使用してるので、
実用は可能なはずですよ。

最新版は、こちらのページからダウンロードできます

補間エンジンの基本的なテストは
だいたい終わったかな。

ストローク
ストローク ダウンロード
ストローク サンプル画像
ストローク 更新履歴
ご意見・ご要望連絡窓口


2017年06月20日(火)

簡単なループアニメーションを生成するソフト、テスト中

ドロー系のお絵描きソフト、 ストローク で作成した 2 枚の画像から
アニメーションを生成するソフトのテスト、デバッグ中です。

今日は、補間エンジンの書き直しが終わったので、
再度、テストを開始しました。

↓ はテクスチャー塗りの開始位置を変化させるテストです。
テクチャーの縦の周期に合わせて 30 ピクセル動かしてるので、
ずっと、下に動いているように見えますがループしてます。

このとき、往路ではテクスチャーの描画開始位置を
反転させるのと、させないので 2 通りのアニメーションが
考えられたので、それに対応できるようにエンジンを書き直しました。

例えば、開始画像の描画開始位置が、0
終了画像の描画開始位置が 15 の場合、
往路では、15 から 0 に減少させていく
パターンと、15 からさらに増やしていって
最後は、30 になるパターンが考えられます。

さらに増やしていくパターンの場合、
開始画像よりも前の位相では、描画開始位置を
マイナスにするのが自然なので
そうなるような修正が必要でした。

そうなってくると、
色、塗りの角度、テクスチャーの拡大率なんかも
反転するパターンと、反転しないパターンが
それぞれ、考えられるので、それぞれ独立に
反転するかどうかを指定できるようにしました。

・・・

ストロークループアニメーターの公開はまだなので、
気になる方は、とりあえず、ストロークでもお試しください。

ストロークループアニメーターのアイコン作成にも使用したので、
実用は可能なはずですよ。

最新版は、こちらのページからダウンロードできます

原理的には、補間方法も、点、色、塗りの角度
とかで独立なんだけど、そこまで指定できるようにすると
ちょっと複雑すぎるよな。たぶん。

ストローク
ストローク ダウンロード
ストローク サンプル画像
ストローク 更新履歴
ご意見・ご要望連絡窓口


2017年06月19日(月)

簡単なループアニメーションを生成するソフト、テスト中

ドロー系のお絵描きソフト、 ストローク で作成した 2 枚の画像から
アニメーションを生成するソフトのテスト、デバッグ中です。

今日は、塗りがうまく変化するかのテストなどしました。

まぁ、だいたいうまくいかったのですが、
テクスチャーの塗りの濃さ (アルファ値)
の変化がうまくいかなかったので、調べてみると、
ストローク の方に、テクスチャーの
濃さが保存されない不具合が見つかりました。

修正は終わってるので、次のアップデートでは直る予定ですが
今のところは、ロード後に透明度を再設定して乗りきってください。

・・・

ストロークループアニメーターの公開はまだなので、
気になる方は、とりあえず、ストロークでもお試しください。

ストロークループアニメーターのアイコン作成にも使用したので、
実用は可能なはずですよ。

最新版は、こちらのページからダウンロードできます

色々思うところがあって、
ちょっち補間エンジンを書き直し中。

結構、大変だなぁ。肩いたいよー。

ストローク
ストローク ダウンロード
ストローク サンプル画像
ストローク 更新履歴
ご意見・ご要望連絡窓口


2017年06月16日(金)

libpng + APNG パッチ、高さ 1 のフレームを含めると落ちる不具合修正

ドロー系のお絵描きソフト、 ストローク で作成した 2 枚の画像から
アニメーションを生成するソフトのテスト、デバッグ中です。

今日は、画像の高さが 1 のフレームを含む
アニメーション PNG を保存するときに落ちる不具合を修正しました。

保存には、libpng っていうライブラリーに、
アニメーション PNG を保存するためのパッチ をあてたものを
利用させていただいているのですが、途中に画像の高さが 1 の
フレームを含めると落ちるみたいです。
(libpng のバージョンは 1.6.29)

どこに不具合があるかは完全には特定できていないのですが
たぶん、全フレームの画像の高さが 1 とかなら落ちません。

たぶんですが、png_structp 構造体の prev_row
を png_calloc する部分が、画像の高さが 1 の場合には
スキップされるのですが、前のフレームの
prev_row ポインターが残っていて、結果的に
何やら不正な処理が走ってるみたいです。
(勘では、free による 2 重開放じゃないかと思う)

で、とりあえず、フレームの画像保存前に、
prev_row をチェックして、NULL じゃなかったら、
png_free してから NULL にしておくと直りました。

prev_row は、最初のフレームでは常に NULL なので
マルチフレームでなければ、問題なさそうです。

・・・

ま、気になる方は、とりあえず
ストロークでもお試しください。

ストロークループアニメーターのアイコン作成にも使用したので、
実用は可能なはずですよ。

最新版は、こちらのページからダウンロードできます

ちなみに、ストロークループアニメーターで、
中間フレーム数を 677 枚にしたら発現しました。

何故、677 枚だったかというと、
画像の中間フレームを 677 枚にしたときに、
1 フレーム間の動きがあまりにも小さくなって、
前のフレームと全く同じフレームが生成されはじめたからです。

で、前と全く同じ画像だからといって、空っぽの画像も
保存できなさそうだったので、かわりに、
1 x 1 の画像を保存すると、条件を満たしたわけですな。

まぁ、そんなにたくさんの中間フレームを生成することは
無いと思いますけど、こういう極端な値でテストすると
いろいろと不具合が見つかるので、品質を高めるためには有効です。

ストローク
ストローク ダウンロード
ストローク サンプル画像
ストローク 更新履歴
ご意見・ご要望連絡窓口


2017年06月15日(木)

透明色を含む GIF アニメーションをうまく保存できない不具合修正

ドロー系のお絵描きソフト、 ストローク で作成した 2 枚の画像から
アニメーションを生成するソフトのテスト、デバッグ中です。

今日は、透明色を含む GIF アニメーションを
うまく保存できない不具合を修正しました。

WIC のクセがすごいので、大変でしたが、一応
Windows 10 ではうまく動くようになりました。

GIF アニメーションファイルを作成する場合、
表示時間や透明色を設定する必要があります。

Native Image Format Metadata Queries では、
/grctlext/Delay や、/grctlext/TransparencyFlag などに相当します。

ところが、これらのプロパティを、 IWICMetadataQueryWriter
で設定すると、色々とおかしなことが起こります。

Windows Imaging Component and Animated GIF Files に、
どんなおかしな事が起こるかと、回避方法が載っていますが、
完全ではありませんし、直し方もよくありませんでした。

まず、プロパティを設定するタイミングですが、
WriteSourceCommit の間で設定すると無視されます。

ちなみに Windows Imaging Component and Animated GIF Files
にある、Commit の前で、QueryWriter を取得して、
Commit 後で設定する方法は、単に次のフレームに
設定されちゃうっぽいので、やらない方がいいと思います。

特に問題にならないはずの、/imgdesc/Left
の設定がずれるのでたぶんそうです。

なので、正しい設定場所は、
画像データーを書き込む前のタイミングです。

ところが、画像データーを書き込む前のタイミングで
/grctlext/ 配下のプロパティを書き込むと、
画像の書き込み時に設定されていた、
/grctlext/TransparencyFlag や、
/grctlext/TransparentColorIndex が
0 になっちゃいます。

おそらく、/grctlext/ 配下のプロパティを
1 つでも設定すると、その他のプロパティも
初期設定され、WriteSource ではそれらの値を
上書きしないために、おかしな値のままになるんでしょう。

直し方ですが、/grctlext/ 配下で必要なプロパティを
全て、自分で設定しちゃえば OK です。

/grctlext/TransparentColorIndex
は簡単には取得できませんが、パレットの
0 番目が必ず透明色になるようにしたり、
パレットから透明色のインデックスを
検索したりすれば計算できます。

自分は、 InitializeFromBitmap で計算したパレットの透明色を
0 番目の位置に移動。そのパレットで画像データーを減色して、
必ず透明色のインデックスが 0 となるようにしました。

・・・

ま、気になる方は、とりあえず
ストロークでもお試しください。

ストロークループアニメーターのアイコン作成にも使用したので、
実用は可能なはずですよ。

最新版は、こちらのページからダウンロードできます

GIF の場合、背景色のインデックスは
フレーム毎に設定できません。

よって、透明を背景色としたい場合は、
フレーム毎の透明色のインデックスは
共通にする必要がありそうです。

ストローク
ストローク ダウンロード
ストローク サンプル画像
ストローク 更新履歴
ご意見・ご要望連絡窓口


2017年06月13日(火)

簡単なループアニメーションを生成するソフト、デバッグ中

ドロー系のお絵描きソフト、 ストローク で作成した 2 枚の画像から
アニメーションを生成するソフトのテスト、デバッグ中です。

今日は、指定のサイズよりも 1 ピクセル大きな画像
が出力される場合がある不具合を修正しました。

浮動小数点の誤差で、拡大後のサイズ / 元のサイズ
で計算した拡大率を、元のサイズにかけると、
拡大後のサイズよりも大きくなる場合があるのが原因でした。

int とかの整数型で、両方とも正の数だと、
小数点以下は、切り捨てになるので、こういうこと
は起こらないのですが、浮動小数点はちょっと違うみたいですね。

そんなわけで整数の演算のように、
切り捨てっぽい割り算の結果を返す
関数を作って対応してみました。

r = a / b をやってみて、
r * b > a の間、
r をちょっとだけ小さくしていく
っていうプログラムです。

まぁ、最初の r は一番近い値を返している
はずだから、r をちょっとだけ小さくするループは
1 回しか回らないはずですけど、一応ループにしてみました。

負については、まだ考えたくないので
assert でごまかしてます。

inline double floor_div(double a, double b)
{
  ATLASSERT(a >= 0);
  ATLASSERT(b >= 0);
  
  double r = a / b;
  while (r * b > a)
  {
    if (!float_dec_abs(r))
      break;
  }
  
  return r;
}

float_dec_abs も自作の関数で、
引数の r の絶対値をちょっとだけ小さくしますが、
できない場合は、false を返します。

typedef unsigned _int64 DInt;
const DInt D_NUM_MASK   = 0x000FFFFFFFFFFFFF;
const DInt D_S_EXP_MASK = 0xFFF0000000000000;
const DInt D_EXP_MASK   = 0x7FF0000000000000;
const DInt D_EXP_1      = 0x0010000000000000;

inline bool float_dec_abs(double& x)
{
  // 絶対値を 1 単位減らす //
  
  DInt* p = (DInt*)&x;
  if ((*p & D_NUM_MASK) > 0)
  {
    *p -= 1;
    return true;
  }

  if ((*p & D_EXP_MASK) > 0)
  {
    *p |= D_NUM_MASK;
    *p -= D_EXP_1;
    return true;
  }

  ATLASSERT(FALSE); // あんまりこないだろう
  return false;
}

なかなかトリッキーな関数で、
double の内部表現によっては
正しく動かないかもしれませんが、
自分の環境では正しく動いてるみたいです。
(簡単なテストしかしてませんけど)

やってることは、double の仮数部が
0 より大きければ、仮数部を 1 減らし、
0 なら、指数部を 1 減らして、仮数部を最大値にします。
ただし、指数部も 0 な場合は、false で失敗です。

・・・

ま、気になる方は、とりあえず
ストロークでもお試しください。

ストロークループアニメーターのアイコン作成にも使用したので、
実用は可能なはずですよ。

最新版は、こちらのページからダウンロードできます

c の frexp とかでやる方法もありそうですが、
かえってやっかいそうなので、断念しました。

ストローク
ストローク ダウンロード
ストローク サンプル画像
ストローク 更新履歴
ご意見・ご要望連絡窓口


2017年06月12日(月)

簡単なループアニメーションを生成するソフト作成中、ホームページ作成完了

ドロー系のお絵描きソフト、 ストローク で作成した 2 枚の画像から
アニメーションを生成するソフトを作成中です。

今日は、ホームページの作成が、
一応、完了しました。

ストロークのやり残した機能の実装も進めて、
あらたに実装する機能は、もう無さそうな感じ。

今日実装したのは、カラープロファイルの変換と、
メニュー項目のアイコン表示、ホームページを開く
メニューコマンド、キーボードショートカットキーかな。

実装といっても、ストロークの機能を呼び出すだけな
感じなので、プログラムの行数はあまりありません。

もう少しテストしたら、公開できるかな?

・・・

ま、気になる方は、とりあえず
ストロークでもお試しください。

ストロークループアニメーターのアイコン作成にも使用したので、
実用は可能なはずですよ。

最新版は、こちらのページからダウンロードできます

ストローク
ストローク ダウンロード
ストローク サンプル画像
ストローク 更新履歴
ご意見・ご要望連絡窓口


2017年06月09日(金)

簡単なループアニメーションを生成するソフト作成中、ホームページ作成中

ドロー系のお絵描きソフト、 ストローク で作成した 2 枚の画像から
アニメーションを生成するソフトを作成中です。

今日も、引き続きホームページの作成中です。

ホームページを作成していると
仕様の微妙なところに気づくので
結構、有用だったりします。

今日は、自動トリミングすると、画像が拡縮されるという
説明が難しい謎の仕様を見つけたので、修正しました。

あと、設定ファイルを保存する場合に、
入力画像や出力先フォルダーのパスを
絶対パスで保存していたのですが、
それだと、ファイルをまとめて移動したり、
設定ファイルを公開したりしたときに不便なので、
設定ファイルのフォルダーからの
相対パスに変換して保存する仕様に変更しました。

・・・

ま、気になる方は、とりあえず
ストロークでもお試しください。

ストロークループアニメーターのアイコン作成にも使用したので、
実用は可能なはずですよ。

最新版は、こちらのページからダウンロードできます

色とか線の太さとかも補間できるように
プログラムは書いてあるのですが、
全然テストしてないから、やらないと〜。

ストローク
ストローク ダウンロード
ストローク サンプル画像
ストローク 更新履歴
ご意見・ご要望連絡窓口


2017年06月08日(木)

簡単なループアニメーションを生成するソフト作成中、ホームページ作成開始

ドロー系のお絵描きソフト、 ストローク で作成した 2 枚の画像から
アニメーションを生成するソフトを作成中です。

今日から、ホームページの作成を開始しました。

まだ途中なので、公開できませんけど、
簡単なアニメーションの作り方を
チュートリアルとして用意する予定です。

できるアニメーションはこんなの ↓ を予定しております。

お楽しみに。

・・・

ま、気になる方は、とりあえず
ストロークでもお試しください。

ストロークループアニメーターのアイコン作成にも使用したので、
実用は可能なはずですよ。

最新版は、こちらのページからダウンロードできます

ストローク
ストローク ダウンロード
ストローク サンプル画像
ストローク 更新履歴
ご意見・ご要望連絡窓口


2017年06月06日(火)

簡単なループアニメーションを生成するソフト作成中、インストーラーなど

ドロー系のお絵描きソフト、 ストローク で作成した 2 枚の画像から
アニメーションを生成するソフトを作成中です。

今日は、インストーラーを作成したり、
コマンドライン引数で指定した設定ファイルを
開く処理を実装したりしました。

まぁ、特に書くことも無いので
新しいアニメーション例でも公開しときます。

手と紐つきの水風船アニメーションです。

最初の画像では手が上に、
風船は下にあるので、
逆の動きになります。

位相でいうと、完全に逆ですね。

さらに、水風船の位相を、
0.2 だけ遅らせると
下のようになります。

あんまり変わりませんが、
手の動きと、風船の動きが
完全に逆ではなくなって、
ちょっと複雑な動きになります。

・・・

ま、気になる方は、とりあえず
ストロークでもお試しください。

ストロークループアニメーターのアイコン作成にも使用したので、
実用は可能なはずですよ。

最新版は、こちらのページからダウンロードできます

ストローク
ストローク ダウンロード
ストローク サンプル画像
ストローク 更新履歴
ご意見・ご要望連絡窓口


| 1/5PAGES | >>