Toucanバーチャル博物館
VRML図鑑 3DCG 展示室   開発日誌 お問い合わせ

トコちゃんの修行日誌 2025年12月

12月24日 大改造

以前の軌跡

以前の軌跡、滑らかな方向転換です。ゆったりした方向転換はこれで良いのですが、急激な加速や方向転換用に大改造をすることにしました。 

大改造軌跡

とりあえず、軌跡のテスト。

方向転換時には加速せず、振り向きは移動速度とは関係なく最大で振り向いてから加速しています。

大改造しているところは、重心です。以前は重心を口元にしてそこを引っ張っている感じでしたが、文字通り重心のボーンを重心にしました。それで振り向き時の鼻先の軌跡(赤)が大きく先に振れています。

なんとかなりそうな感じになってきました。

ついでにロジックの見直しもしようかと思います。Steering Behaviorsという旋回しながら追いかける動きのロジックがあるので、試してみようかと考えています。自前のプログラムが複雑すぎるので。

沢山の魚や動物を動かすとなるとUnityのECSに移植とかも考えていかないと。魚の群れとか。

12月21日 魚の泳ぎ調べ

魚のターン

赤鼻先、青胴体中央、黄色背びれで軌跡を描いてみました。青色を見ると45度ほどの方向転換ですが、やはり尾びれで反動を得て頭を振り、蹴っています。その為、尾びれは胴体の軌道から若干ずれて遅れています。赤鼻先はターン最初で一気に方向を見定める感じですね。 

160度ターン

160度ほどの方向転換でも、基本的に同じですね。こんなに曲がるんだ。赤鼻先はおおきく振れますが、胴体は鋭角に曲がっています。 

今の泳ぎのプログラムも大きく間違っている訳ではないですが、少し手直ししてみます。方向転換が素早く、回転後に一気に加速する感じですね。

12月20日 魚の泳ぎ

視点はプレイヤー任せで自由に変えられるようにして、キャスティング時は竿に合わせてズームアウト、キャストして着水したら仕掛けにズーム。テストしてみたら意外と問題なくいきそうです。調整に時間がかかっていました。

ここからは魚が居た方が良さそうなので、魚にとりかかります。

魚のボーンの計算をスプライン曲線で代用できないかと試したのですが、制御点が少ないとコントロールが難しく、点を増やすとスプライン曲線にする意味が無くなる。この例では5点で回転させています。

プログラム的には数十行が数行で済むのですがスプライン曲線は諦めるか? 

スプライン

 

これは停止状態からの振り返りをキャプチャした画像です。

気が付いたのですが、今のプログラムでは少し大周りでターンしています。、ターンと同時に急速に加速しているのでオーバーランしてこんな感じです。スプライン曲線の方が移動線に沿っています。

YouTubeで魚の泳ぎを観察してみたところ、「体をくねらせターン、その尾びれを伸ばして急加速」って感じですね。 

泳ぎのコントロールを改良してみますか。

12月6日 若干改善

ギザギザ

クリップされた地面を強制的に水平(0)にしてみました。

12月5日 堂々巡り

ギザギザ

問題なく処理できそうな気でいたのですが、断面のステンシル作成で新たな問題が。

クリップされた地面を描画すれば断面のステンシルになるのですが、その見えない地面がガタガタだとこんな感じ。手前で盛り上がっている場合。

せめてポリゴンが水平(同じ高さ)になるような処理が必要かもしれません。とりあえず、見なかったことにしてすすめます。 

<追記>

GPUクリッピング

若干の問題を抱えつつ、なんとか出来ました。

ポリゴンをあらかじめ今までと同じ円柱状に作成し、そのポリゴンから断面用のステンシルを作成しています。

GPUクリッピングでは1マス小さい円柱で再度クリッピングすることで、周囲のギザギザを無くしています。

そのため、マップが2マスほど小さくなってしまいました。エッジがシャープすぎるのが、こんどは気になっています。

処理に多少余裕があるので、縦横ボクセルサイズを2増やしてみたり、手前で地形が盛り上がると、断面がギザギザになるので、円周のあたりで少しなだらかに削ってみたり、いろいろやってみます。

12月4日 GPUクリッピングに挑戦

GPUクリッピング

GPUでクリッピングまでは出来ました。やっぱりきれいです。この方が良いにきまっていますね。

この後側面を描き足す処理が必要です。手順としては、クリップされた側面をステンシルバッファに描きます。地面と水面それぞれ。地面の上に水面があるので地面の描画を優先にすれば大丈夫かな。

その後、地面ステンシルに地中円柱を描画、水面ステンシルに水断面円柱を描画。

これで出来るかな?

シェーダーグラフではステンシルを書き込めないようで、さっそく難関が待ち構えていました。

12月2日 山上湖

山上湖

マップが渓流だけだったので、山上湖を試しに入れてみました。

クリップした描画で広さが表現しにくいかと気にしていたのですが、それなりに広い湖ですね。水中の観察も良い感じにできそうです。

渓流はごつごつした地形なので、クリップ面のガタガタをそれほど気にしていなくて、マーチングキュウブの味でぬるぬるポリゴンが生えてくるような感覚で、味だと考えていたのですが、これでは駄目ですね。

レンダリング時にGPU(シェーダ)でSPHEREやCYLINDERクリッピングを行う方法に変えようかと思います。処理も軽くなります。

ただ、地層の構造などボクセルマップのような柔軟な表現が難しくなります。洞窟探検や地面を掘りすすめてお宝を発掘とか。

../toucan/TocoDiaryJ.html