本文へ移動

Geometry Dashboard

Geometry Dashboard は、幾何学的な仮想オブジェクトを osu! エディター上に重ねて表示する強力なツールです。仮想の点、線、円にオブジェクトをスナップさせることで、通常では作成が難しい、あるいは不可能な幾何学的に正確なパターンを作成できます。

プラットフォームの対応状況

ライブエディターオーバーレイに Windows 固有の連携機能を使うため、Geometry Dashboard の利用には Windows が必要です。

ヒント

このツールを利用するには、Mapping Tools の Preferences でユーザー設定ファイルを指定してください。

基本概念​

Geometry Dashboard は次の手順で動作します。

  1. osu! エディターの現在の状態を読み取る。 現在表示中のヒットオブジェクト、エディターの時刻、エディターウィンドウの位置などが含まれます。
  2. ヒットオブジェクトを基に仮想オブジェクトを生成する。 設定可能なジェネレーターを使って、ヒットオブジェクトから仮想の点、線、円を作成します。
  3. 生成した仮想オブジェクトを osu! エディター上のオーバーレイに表示する。 生成された図形を確認し、カーソルをスナップできます。

ユーザーインターフェイス​

Geometry Dashboard のウィンドウはいくつかのセクションで構成されています。

  • Search: ジェネレーターの一覧を検索して絞り込みます。
  • Toggle Buttons: 各種機能を一括で切り替えます。
    • Select All
    • Lock All
    • Usability All
  • Savestates Button: Savestates ウィンドウを開きます。
  • Preferences Button: Preferences ウィンドウを開きます。
  • Generators List: 利用可能なジェネレーターの一覧を表示します。ジェネレーターの有効、無効を切り替えたり、パラメーターを設定したりできます。

仮想ジオメトリ​

このツールの中心となるのが仮想ジオメトリです。エディター上の実際のヒットオブジェクトではなく、マッピング中にカーソルを合わせて正確な位置に配置するための点などとして存在します。

仮想ジオメトリの状態​

仮想ジオメトリには、オン、オフを切り替えられる独自の状態がいくつかあります。

  • Selected: オブジェクトをアクティブにし、新しいオブジェクトの作成に使えるようにします。仮想オブジェクトにカーソルを合わせて選択ホットキーを押すと、選択状態を切り替えられます。選択中は別の色と、輪郭に沿った光彩で強調表示されます。
  • Locked: ロックすると、ジェネレーターや元のオブジェクトがなくなっても仮想オブジェクトが消えません。誤ってジオメトリを削除したくない場合に便利です。ロックされた仮想ジオメトリは灰色で表示されます。
  • Usable: 有効にすると、ジェネレーターがこの仮想ジオメトリを使って別のジオメトリを生成できます。無効の場合、ジェネレーターはこのオブジェクトを無視し、関連するジオメトリから新しいオブジェクトを生成しません。使用できない仮想オブジェクトは暗く表示されます。
  • Relevancy: ジオメトリの関連度を 0 から 1 の値で表します。値が高いほど不透明に表示されます。

ジェネレーター​

ジェネレーターは Geometry Dashboard の中核で、ヒットオブジェクトやほかの仮想オブジェクトから新しい仮想オブジェクトを作成します。

ジェネレーターの基本的な処理の流れ​

ジェネレーターは次のように動作します。

  1. 入力の選択: 各ジェネレーターには、必要な入力型を指定する依存関係と、追加のルールを定める入力述語があります。入力述語は、仮想オブジェクトがこのジェネレーターの入力として使われるために満たすべき条件を指定します。Geometry Dashboard は、依存関係に一致し入力述語を満たすオブジェクトを前のレイヤーから探します。たとえば、オブジェクトを選択状態にする必要があるか、特定の関連度が必要かなどを指定できます。
  2. ジオメトリの生成: 選択された入力オブジェクトの組み合わせごとに、ジェネレーターのメソッドを使って仮想オブジェクトを新しく生成します。メソッドは入力オブジェクトを受け取り、1 つ以上の新しい仮想オブジェクトを返します。
  3. レイヤーへの配置: 新しく生成された仮想オブジェクトの組み合わせは、それぞれ新しいレイヤーに配置されます。レイヤー数は Preferences の Inception Level で設定できます。下位のレイヤーにある仮想オブジェクトは、次の複雑なレイヤーで作成される仮想オブジェクトに影響します。
  4. 更新: Geometry Dashboard の再計算が必要な変更が発生するたびに、Update Mode の設定に従って最初のレイヤーのオブジェクトが再生成されます。次に 2 番目の複雑なレイヤーが更新され、以降も同様に続きます。

