1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

数学弱者が波に挑戦してみる①

Last updated at Posted at 2024-12-02

はじめに

今回初めての投稿になります!

下記の記事を参考に、ゲームによくある「波」の実装に挑戦するだけの開発日記です!

さっそく実装しながら書いていきます!

頂点を動かすかハイトマップを使うか

どうやら波を表現する方法は2種類あるらしい。
・頂点を頂点・ジオメトリシェーダなどで実際に動かす
・ハイトマップ・法線マップを使って、動いているように見せる

ハイトマップ⇒高さ情報を保持したテクスチャ

とりあえず板ポリ描画

wave1.png

手始めにハイトマップを使ってそれっぽく見せてみようと思う。
が、ハイトマップを法線マップへ変換する作業が必要らしいので
https://cpetry.github.io/NormalMap-Online/
サイト様の力をお借りしてハイトマップを法線マップへ変換

wavenormalmap.png

さっそく適用と行きたいところなんですが、ここであまり知らない概念登場
「接空間」
 自分なりに調べた結果、法線を基準とした座標空間っていう認識になったんですが
 あってるんだろうか。まあ、いったん置いといて

wave2.gif

適用&少しそれっぽく動かしてみる

まだ全然波ではないですね
っていうのも、今現在はUV値を変動させているだけなのでちゃっちく見える。
本来は毎フレーム、ハイトマップを作成⇒法線マップに変換
っていうのをしないといけないらしい。

「「大変」」

ここから少々波について勉強+メモ

・波を表現する際に必要な要素
 「振幅」波の中心から最低・最高どちらかまでの高さ
 「波長」波の最高地点(最低地点)から次の最高地点(最低地点)までの距離
 「位相」平行移動
・ゲームで波を表現する場合sin波がとても重要
・現実では波長を1とした時の最大の波の高さはおよそ1/7
 波長:最大の波の高さ = 1:0.142...
etc.

いったん今日はここまで

次回はハイトマップを動的に生成するところからやります!

開発環境
IDE:VisualStudio2022
使用言語:c/c++
使用ライブラリ:DirectXTex,DirectXMath etc.

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?