Skip to content

UI Metal Panel

odashi edited this page Nov 15, 2026 · 1 revision

金属パネルGUIと描画の再利用

音源仕様・操作 · 素材生成と開発

現行の描画構成を説明します。入力と配置、測定条件と結果も参照してください。

外観

1076×768 pxの金属板へ、銀面と黒い外周を持つノブ、緑色LCDの選択欄、黒いラバー製ボタンを配置する。ロゴとグループ境界は浅い彫り込みとして描く。照明は上側に揃え、ノブとボタンの影は下方向へ落とす。

通常画面

選択状態 · 操作中

Vol/Panの操作領域とLimiterの間隔は24物理pxとする。Offのエフェクトスロットでは薄いロゴ・Mix・区切り線を残す。Mixは0位置の表示専用で、各エフェクトの保存済みMixは保持する。

素材はPythonプログラムから生成し、生成済みRGB/RGBAをプラグインへ埋め込む。SVG原版はartwork/、生成器はscripts/textures/に置く。ノブやロゴは等倍、LCDとボタンは外周を固定する9分割で描く。

選択リストとボタン

ノブの値表示と選択リストは、不透明度80%の青緑色背景と白文字を共用する。選択リストには枠線と影を付けず、選択欄と幅を揃える。現在値とマウスが重なった行は背景の明度で区別する。

選択リスト

状態と操作 結果
閉じた選択欄を押し、その内側で離す リストを開く
開いた選択欄を押し、その内側で離す 選択を変えず閉じる
項目を押し、その項目の内側で離す 選択して閉じる。同じ値なら変更通知を送らない
項目を押したまま別の項目へ移動して離す 選択を確定しない
リストと選択欄の外側で押す、または外側へ移動して離す 選択を変えず閉じる
重なっていない別の選択欄を操作する 古いリストを閉じ、新しいリストを開く
Esc・フォーカス喪失 閉じて押下状態も取り消す。その後の解放で開き直さない

Limiter・Reset・交換ボタンも、押下した要素の内側で解放したときに確定する。移動距離と押下時間を取消条件にしない。クリックの移動・時間制限を外し、確定時に解放位置を判定する。静止した長押し中に再描画が発生しなくても同じ結果になる。リストの外側の入力は項目を処理する前に判定し、移動と解放が同じフレームへ届いた場合も誤選択を防ぐ。

押下元とリストの開閉状態はeguiに保持し、独自の重複状態を追加しない。取消時はeguiのポインター状態と未配送のボタン入力を消去する。

固定表示と動的表示

順序 内容 更新条件
固定背景 金属板、ロゴ、ノブ本体と影、目盛り、ラベル、彫り込み線 配置・Off状態・画像寸法の変化
動的ノブ 黒い指針と緑色の発光弧 ノブごとの整数tick・位置・表示倍率の変化時にメッシュを生成
固定前景 Offの50%背景合成、LCD、ボタン、メーターの未点灯面 固定背景と同じ条件
動的前景 選択文字、ボタンの押下・点灯、メーター、オーバーレイ、ポップアップ 表示状態の変化

2層に分ける理由は、Offの背景合成をノブの指示部より後、LCDの選択文字より前に保つため。個々の部品を別々に半透明にして影が透けることを避ける。押下中は固定面の未押下ボタンと影を消してから、下へ1px移動した面を描く。

固定面はRGBA8のGPU画像として保持し、画面更新時に再利用する。1076×768 pxの2枚で約6.3 MiBを使用する。FBOを利用できない場合は同じ固定メッシュを保持して描く。フォント画像の寸法が変わったときは、固定文字のUVも更新する。GL資源は画面ごとに所有し、その画面のGLコンテキストが有効な間に作成・解放する。

FixedDisplayが固定図形の記録と動的前景の順序を管理し、SurfacesがGPU画像を管理する。KnobIndicatorsは値ごとの指示部を保持する。操作判定とVST3の編集通知は既存の経路を使う。静止中は継続的な再描画を要求せず、値・メーター・入力の変化時に描く。

実装はsrc/editor/、素材の再生成は開発手順を参照してください。

Clone this wiki locally