3/5

日記

2026/03/05

行列

また、各成分の掛け算の和がどうして射影と関係あるのか?

二次元を一次元に変換する時、iとjは[1, -2]のように横に行列になる。
二次元ベクトルv(5)を変換すると、前に5, 後ろに-12進む、結果-7。
(6)

これは内積と同じに見える。

Three.js

流体

dyeの工程が別にいらないことを確認。シンプルに消した。
Outputのフラグメントで、速度を色付しているだけだったんだ。
内容としては、簡単。

BFECC

advectでより柔らかい波にできる。

  1. 現在の位置uvから引いてdt秒前の位置pos0を求める。その位置の速度v0を求める(ここまで同じ)
  2. pos0とv0から、再度dt秒後の位置pos1を求める。po1とuvの差がerrorとなる。
  3. uvからerrorの半分だけ引いた位置をpos2。その位置の速度を求め、dt秒前pos3を求める。
  4. そのpos3の速度を渡す。

問題は、「壁」を設定していないため、流体が端っこで安定しないこと。壁を作る。

vec2 fboSize = resolution.xy;
vec2 px = 1.0 / fboSize;
float inside = step(px.x, uv.x) * step(px.y, uv.y) * step(uv.x, 1.0 - px.x) * step(uv.y, 1.0 - px.y);

...

advected *= inside

よし。流体が安定しました。

できた!

これで画像planeをぼかしたり、流れによって違うものが見えたりといったことができる。

内省

今日は3時から温泉に行った。ずっと夜はほとんどやってないけど、古見さん36巻の只野くんと同じくドリョクしたら一緒に頑張ってる感じで行ける気がする。

流体はできて、嬉しい。12月初めくらいはできなかったから、ガッツポーズが出た。

ランニングを初めたからか、疲労が溜まっている感じがする。

映画とか、楽しみにしていることが多いと気づいた。