[Noise 入門 #45] Web Workers と 3D Noise — 非同期生成と「密度」で空間を定義する
Noise 入門シリーズ第45回。Three.jsでの重いノイズ計算をWeb Workersで非同期化し、60FPSを維持する方法を解説。さらに、オーバーハングや洞窟といった複雑な地形を生み出す「3Dノイズによる密度の数式」の基礎を直感的に学びます。
Noise 入門シリーズ第45回。Three.jsでの重いノイズ計算をWeb Workersで非同期化し、60FPSを維持する方法を解説。さらに、オーバーハングや洞窟といった複雑な地形を生み出す「3Dノイズによる密度の数式」の基礎を直感的に学びます。
Three.jsとノイズ関数を用いて生成した無限地形の上空を、WASD操作で飛行するシミュレーターの実装手法。クォータニオンを用いたジンバルロックのない旋回ロジックや、InstancedMeshによるボクセル雲(CloudChunk)の生成を統合します。
Three.jsのInstancedMeshで生成したボクセル地形を無限に広げるChunk Managerの実装。カメラの移動に合わせてチャンクを動的に読み込み・破棄し、Mapを用いたキャッシュ戦略でパフォーマンスを最適化する、プロシージャル世界の基盤構築を学びます。
Three.jsのInstancedMeshを使って生成したボクセル地形に対し、setColorAtによるバイオームの塗り分け、Mulberry32を用いた文字列からのシード地形生成、DirectionalLightのアニメーションによる昼夜サイクル風の演出を追加する具体的なコードとその仕組みを解説します。
Three.jsのInstancedMeshを活用し、ノイズから生成した地形に色を与えるバイオームの実装と、シード値によるランダム生成、さらに無限の世界を描画するためのチャンク(Chunk)の概念を図解とコードで直感的に解説します。
Three.jsのInstancedMeshを用いて400万個のボクセルを生成し、FPSとGPU負荷を計測。Next.js環境でのパフォーマンスチューニングと、AI生成動画とは異なる「リアルタイムレンダリング」の裏側に迫ります。
Three.jsのInstancedMeshを使ってMinecraftのようなボクセル地形を生成する方法を解説。FBMノイズを利用し、10万個のブロックを60FPSで描画するパフォーマンス最適化の実装を学びます。
Three.js と WebXR を組み合わせ、プロシージャルな太陽系を VR 空間に構築。カメラのリグ構成、コントローラーによる移動、透明度描画のバグ修正など、没入感を高めるための最適化プロセスを詳解。
Noise入門シリーズ第41回、いよいよ第5集「Procedural World編」が開幕。FBMノイズを用いたMinecraftのような無限に広がるボクセル地形の生成原理と、世界を分割管理する「チャンク(Chunk)」の概念を解説します。
GLSLの4DノイズとDomain Warpingを用いて、木星の大赤斑、土星の環、天王星の垂直リング、海王星の大暗斑をプロシージャルに生成。InstancedMeshによる小惑星帯やOrbitControlsの拡張によるシネマティックなカメラ操作も実装し、ブラウザ上に生きた太陽系を完成させます。
これまで錬成してきた地形、雲海、オーロラ、リングなどのシェーダーを統合し、複数の惑星が軌道を描く「ミニ太陽系」をThree.jsで実装。クラスによる星の管理やFlyControlsを用いた宇宙空間の探索など、プロシージャルな宇宙をブラウザ上に展開する集大成となる記事です。
Next.js環境のフロントエンドで、GLSLを用いた美しい「惑星の環(Rings)」をプロシージャルに描画します。1Dフラクタルノイズによる微細な塵の表現と、外積(Cross Product)を活用して惑星本体とリングの影を同期させるFake Shadowの実装アプローチをまとめました。