ASTROFOX
プラグイン

プラグインリファレンス

Astrofox プラグインのマニフェスト、コントロール、オーディオデータ、uniform、フレームのリファレンスです。

すべてのプラグインは astrofox.plugin.json マニフェストから始まります。

マニフェストのフィールド#

フィールド型説明
apinumberプラグイン仕様のバージョン。1 を使用します。
namestring@author/plugin-name のような名前空間付き ID(必須)。
versionstringプラグインのリリースバージョン。
labelstringメニューとレイヤーパネルに表示される名前。
descriptionstringインストール時に表示される短い説明。
authorstringプラグインの作者または組織。
typestringdisplay または effect。
runtimestringshader または worker。ディスプレイはどちらも使用できますが、エフェクトは shader が必須です。
shaderstringシェーダーランタイム用のフラグメントシェーダーのパス。
entrystringワーカーランタイム用の ES モジュールのパス。
iconstringメニューに表示されるアイコンのパス(任意)。
permissionsstring[]要求する機能。現在は network などがあります。
librariesstring[]ワーカーが要求するホストライブラリ。現在は three のみです。
camerabooleanワーカーディスプレイにホストのカメラコントロールを追加します。
audioobjectプラグインが要求する FFT データと時間領域データ。
defaultPropertiesobject新しいインスタンスごとのプロパティの初期値。
controlsobject宣言的なコントロールパネルのスキーマ。
uniformsobjectシェーダーランタイム用の、プロパティから uniform への対応付け。

パスはマニフェストの URL を基準とした相対パスとして解決されます。公開するファイルには HTTPS を使用する必要があります。開発時は http://localhost も使用できます。

オーディオデータ#

プラグインが必要とするオーディオデータのみを宣言します。

値範囲と意味
fft.bins1〜512 個の正規化された周波数値
fft.minFrequency / maxFrequencyヘルツ単位の周波数範囲
fft.smoothing0〜0.99 の指数スムージング
fft.minDecibels / maxDecibels入力レベルの正規化の上下限
td.samples時間領域の波形サンプル数

FFT の値は 0〜1 の範囲で渡されます。時間領域の値も 0〜1 の範囲で、無音は 0.5 を中心とします。ワーカーディスプレイは FFT データと時間領域データの両方を要求できます。シェーダーディスプレイが受け取るのは FFT と volume のみです。シェーダーエフェクトが受け取るのは volume、time、delta、inputTexture で、FFT や時間領域の配列は受け取りません。再生中と動画の書き出し中には同じ解析処理が使用されます。

コントロール#

対応しているコントロールの種類は、text、number、toggle、checkbox、color、colorrange、range、select、time です。

主なフィールドは次のとおりです。

フィールド用途
label人が読めるコントロール名
typeレンダリングする入力コンポーネント
min、max、step数値の範囲と精度
withRange数値入力にスライダーを表示する
withReactorリアクターでこのプロパティを動かせるようにする
itemsselect 入力で選択できる値
hidden条件付きまたは常に入力を非表示にする

マニフェストは JSON であるため、動的な値には参照を使用します。

ステージの参照には scale を含めることができます。たとえば、{ "$stage": "width", "scale": -1 } はステージの幅を負にした値に解決されます。

uniform の対応付け#

シェーダーランタイムは、プロパティを GLSL の uniform に対応付けます。

color は 16 進数の色を 3 成分のベクトルに変換します。ベクトルの対応付けでは、列挙したプロパティから各成分を読み取ります。

ワーカーファクトリーの入力#

マニフェストの内容に応じて、ワーカーファクトリーは次のものを受け取ります。

入力説明
propertiesマニフェストとインスタンスのプロパティの初期値
seedインスタンスごとに固定される乱数シード
size現在のステージの寸法
libraries要求したホストライブラリの名前空間
rendererthree を要求した場合の共有 Three.js レンダラー

フレームデータ#

render(frame) は次のデータを受け取ります。

フィールド説明
idフレームの識別子
time秒単位の確定的な時間
delta前のフレームからの経過時間(ミリ秒)
playingタイムラインまたはライブ入力がアクティブかどうか
exportingオフラインの書き出しがレンダリング中かどうか
volume正規化された全体のオーディオレベル
seedプラグインインスタンスごとに固定されるシード
fft設定されている場合、要求した FFT 配列
td設定されている場合、要求した時間領域の配列

書き出し中、delta は 1000 / fps に固定されます。再現性のあるアニメーションにするには、time、delta、seed を使用してください。

レンダリング結果#

ワーカーの render() メソッドは次の値を返すことができます。

幅と高さはレイヤーの境界を設定します。任意の origin 値は、トランスフォームの原点を設定します。