不要なオブジェクトが増えすぎないよう、同じレイヤーにある 2 つのオブジェクトが十分に近い場合は統合して、関連度を合算します。統合する距離は Preferences で変更できます。

ジェネレーターの一覧​

Geometry Dashboard で利用できるジェネレーターは次のとおりです。

  • Basic Generators: ヒットオブジェクトから仮想オブジェクトを直接作成します。どれも基本オブジェクトの平均時刻を仮想オブジェクトの時刻に使います。
    • Points on Circles and Slider Heads: 円やスライダーの開始位置に仮想点を作成します。
    • Points on Slider Ends: スライダーの最終位置に仮想点を作成します。
    • Points on Slider Anchors: スライダーのアンカー (赤と白) に沿って仮想点を作成します。
    • Points on Last Anchors: スライダーの最後の曲線点に仮想点を作成します。
    • Lines on Linear Sliders: スライダーの種類が Linear の場合、Pos から Curve Point まで仮想線を作成します。時刻と関連度は元のスライダーと同じです。
    • Points on Blanket Centers: 円形タイプのスライダーの中心に仮想点を作成します。時刻と関連度は元のスライダーと同じです。
    • Circles on 3-Point Sliders: スライダーのアンカーを基に、Blanket や Perfect カーブ用の円を作成します。時刻と関連度は元のスライダーと同じです。
    • Points on Slider Paths: スライダーのパス上に多数の仮想点を作成します。Point Density の設定で点の数を変更できます。このジェネレーターは出力の計算に追加の処理を必要とします。
  • Intermediate Generators: 動作には Basic Generators が必要です。形を作ったり、ガイドラインを作ったりするのに使います。
    • Tangent Circles on Circle: 最初の入力円にちょうど 1 点で接する仮想円を作成します。
    • Circles by Two Points: 2 つの仮想点を受け取り、それぞれの点を中心とし、2 点間の距離を半径とする仮想円を 2 つ作成します。
    • Equilateral Triangle from Two Points: 2 つの仮想点を受け取り、それぞれの側に点を追加して正三角形を 2 つ作成します。
    • Equilateral Triangle from Two Points (Type II): 通常の Triangle Generator と同様ですが、三角形を構成する点の位置が異なります。
    • Square from Two Points: 2 つの仮想点を受け取り、それぞれの側に点を追加して 1 つの正方形を作成します。
    • Square from Two Points (Type II): 2 つの仮想点を受け取り、それぞれの側に点を 2 つ追加して合計 2 つの正方形を作成します。
    • Line by Two Points: 2 つの仮想点を結ぶ仮想線を作成します。
    • Average of Two Points: 2 つの仮想点の平均位置に仮想点を作成します。
    • Average of Three Points: 3 つの仮想点の平均位置に仮想点を作成します。
    • Scale & Rotate around a Fixed Point: 固定された仮想点の周りで任意の仮想オブジェクトを回転、拡大縮小します。角度、スケール、固定点の選択条件を設定できます。
    • Parallel Lines: 線と点を受け取り、その点を通り線と平行な仮想線を作成します。
    • Perpendicular Lines: 線と点を受け取り、その点を通り線と垂直な仮想線を作成します。
    • Bisector of Angles: 2 つの仮想線を受け取り、交点に角の二等分線を作成します。
    • Bisector of Two Points: 2 つの仮想点の垂直二等分線を作成します。
    • Tangent Lines on Circle: 仮想円と点を受け取り、その点を通って円の両側へ伸びる接線を作成します。
  • Advanced Generators: 高度な再帰パターンの作成に使う、追加設定が必要な特殊ジェネレーターです。
    • Intersection Points: 2 つの仮想線または円を受け取り、その交点ごとに仮想点を作成します。ほかの幾何学生成方法と組み合わせると便利です。交点の特定には計算負荷がかかります。エディター上で複雑な図形を複数表示するとパフォーマンスが大幅に低下する場合があるため、注意してください。
    • Successor of 2 Points: 2 つの仮想点を受け取り、同じ速度で進んだ次の仮想点を計算します。Points on Slider Paths と組み合わせると、曲線をより正確に予測できます。
    • Successor of 3 Points: 3 つの仮想点を受け取り、角度と速度変化を保った次の仮想点を計算します。
    • Successor of 3 Points Reversed: 3 つの仮想点を受け取り、速度変化を保ち、反対向きの角度で次の仮想点を計算します。
    • Successor of 4 Points: 4 つの仮想点を受け取り、角度、角度変化、速度変化、速度変化の変化を保った次の仮想点を計算します。
    • Scale & Rotate around a Fixed Point: 固定された仮想点の周りで任意の仮想オブジェクトを回転、拡大縮小します。角度、スケール、固定点の選択条件を設定できます。
    • Reflection across a Line: 仮想線を対称軸として、任意の仮想オブジェクトを反転します。

