部分実装

操作設計と長時間の制作#

判断の基準#

参考資料のNuke/Houdini操作を、そのまま増やすことはしません。目的は、接続を狙い続ける負担を減らし、既存の作業を壊さず探索し、誤操作を確実に取り消せることです。CNLの意味、配置、選択、観測を分け、画面にしか存在しない計算状態を作りません。

Networkはプログラムの接続関係、Node画面はその表示です。Wireの描画曲線と実際の接続も別です。Parameterは値の入力契約、TweeqのNumber/Dropdownなどはその操作形です。選択・ホバー・評価中の状態を同じ色の意味へ混ぜません。上流/下流という接続関係と、Functionの内外という包含関係も区別します。

操作の契約#

各操作は、対象、入力、成立条件、実行前のフィードバック、確定、取消し、Undoを持ちます。

操作 条件とフィードバック 確定・取消し 変わるもの
ソケット→入力 型・ロック・循環を検査。密集ソケットは最近傍一つだけを選択 左ボタンを放す。Escape/フォーカス喪失は取消し 接続
ソケット→プロパティ 対応する入力行だけを明るくする。見た目の下に別の入力を推測しない 左ボタンを放す 同じ入力への接続
ソケット→ノード本体 定義順に、未接続で互換な入力を選ぶ 左ボタンを放す。候補なしは無変更 接続
ドラッグ中のShift+A検索 元ソケットと保留Wireを表示し、互換ノードに絞る。Tabは無効 Enter/候補クリック。Escapeは作成も接続もしない ノードと接続
Wireへ挿入 前後両側の接続が成立するWireだけを明るくする 左ボタンを放す。古い接続/ロック/循環は一括拒否 接続と配置
Knife K+左ドラッグ。実際に表示されたカーブとの交差候補を表示 左ボタンを放してまとめて切断。Escapeは全取消し 接続
中間ノード削除 唯一の安全な経路だけを再接続。曖昧な経路を勝手に決めない Delete。Undoでノード・値・Wireを復元 プログラム
移動・パン・ズーム・Frame 型/値/評価結果は変更しない 移動のEscapeは元位置へ戻す 表示
Functionへ入る/戻る 同じCNL定義を開く。Function階層はWireの上流ではない Enter、Alt+Left/Right 表示する定義
既存ノード検索・次/前 Addと同じ関連度規則で現在の関数だけを検索。タイトル一致部分を半透明表示 Ctrl+F、F3/Shift+F3。Escapeは無変更 選択とカメラ
Ctrlホバーの上流表示 前面のノードの接続元を表示。Focus Ringや選択には混ぜない キー解除/フォーカス喪失/別操作で消える 一時表示
両方向の接続選択 上流・下流・分岐を同じ接続探索で辿る。隠れた初期値は除外 コマンド。無関係な別コンポーネントは不変 選択
入力/出力の一括切断 現在のWireを捕捉。ロック/AE公開/古い接続は全拒否 コマンド。一つのUndo単位 接続
第一・第二入力の交換 二本の交換後の型と結果を同時検証。表示名やソケット契約は不変 コマンド。不可の場合理由を表示 接続
接続元へ移動 入力名で移動先を選ぶ。プロパティに隠れる位置へ移動しない ノード右クリック。Previous Viewで戻る 選択とカメラ
Preview/Experiment 正式な評価要求と不変入力を使用。Outputの接続を変えない 選択した対象/時刻を評価。古い要求は破棄 観測
Windowの切り離しと再ドッキング 全Windowは同じコンテナ契約。Code SubwindowはCode内のみ。浮動先もタブスタック・分割可能 タブの右クリックまたは名前のドラッグ。候補のないドロップは無変更 配置だけ
浮動コンテナの移動・resize 空のタブ帯で移動、4辺4隅でresize。前面だけが入力を所有し、適切なカーソルを表示 左ボタンを放す。Escape/フォーカス喪失は元の矩形へ戻す 配置だけ

プログラム編集はホスト側で一つの変更として検証・公開します。失敗時に「ノードだけ作れたが接続は失敗した」という中途半端な変更を公開しません。表示履歴のBack/ForwardはプログラムのUndo/Redoとは別です。実装がまだ分離していない表示Undoを、完成済みとは表示しません。

構造編集の確定と実行可能なプログラムの検証は別の段階です。検証中でも下書きを次へ進められ、型や実行が未完成の下書きは保存できます。完了通知は保存版を再確認し、古い検証結果で新しい編集・配置・入力先を置き換えません。共有入力が何度も現れるグラフでも、編集一回の型更新では同じノードを再帰的に何度も推論せず、次の編集では必ず再検査します。

