Upgrade to Pro — share decks privately, control downloads, hide ads and more …

TsukinoEngine SpringBoneについて

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest. →
Avatar for 山﨑愛 山﨑愛
September 28, 2026

TsukinoEngine SpringBoneについて

Demo Stage Summer で登壇した際の登壇資料です。

自作エンジンのTsukinoEngineと、SpringBpne機能について詳しく触れています。

Avatar for 山﨑愛

山﨑愛

September 28, 2026

More Decks by 山﨑愛

Other Decks in Research

Transcript

  1. 1.TsukinoEngineについて/作成モチベーション あらゆる要求を叶えるエンジニアになりたかった 開発ゲームの一例 ・今までは、既存のフレームワークやエンジンを使用して開発をしていた (右画像) ・C++のフレームワークやライブラリ (右上画像は DxLib)ではシェーダーやレンダリングなどの制 約がボトルネックに ・Unityでは機能のブラックボックス化が顕著で、なぜできるかわかってないのになぜか実装が

    できる状況に ・将来は技術研究側に携わりたいのに、アプリケーション側だけの開発を行って内部の仕組み を理解しないのは良くないと思った ・シェーダーが美しくて興味があったのので、レンダリングパイプラインを自分で改造できるよう になりたかった ・まずは自分が欲しい機能の要求に応えられないと、誰かの ”欲しい”にも応えられない。 ・内部構造を理解した状態で、フルスクラッチでゲームを作れることが作成モチベーションだっ た
  2. 1.TsukinoEngineについて/TsukinoEngineの機能 リソース管理 レンダリング オブジェクト管理 物理演算 インポート機能 描画パイプライン エンティティ管理 当たり判定 キャッシュ機能

    PBRシェーダー ECSレジストリ SpringBone アセットシステム トーンマッピング ECSシーン Rigidbody 組み込みアセット シャドウマップ EventBus collisionデバッグ
  3. 4.SpringBoneの物理/慣性 上のボーンが揺れものボーン inertiaKeep = 1.0 - clamp(inertia, 0.0, 1.0) inertiaKeep

    は慣性での残り具合の係数 前フレーム(説明のために直立) アニメーションスキニングのみ 慣性があるから本来はこうなるはず
  4. 4.SpringBoneの物理/Verlet積分 Verlet積分は、減衰・移動・重力を実際に適用する演算 減衰後の維持率を計算 dragKeep = 1.0f - std::clamp(drag, 0.0f, 1.0f)

    速度の算出(減衰考慮) velocity = (currentPosition - prevPos) * dragKeep 速度と重力を考慮し、ノード(ボーン)の位置を再計算 newPos = currentPosition + velocity + gravityStep