ジェネレーターの設定​

各ジェネレーターには、動作を制御する設定があります。

  • Active: ジェネレーターの有効、無効を切り替えます。無効の場合、仮想オブジェクトを作成しません。
  • Sequential: 連続するオブジェクトだけを入力として使います。有効にすると、時間的に連続する仮想オブジェクトの組み合わせだけを生成します。ジオメトリの数が大幅に減るため、表示が複雑になるのを防げます。
  • Deep: 直前のレイヤーだけでなく、条件に合うそれ以前のすべてのレイヤーも検索します。
  • Relevancy Ratio: このジェネレーターが作成する仮想オブジェクトの基本関連度 (0〜1) です。入力の関連度に応じて、生成されたオブジェクトの実際の関連度は変化します。
  • Generates Inheritable: オンの場合、生成されたオブジェクトを次のジェネレーターで使用できます。オフの場合、ほかのジェネレーターは生成されたオブジェクトを使用できません。
  • Input Selection Collection: ジェネレーターの入力に使う仮想オブジェクトの選択条件です。詳しくは入力選択の詳細をご覧ください。

ジェネレーター固有の設定​

一部の高度なジェネレーターには、独自の設定があります。

  • Circle from Single Point:
    • Radius: 円の半径。
  • Points on Slider Paths:
    • Points Density: スライダーパス上の osu! ピクセルあたりに生成する点の数。
  • Scale & Rotate around a Fixed Point:
    • Angle: 回転角度 (度)。
    • Scalar: 等方的な拡大縮小率。
    • Origin Input Selection: 回転の中心として使う仮想オブジェクトの追加条件。
    • Other Input Selection: 中心の周りで変換するオブジェクトの追加条件。
  • Reflection across a Line:
    • Axis Input Selection: このジェネレーターの軸として使う仮想オブジェクトの追加条件。
    • Other Input Selection: 軸を基準に反転するオブジェクトの追加条件。

入力選択の詳細​

入力選択は、ジェネレーターが計算対象とする仮想オブジェクトを制御する基本的な仕組みです。各ジェネレーターが必要とする入力型 (点、線など) を定義し、オブジェクトのプロパティに基づく入力述語で選択を細かく調整します。入力選択を適切に設定しないと、関係のない仮想オブジェクトが大量に作られたり、必要なオブジェクトが作られなかったりします。

選択述語コレクションは、複数の選択述語をまとめたものです。仮想オブジェクトが入力として選ばれるには、述語のうち 1 つを満たす必要があります。

Input Selection にカーソルを合わせてプラスボタンを押すと、選択述語を追加できます。仮想ジオメトリの生成条件をさらに絞り込む設定が表示されます。

  • Need Selected: オンにすると、選択状態の仮想オブジェクトだけを入力として使います。選択中のオブジェクトは最初にカーソルが合うため、作成対象を細かく制御できます。
  • Need Locked: オンにすると、ロックされたオブジェクトだけをジオメトリの生成に使います。ロックされていないオブジェクトは認識されません。ほかのジェネレーターをロックしながら一部のジェネレーターを使う場合に便利です。
  • Need Generated By This: 仮想オブジェクトがこのジェネレーターで生成されたかを確認します。適切に設定すると、必要なジオメトリだけに生成範囲を絞れます。
  • Need Generated Not By This: 逆のフィルターです。このジェネレーター以外が生成した仮想オブジェクトだけを対象にします。
  • Min Relevancy: 入力オブジェクトに必要な関連度の最小値です。関連度は 0〜1 で、0 にするとこの条件は無効になります。

