![]() |
||||||||||||||
![]() |
![]() |
![]() |
![]() |
![]() |
||||||||||
トコちゃんの修行日誌 2025年6月 |
お仕事中デスクトップ
|
6月15日 水面表示渓流のHeightMapを作成して、水面を表示してみた。クリッピングは上から円柱、球、直方体。 直方体だとクリップ面のガタガタが規則的になって目立つことが多少あります。地形の表現力はどれもほぼ同じです。画面的に面白味があるのが球、ただ木を植えたりすると上部地形が無くなっているので困ります。そうなると円柱あたりが無難な感じ。 奥のクリッピングされた水面が色が濃くなってしまっているのは、地形が無くなりカメラのFar clip plane(遠方の領域面)までの距離で色の濃さを決めているからです。本来なら水面がクリップされた場所までの薄い色であるべきなので、違和感があります。 Zバッファ(距離を書き込んだバッファ)だけをクリップ面で書き込んでみたのですが、Skybox(空地形)が描画されず黒くなってしまい断念しました。対策方法はあるようなのですが大変なので、気になるようだったら不透明度の最大値を制限して、お茶を濁そうかと考えています。 6月12日 HeightMap表示
地形データを全部ボクセル(3D)で持つとさすがに大変なので、HeightMap(高さマップ)で表示してみました。拡大縮小するとガタガタしていたのですが、ミップマップに対応してみたらなんとか使い物になりそうです。拡大してから、洞窟やトンネルなど必要に応じてボクセルデータに切り替えるのが良さそうです。表示時にはボクセルデータになっているので、そのまま保存して、必要に応じて穴を掘るなど編集。 色はテクスチャでの表示もしてみたのですが、この頂点カラーでの着色の方が味があります。 Blenderで水の流れを試した渓流マップがあるので、HeightMapを作成して、水面を加えて表示してみようかと思います。 地質などのデータはどうしても必要ですね。平地、岩場、草地など。これも2Dで、Byteデータ256種もあれば十分かと。昔の2Dマップと同じような方式ですね。 6月5日 GitHub Copilot 加入(AI)便利だから使いまくっていたら、無料分を使い切ってしまい16日まで待たないと使えないことになってしまいました。 ソースコードを選択してコメント(説明文)を考えてもらったり。英語で変数名を考えてもらったり、コードを作ってもらったり。ボタンを押したとき、どちら方向に回転させるのが一般的かとか、あらゆる事を相談できます。 賢い友人です。たまに小さな大ポカをしてくるので注意が必要です。ソースコードのごく一部+ーを間違っていたり、はまったのが、マトリックスの初期化をお願いしたら、行と列が逆で一見正しいので、デバッグで気が付くのに半日かかりましたが・・・、ほんとに頼れる友人です。 月10ドル、加入しました。 6月3日 Burst+Jobシステム改良
マーチング四面体の処理は7.5msほどかかっていたのですが、1.5msほどに短縮しました。出来上がったデータをメッシュに送るための変換は相変わらず10msもかかっています。 地形が変わらなければ計算する必要が無いので、マーチングキュウブの地形値合計が変わらなければ処理をしないようにして処理時間を短縮しました。 地形のスクロールができるようになりました。 最初にシアー変換でひし形にひしゃげてしまっていたデータを並び変え、なるべく直方体に近い形にしました。名付けて千鳥配置(stagger)補正。具体的にはXY軸が2増えるごとに、Z軸を-1ずらします。三角形の頂点がZ=0.5の位置なので三角形2つで1ずれます。 昔のゲーム機のような処理で、スクロールでクリッピング外に出た地形データを前方の地形データで書き換えています。 ここで苦労したのが、千鳥配置の弊害。書き換えが・・・・なんとか解決しました。 あと移動は出来上がったメッシュのトランスホームに移しました。毎回計算していたときは移動分位置に足しこんでいたのですが、データを再利用することになり同じ位置ですむようにした訳です。 |