既存操作を活かす#

  • Frame Selection(F)とFrame All(Home)で小さなソケットを探す移動量を減らします。
  • 選択の追加/解除、範囲の加算/減算/反転、全解除/反転を一つの選択集合へ統合します。直接の入力/出力選択と、再帰的なUpstream/Downstreamを混同しません。
  • ドラッグ中の軸拘束と端での自動パンは、移動・接続・範囲選択を続ける補助です。プロパティへの接続やKnifeを別操作へ奪いません。
  • メニューの候補・カテゴリ集計とソケットの一時アニメーションは寿命を限定します。開いている間の同じ候補を毎フレーム再構築せず、削除されたソケットの状態を保持し続けません。
  • PreviewのFit/倍率/カーソル中心ズーム/パンを評価から分離します。拡大した画像で操作バーを隠さず、表示操作のために再コンパイルしません。
  • 作成検索はAdd専用です。階層ではなく関連度順に候補を出し、入力型から接続先を絞ります。
  • 複製は選択内部の接続を保持し、値は独立させます。Extract/Expandは通常のCNL Functionへ対応します。
  • パラメータ名・ノード名は表示の名前です。内部識別子を人が読める名前の代用にしません。
  • InputPositionは画面の右/下を+X/+Yとします。Sでは左上↔右下に沿って両成分を同量動かします。
  • 数値操作に別のValue Ladderを追加せず、Tweeqの縦方向による一時的な感度変更を使います。
  • AEの通常再描画は入力を消費しません。Dropdownなどの独立オーバーレイは、選択・Escape・外側クリック・明示的な終了まで維持します。
  • ポップアップはWindowより上、Tooltipはカーソルから離した右下に表示します。ホバーの説明は編集やキーボード入力を奪いません。
  • 描画の前後関係とポインターの所有権を合わせ、奥のソケットの余白で手前のノードを掴めなくしません。
  • 接続関係に沿う選択と整列・等間隔配置をコマンドに集約し、別のドラッグモードを増やしません。
  • Frame前の表示位置へ戻る操作は、プログラムのUndoとは分離します。
  • Ctrlホバーの上流表示と、Upstream/Downstream/Connectedの選択を分離します。一時表示した枝を誤ってDeleteすることはありません。
  • 検索結果は毎回現在のモデルから作り、削除済みノードへの古い移動先を再使用しません。AddとFindで別の類似度を実装しません。
  • 一括切断と入力交換は個別接続の連続変更ではなく、コピー上で検証した一つのトランザクションとして公開します。
  • 浮動Windowごとに別の入力・保存方式を増やしません。共通Dock forestでスコープ、タブの唯一性、前後関係、分割・スタック、保存を管理します。表示を閉じても所有する下書きを破棄しません。
  • 画面の合成は、ドッキング済みWindow、後方から前方の浮動コンテナ、共通Popup、Tooltipの順です。ポップアップの当たり判定も親Windowの切り出しで失わせません。
  • Popupの所有Window、Keyboard、native Codeの除外領域は同じ一覧から判断します。Popupの外側クリックで閉じるときも、背面のタブを同時に閉じたり動かしたりしません。設定・検索などのApplication PopupはWindow内のPopupに優先し、TooltipやDocking Guideはfocusを奪いません。
  • Window移動・resizeの取消しと確定は、その最終frameまで入力を所有します。同じEscapeやボタンreleaseを背面のNode編集へ渡しません。
  • ECPのドラッグ・数値編集中は行の論理位置とnative anchorを固定します。同じ値の通常公開では続行し、他の編集やTimelineの時刻変更では古いdraftを取消します。古いoverlay callbackを新しい操作へ流用しません。
  • Dropdown/Drumは一frameにまとめられた長押し回数を保持します。別の段階数やStepへ勝手に変更しません。AltGrのUnicode文字入力と、コピー・貼付などのshortcutも区別します。

今回は追加しないもの#

計算上の型を曖昧にするDot、意味のない専用ノード、Tweeqと重複する値操作、既存ショートカットと衝突するNuke/Houdini固有ジェスチャーは追加しません。Node Ring、別のValue Ladder、タイトルを隠す縮小モードは導入しません。Backdropや新しい上流/下流移動のgestureを、既存の検索・選択・接続元移動と重複する方式で追加しません。Functionへの移動を上流移動の代わりにはしません。

検証と制約#

型に基づく接続、検索からの作成、Knife、挿入、取消し、ロック、密集ソケット、表示変更による非再評価はヘッドレス回帰テストで確認します。AEの通常行と独立オーバーレイは実際のPFイベント入口を使用したモック検証を行います。ただし、これはAE実機でのフォーカス/DPI/複数モニター操作の代わりではありません。

具体的な操作 / コマンド / 接続規則

このページを編集GitHubへのアクセス権が必要です。

CompNode Guide · 日本語製品ドキュメント仕様と実装範囲は各項目で区別しています。

ドキュメントを検索

検索語を入力してください。

    ↑ ↓ で結果を移動、Enter で開く · 検索はこの端末内だけで実行されます。