Preferences​

Geometry Dashboard の Preferences ウィンドウでは、ツールの動作や表示をさまざまにカスタマイズできます。

  • Hotkeys:
    • Snap Key: 押している間、カーソルを仮想オブジェクトにスナップさせるキー。
    • Select Key: 押している間、仮想オブジェクトを選択するキー。
    • Lock Key: 押している間、仮想オブジェクトをロックするキー。
    • Usability Key: 押している間、仮想オブジェクトの使用可能状態を切り替えるキー。
    • Refresh Key: ルートレイヤーのヒットオブジェクト一覧をすぐに更新するキー。
  • Offset: エディター画面に対する仮想オブジェクトの位置を調整します。拡大率や位置のずれを直す場合に使います。
    • Left: エディターの左端に対するオフセット。
    • Top: エディターの上端に対するオフセット。
    • Right: エディターの右端に対するオフセット。
    • Bottom: エディターの下端に対するオフセット。
  • Complexity: 生成する再帰レイヤー数を指定します。パフォーマンスの調整に使えます。
    • Inception Level: 基本のヒットオブジェクトを基に生成するレイヤー数。
  • Downkey: 表示する仮想オブジェクトを切り替えます。
    • Everything: ヒットオブジェクト、その子、親を含むすべての仮想オブジェクトを表示します。
    • Parents and parents of parents: スナップ先オブジェクトの親と、さらにその親を表示します。
    • Direct parents: スナップ先オブジェクトの直接の親だけを表示します。
    • Children and children of children: スナップ先オブジェクトの子と、さらにその子を表示します。
    • Direct children: 直接の子だけを表示します。
  • Upkey: Snap Key を押していない間に表示する仮想オブジェクトを切り替えます。
    • All visible: Selection の設定に従って、ヒットオブジェクトをすべて表示します。
    • Nothing: Snap Key を押していない間はすべてのオブジェクトを隠します。
  • Selection: 仮想オブジェクトの生成に使うヒットオブジェクトを切り替えます。
    • All visible: 利用可能なヒットオブジェクトをすべて使います。
    • Visible or selected: 選択中のヒットオブジェクトがないときは表示中のものを使い、選択中のものがあればそれらを使います。
    • Selected only: エディターで選択中のヒットオブジェクトだけを使います。
  • Updating: 仮想オブジェクトが更新されるタイミングを切り替えます。
    • Any change: 変更が起きるたびに更新します。
    • Time change: エディターの時間が変更されたときに更新します。応答性を犠牲にしてパフォーマンスを上げる設定です。
    • osu! activated: 現在の osu! ウィンドウがアクティブになったときに更新します。
    • Hotkey down: 更新ホットキーが押されたときに更新します。
  • Behavior: Geometry Dashboard の追加動作を設定します。
    • Minimal diff: 仮想オブジェクトを統合する最小距離。
    • Keep running: ほかのツールを開いている間も Geometry Dashboard を実行し続けます。
    • See playfield: エディター上にプレイフィールドの境界を重ねて表示します。
    • Debug: エディターの境界をエディター上に表示します。これを有効にしてもエディターが見えない場合は、エディターが範囲外にあります。

仮想ジオメトリの表示設定​

エディターに表示する仮想オブジェクトは、色、不透明度、太さ、線種を種類ごとに設定できます。表示が見やすくなります。

  • Color: 輪郭線の色です。HEX 値をクリックすると、カラーピッカーにコピーできます。
  • Opacity: オブジェクトの透明度。
  • Thickness: 仮想オブジェクトの輪郭を作る線の太さ。
  • Dash: 輪郭線を破線にするか、実線にするかを設定します。

Savestates​

Savestates はホットキープロファイルのように機能します。すべてのジェネレーターや Preferences の設定を個別に変更する代わりに、プロファイルをすばやく切り替えられます。Savestate にホットキーを割り当てると、さらにすばやく切り替えられます。

新しい Savestate を作るには、プラスアイコンを押します。名前とホットキーを設定できます。保存ボタンと読み込みボタンを使って、現在の設定を保存したり変更したりできます。