2024年02月18日

はみ出し防止アルゴリズムの改修など

管理人のワロタロです。 前回の更新から1ヶ月経ってしまいました。音沙汰もなくすみません。

本日、Ver. 0.1.0を公開しました。 主な変更として、ブラシ塗りレイヤーのはみ出し防止機能の改修が含まれています。また、線画レイヤーの線をはみ出し防止の対象とするかしないかを線ごとに設定できる機能を追加しました。

過去のデータを完全に再現できなくなりましたので、過去のバージョンも残しながら最新版を公開しています。

ブラシ塗りレイヤーのはみ出し防止アルゴリズムの改修

ブラシ塗りレイヤーのはみ出し防止機能改修前後

結論からいうと、左のようだったものが右のようになります。

もともと隙間をある程度許容してくれるアルゴリズムが入っているにはいたのですが、隙間の向こう側に線があると線のあるところまで塗りつぶしがはみ出してしまう場合がありました。

線のあるところまではみ出るのが良いのか悪いのか、これは一概には言えないところがあります。不要にはみ出た部分を手修正する手間がある一方で、塗り残しが発生しづらいという利点もあります。ただ、しばらく自分自身で使ってみたところ、はみ出る部分を手修正する手間のほうがずっと大きいことが分かってきました。

で、実装することにしたのですが、これが難しい…。ブラシ中心から風船が膨らむようにとでもいいますか、水が広がるようにといいますか、そういうイメージでやりたいのですが、シミュレーション的な方法では計算量が多すぎて現実的ではありません。近似するしかないのですが、それもまた難しい。結局、隙間を埋める線の組み合わせを第二候補まで出して最大2回のシミュレーションで終わりにするような方法を考えて、そこそこの計算量でそこそこの結果が得られるようになりました。

ちなみに現状では許容する最大の隙間は30ピクセルで固定です。いずれ設定を変更できるようにしたいと思います。

はみ出し防止の対象となる線の指定機能の追加

はみ出し防止の対象となる線の指定機能

線画レイヤーの線ごとにはみ出し防止機能の対象となるかどうかを指定できるようにしました。色が赤で表示されている線ははみ出し防止の対象となり、青で表示されている線は対象になりません。

編集モードに追加された「属性」ツールを使用して指定します。

編集モードに追加された属性ツール

もちろん、従来どおりグループを使って分けるやり方も可能です。属性ツールを使う方法と違い、同じグループ内のブラシ塗りレイヤーならはみ出し防止機能が有効ですので、基本的にはグループを使うほうが応用力はあります。

「属性」ツールは、グループを分けるまでもなく一部分だけはみ出し防止をOFFにしたいときに使うと便利だと思います。

今後について

中期的な開発の目標を「基本機能の充実」にすることにしました。3D機能の追加をするかスタイル関係を改善するかで迷っていたのですが、3D機能は基本的な絵を描くための機能が洗練されているからこそ役に立つ機能だと思いますから、ここはやはり基本を固めるべきだと考えました。今回のブラシ塗り関連の修正・変更もその流れで実施しました。

今後は、具体的には線画ツールの改善、スタイルのクオリティ向上、色管理機能の拡充、レイヤー合成機能の拡充、画像ファイルの挿入…などの開発をしていきたいと考えております。

その他の更新

  • ツールの切り替えボタンで循環して切り替えられるツールを3つまでに統一
  • エクスポート時に出力が等倍であれば一部の描画をスキップして高速化するよう改善
  • エクスポートのスケールでホイール入力すると0まで下げられてしまう問題の修正
  • 画面リサイズ時に一瞬スクロールバーが表示されてメイン画面が小さくなる問題の修正
  • 編集モードで点と点の間で線幅が変わる場合は平均の幅で表示するよう変更(今までは片方の点の線幅のみしか反映されていませんでした)
  • ブラシ塗りレイヤーで線の修正をしたときに細かく線が分割されすぎる場合がある問題の修正
  • CPU負荷の低減のため各種パネルの背景のブラー表現を廃止