Skip to content

sandboxes

最終更新日時: 2025年08月25日 12:57

  • nothing
  • rtpで受信したMIDIをWeb MIDI API経由でTypescriptで受信、three.jsのアニメーションに反映させるコード
  • html.ts/g-sandbox

  • attractor/repellorを作って、そのポテンシャルを作って、ポテンシャル値に応じた背景色をHSVで塗る
  • 等高線を白色で作成し、fract(beatTime)で移動させる)。ちゃんとしたビートになっていないが
  • UIを表示してパラメータ変更などする
  • 等方的なポテンシャルに三角関数+ノイズで非等方的に
  • ノイズ関数のutility
  • hide/UIのボタンで画面キャプチャできる。ダブルクリックもしくはスマホ2点ポイントでUI再表示。これは再利用が必要
  • full screen quadのSDF
  • 図形を表す関数を作成
  • map関数を
  • 静止画生成に特化
  • SDFの基本を
  • Boidsとは、同じオブジェクトをまるでその単体がたくさんいるように動かしてモブを作り出す手法をいう
  • 並列処理には、GLSLを用いてPing-Pongバッファを利用
  • Boidsのアルゴリズムは3つの原則に基づくベクトル加算により個体の運動ベクトルを更新する
  • GLSLではuniform sampler2Dで入力テクスチャで前フレームを受け取る
  • 各ピクセルでBoidの状態を計算しgl_FragColorに次の状態を書き込む
  • フレームごとにAとBを入れ替え
  • 各Boid ii は位置ベクトル p_i\vec{p}\_i と速度ベクトル v_i\vec{v}\_i を持つ
  • 近傍Boidとの相互作用により加速度ベクトル a_i\vec{a}\_i を更新
  • 近傍集合を N_iN\_i とする
acoh=kc(1NijNipjpi)\vec{a}_{\text{coh}} = k_c \cdot \left( \frac{1}{|N_i|} \sum_{j \in N_i} \vec{p}_j - \vec{p}_i \right) aali=ka(1NijNivjvi)\vec{a}_{\text{ali}} = k_a \cdot \left( \frac{1}{|N_i|} \sum_{j \in N_i} \vec{v}_j - \vec{v}_i \right) asep=ksjNipipjpipj2+ε\vec{a}_{\text{sep}} = k_s \cdot \sum_{j \in N_i} \frac{\vec{p}_i - \vec{p}_j}{\|\vec{p}_i - \vec{p}_j\|^2 + \varepsilon}
  • 最終的な加速度と速度・位置更新:
ai=acoh+aali+asepviclamp(vi+ai,vmin,vmax)pipi+vi\vec{a}_i = \vec{a}_{\text{coh}} + \vec{a}_{\text{ali}} + \vec{a}_{\text{sep}}\\ \vec{v}_i \leftarrow \text{clamp}(\vec{v}_i + \vec{a}_i, v_{\min}, v_{\max})\\ \vec{p}_i \leftarrow \vec{p}_i + \vec{v}_i
  • k_c,k_a,k_sk\_c, k\_a, k\_s:各原則の重み係数
  • ε\varepsilon:ゼロ除算防止項