状態が続く道具
ブラシやペン先は、ストロークをまたいで同じ道具です。顔料、液体、汚れ、毛ごとの残量、機械的な状態は、ペンを離してもリセットされません。
ペイント技術そのものがTiltmarkです。HaneはそのAndroid用インターフェース兼ホストです。入力を集め、文書を管理し、キャンバスを表示しますが、道具、画材、線の結果を決めるのはTiltmarkです。このページは、2026年8月13日に現在のソースと照合した、Google Play版0.3.0の実装をまとめています。
← 描く人向けのHaneページへ戻るTiltmarkは、伝統的な道具、画材、紙、時間を、範囲を限定し再現可能な形で近似します。分子を一つずつ再現するという主張ではなく、描く人が認識できる挙動と編集可能な文書を守るための設計です。
ブラシやペン先は、ストロークをまたいで同じ道具です。顔料、液体、汚れ、毛ごとの残量、機械的な状態は、ペンを離してもリセットされません。
顔料と溶媒は別々に減ります。無限の見た目だけの色を流すのではなく、接触ごとに実際の画材移動を記録します。
拾い上げの計画、線の生成、放出、空いた容量への取得を固定順序で実行します。ライブ描画と再生は同じ接触規則を使います。
濡れた画材と粉状のドライメディアは、手を離した後も文書の一部です。広がり、毛細管移動し、定着・硬化・再活性化・摩耗し、後から拾い上げられます。
元に戻す、キャンセル、復旧は、作品、物理フィールド、シミュレーション時計、道具のチェックポイントを一緒に復元します。
実行結果を決める本体はRustです。HaneとSloom Studioは、競合するブラウザー側ブラシ式を持たず、固定した同じエンジンを利用できます。
文書座標と時間、筆圧、接線方向の圧力、高度角、方位角、対応する軸回転、ホバー距離、ポインター種別、消しゴム状態をRustで正規化・検査します。届かない軸の値を作りません。
軽い/強い筆圧、立てる/寝かせる接触、物理的な方向から、範囲を限定した端末プロファイルを作ります。AndroidとPointer Eventsの統合サンプルは同じ規則へ入ります。
間隔、時間を考慮した平滑化、手ぶれ補正、テーパー、終点への追従、長押し付着、対称描画、QuickLine、シード固定の散布・サイズ・不透明度・角度変化をTiltmarkが決めます。
最大32個の順序付きマッピングで、筆圧、傾き、軸回転、速度を形、転写、画材、残量、紙目、ばらつきへ安全なカーブで割り当てられます。穂先画像は1〜16枚、紙目は文書座標に固定されます。
実装済みカタログは、13種のエンジン画材ラベルに252種のブラシプリセットを収録し、別枠で4種のスプレー缶を加えます。Hane Fullでは合計256種の道具です。カテゴリーは整理用で、画材とレシピが物理経路を決めます。
グラファイトの点/側面、チゼル、丸、粒子、リボン、状態を持つ毛束。読み込んだ穂先マスクは見える被覆を変えますが、物理的な接触面を置き換えません。
最大24個の安定した繊維群が、硬さ、減衰、引きずり、まとまりに応じて曲がり、遅れ、開き、かき、戻ります。繊維ごとに別の混色を保持できますが、実毛一本ずつの体積計算ではありません。
Gペン、丸ペン、カラス口は、開き、インク供給、レールローディング状態を保持します。静的なスタンプ交換ではなく、筆圧、傾き、引きずり、回復が幅と中央/両端の付着を変えます。
顔料、水、アルコール、薄め液、メディウムは、含ませ、混ぜ、すすぎ、吸い取り、拭い、乾かし、再装填、初期化できます。濡れた毛束は繊維と腹に画材を分配します。
専用のタグ付き相が、粉状画材、摩耗、拾い上げ、再付着を保持します。色鉛筆も固有の顔料、バインダー、溶剤相を持ち、水彩として代用しません。
水彩、墨・インクウォッシュ、ガッシュ、アクリル、油彩、希釈油彩、アルコール染料、ブレンダーは、それぞれ水、バインダー、溶剤、油、アクリル、拡散、蒸発、硬化、再活性化、皮膜固定のレシピを持ちます。
Fat、Soft、Precision、Calligraphyの各キャップは、決定的な粒子を使い、圧力、距離、角度、滞留、速度、面の向き、重力に応答します。顔料と溶剤は変化し続ける表面で保存されます。
滑らかな合成紙、ホットプレス、コールドプレス、ラフ水彩紙、簀の目紙、キャンバスで、吸収性、サイジング、凹凸、紙目、繊維方向の毛細管移動が変わります。レイヤーごとに染み、リフト、乾燥も設定します。
Haneの新しい物理レイヤーはV3を使います。旧文書は保存済みのV1/V2を維持します。V3はモバイルで範囲を限定して動かすための、過減衰有限体積モデルです。Navier–Stokesや完全な毛細管網ソルバーではありません。
保存される表面状態には51個の名前付き配列があります。GPUで使うウェット部分は1セル32チャンネル/128バイト。損失のない厚みは別のサイドカーに置き、ドライメディアと色鉛筆のタグはRustだけが保持します。
入力解釈、接触、画材の意味、スナップショット、代替経路はRustが所有します。対応するアクセラレーターは、順序付きで再生可能な権限フェンスの内側でのみ、正確に反映した状態を進化・描画します。
入力収集、調整画面、文書、レイヤー、コマンド、作業スケジュール、最終表示。
ストローク、道具、残量、拾い上げ/付着、ドライ/ウェット画材、スナップショット、互換性、CPU本体。
能力確認済みのウェット進化、対応時の厚み演算、変更タイルの描画、正確な代替経路。
WebGPUはV3輸送、局所化学、対応する厚み、描画を実行します。対象となるWebGL2はV3ウェットフィールドと描画を実行し、厚みを持つ状態はRustが本体です。失敗時は状態を保存または再生してから代替経路へ移ります。最終レイヤー合成はCanvas2Dで、ウェット表示にはGPUからCPUへのRGBA読み戻しも残るため、まだゼロコピーでも全環境GPU専用でもありません。
Rustは活動中、保留、休止中のタイルを追跡します。領域計画は離れた濡れ領域を保ち、必要な前線を含め、空白まで一つの大きな四角へ広げません。
拾い上げ、消去、保存、読み取り、乾燥、バックエンド交換の前に、GPUで先行した進化をRustへ同期するか、決定的に再生します。安全でない代替は停止します。
ブラシ交換V4、道具スナップショットV3、ウェットスナップショットV10(V1〜V10読込)、厚みサイドカーV1、FFI ABI V2。旧リーダー向けに焼き込んだ見た目も保持します。
正規化サンプル、シード、プリセット、紙、物理版、ステップ列、スケジューラ情報を保存します。Rustの順序と時計は安定し、GPU間の超越関数差は許容誤差で確認します。
Hane 0.3.0は現在のGoogle Play本番版です。V3版には、拡張ウェット/厚みモデル、スプレー4種、重力による流れ、対応ハードウェアでのGPU常駐ウェット進化、既存作品との互換性が含まれます。
ページ単位の疎なGPU保存とウェットK/S色輸送は、版管理された実験であり、本番文書を無断で置き換えません。保存則、同等性、性能の自動試験は、作家による見た目の評価とより広い実機確認を補いますが、代わりにはなりません。