[Noise 入門 #10] Procedural Terrain Generation — 数学で大地を隆起させる
Perlin NoiseとFBMをVertex Shader(頂点シェーダー)に適用し、平面をリアルタイムに隆起させて山岳地帯を作ります。単なる波打ちを「山」に変えるRidge Noiseのテクニックや、高度・傾斜に基づくバイオーム塗り分けなど、プロシージャルな世界生成の基礎を実装します。
Perlin NoiseとFBMをVertex Shader(頂点シェーダー)に適用し、平面をリアルタイムに隆起させて山岳地帯を作ります。単なる波打ちを「山」に変えるRidge Noiseのテクニックや、高度・傾斜に基づくバイオーム塗り分けなど、プロシージャルな世界生成の基礎を実装します。
Babylon.jsとWebGPUでMMDモデルを表示する際に直面するシェーダーエラー、Tポーズで固まる問題、そしてアニメーションが途中で止まる「15秒の壁」。これらをbpmxLoaderとフレーム数スキャンロジックで解決し、影とBloomで仕上げるまでの全記録。
2026年版Babylon.js入門。Viteを使用した高速な開発環境の構築から、必要なパッケージのインストール、そしてWebGPUEngineを使用した「Hello World」までの手順をステップバイステップで解説します。
React Three Fiber で自然環境を構築する実装解説。three/addons/objects/Water.js を extend して使用する方法、およびカスタムシェーダーで 3D FBM とレイマーチングを実装し、厚みのある雲を描画する手法を詳細に解説します。
Noise 入門シリーズ第9回。ボリューメトリック・レンダリングの基礎となるレイマーチングの手法を学びます。3D FBM による密度生成、Beer's Law を用いた光の減衰計算など、ノイズを『空間の密度』として扱う技術を体系的に整理します。
Noise 入門シリーズ第8回。静止したノイズを「動き(ベクトル場)」に変換する Curl Noise (回転ノイズ) を解説。スカラー場、勾配、Curl演算子を用いて、発散ゼロ(Divergence Free)の流体挙動をGLSLで実装する方法をまとめます。
54要素の配列管理に挫折した状態から、物理空間での制御へとパラダイムシフト。R3Fの `attach` を用いた動的グループ化や、法線ベクトルと外積による直感的なドラッグ判定ロジックを詳解します。
Next.js + React Three Fiberで、GLTFモデルを横にスライド切替できる3Dギャラリービューアを構築する。モデルごとのスケール差を吸収する正規化処理、Box3による接地、lerpによる滑らかな遷移、UIレイヤー分離設計を解説。
Noise 入門シリーズ第7回。Domain Warping を Shader で実装し、Three.js 上で動かします。理論からGPUコードへの変換、FBMとの融合、strengthパラメータの効果、時間拡張(4D化)までを整理し、ノイズを“世界生成アルゴリズム”として扱います。
Next.js + React Three Fiber を使い、InstancedMesh とカスタムシェーダーで 5万本の草を描画。GPUでの風アニメーション、FBMによる地形生成、疑似法線ライティングまで解説。
Noise 入門シリーズ第6回。Domain Warping(ドメインワーピング)の仕組みを、座標変形という視点から図解で解説。通常ノイズとの違い、FBMとの組み合わせ、strengthパラメータの効果、3D/時間拡張まで体系的に整理します。
Perlin Noise の出力をそのまま使うと“のっぺり”する。その問題を解決し、自然界の複雑さに近づけるのが FBM(Fractal Brownian Motion)。この記事ではアルゴリズムの意味・式の構造・視覚的効果を直感で理解できるように解説します。