Bevyでデクストップマスコットを作る#2

デスクトップマスコット
VRMのライブラリ本題に入る前に、どうしてもアウトライン描画周りのバグが気になったため修正しました。
仕様書によると、transparentWithZWrite
がtrueの時かつアルファモードがブレンドの時は深度バッファの書き込みをオンにするようです。
あと固有のレンダリングの順番が決められていたためそれに合わせるように修正しました。
後他にもアウトラインパスを色々と修正しました。
before | after |
---|---|
![]() |
![]() |

ついでにpreludeモジュールの定義とかもしっかりと行い0.2.0としてリリースする予定です。
それが終わったらようやくまともにVRMが描画できるようになるため、このアプリの開発に戻れます...!長かった...いや本当に、UnityとかだったらUniVRMとかで済むのでしょうがマイナーなエンジンだとこういうところがきついですね。まぁこのライブラリ開発も結構楽しめたのでいいのですが。

rust-fmtを使うと以下のようなフォーマットになるの好きじゃない...!
app.add_plugins((VrmaRetargetingBonePlugin, VrmaRetargetExpressionsPlugin))
.add_systems(Update, request_redraw.run_if(playing_animation));
こうなって欲しい。
app
.add_plugins((
VrmaRetargetingBonePlugin,
VrmaRetargetExpressionsPlugin,
))
.add_systems(Update, request_redraw.run_if(playing_animation));

色々と細かい修正とかしまくってようやくv0.2.0のリリース完了!
ようやくホムンクルスの開発作業に着手できます。
現状ほとんどプロトタイプのような感覚で作っていまして、そろそろ仕様を練って本格的に作っていきたいのですが、その前に3点ほどやりたいことがあります。
1点目は奥行きの表現ができるようにすること。
2点目はドラッグがうまく機能しない時があるので修正
3点目は座っている時に前にウィンドウが出てきたら移動する
まずは1点目から考えます。
現状正投影カメラというものを使っていまして、ざっくりいうと遠くても近くても同じ大きさになります。
ですが、デスクトップメイトみたいにドアップで表示されるようにしたいので奥いきっぽいものを実装します。
とりあえず単純にZの大きさによってスケールを変更する方法で試してみます。

スケールを挙げるとスプリングボーンの挙動がおかしくなる...
一旦保留
ただ、HipsのZ座標をマスコットのスケールと同期させることでVRMAを介してスケール調整ができることまでは構想できました。

丸一日かけてボーンアニメーションのトランジションを実装していました。(大変だった)
現在再生中のVRMAから別のVRMAを再生する際に次のポーズまでを自然に補完できるようになりました。
ただし、遷移するVRMAの初期ポーズがそれぞれ違う場合うまく補完できていません。

なぜこんなことをやっていたのかというと、ドラッグ時のアニメーションを滑らかにしたかったからです。
この1秒にも満たない瞬間のために1日を潰しました...。