3/24
2026/03/24
GLSL
ドメインワープ
関数を評価する座標そのものを、別の関数で歪ませてから使う手法。
Three.jsJourneyでもよくあった。positionをnoiseで歪ませてから別の関数で使用するみたいな。
今まで使ってたテクニックが、ドメインワープやらフラクタルノイズやら名前があったのが、なんか嬉しい。
フラクタル
部分を拡大すると全体と同じ形が現れる「自己相似」な図形。
シェーダーでは、UV座標を折り返し、ループの中でずらしたりして対象な図形を描画。
繰り返すたびに空間が細かく分割され、フラクタル模様になる。
Three.js
Matrix4.decompose / compose
- compose: 「位置・回転・スケール」がバラバラに分かれているときに、1つの4×4行列にまとめる
- decompose: 1つの4×4行列から、「位置・回転・スケール」を取り出す。
通常はmesh.position / mesh.quaternion / mesh.scale を更新して updateMatrixWorld() させる、という流れが基本。
decomposeも同様で、行列しか持っていない/行列からしか取れない状況で初めて使う。
decompose使用例
よくわからなかったので使用例で
const wm = mesh.matrixWorld.clone();
wm.decompose(pos, quat, scl);これで、空のpos,quat,sclにwmから計算された値が上書きされる。
BufferGeometry.toJSON()
ジオメトリをjsonでシリアル化。
戻すときは
const parsed = JSON.parse(serialized)
const loader = new THREE.BufferGeometryLoader();
return loader.parse(parsed as object);
内省
あまり意味のない仕事かなと思っていても、思わぬ発見があるものだ。
つまり意味のない仕事はない...?
いや、皿洗いしていたとき何の実りもなかったな。
昨日休んだからだろうか、勉強したい意欲が湧いてくる。
違うプログラミング言語とかやってみたいもんね。
オフって大事なんだね。
It is important to take time off. isn't it?