ゲーム開発
Unity
UnrealEngine
C++
Blender
Houdini
ゲーム数学
ゲームAI
グラフィックス
サウンド
アニメーション
GBDK
制作日記
IT関連
ツール開発
フロントエンド関連
サーバサイド関連
WordPress関連
ソフトウェア設計
おすすめ技術書
音楽
DTM
楽器・機材
ピアノ
ラーメン日記
四コマ漫画
その他
おすすめアイテム
おもしろコラム
  • ゲーム開発
    • Unity
    • UnrealEngine
    • C++
    • Blender
    • Houdini
    • ゲーム数学
    • ゲームAI
    • グラフィックス
    • サウンド
    • アニメーション
    • GBDK
    • 制作日記
  • IT関連
    • ツール開発
    • フロントエンド関連
    • サーバサイド関連
    • WordPress関連
    • ソフトウェア設計
    • おすすめ技術書
  • 音楽
    • DTM
    • 楽器・機材
    • ピアノ
  • ラーメン日記
    • 四コマ漫画
      • その他
        • おすすめアイテム
        • おもしろコラム
      1. ホーム
      2. 20251130_01_houdini_otis_simulation

      【Houdini21.0】Otisによる筋肉シミュレーションと筋肉情報転送機能の使い方【Otis Muscle and Tissue Simulation】

      Houdiniアニメーション筋肉シミュレーションOtis
      2025-11-29

      ぷらずも
      ぷらずも
      みなさんこんにちは! ぷらずもです。
      エレキベア
      エレキベア
      こんにちクマ~~~
      ぷらずも
      ぷらずも
      今回紹介するのはHoudiniの筋肉シミュレーションです! その中でもHoudini21.0で正式リリースとなった Otisシミュレーション 周りを中心に触りつつ使い方をまとめてみようと思います。
      エレキベア
      エレキベア
      筋肉シミュレーションクマか・・・ なんか難しそうクマね
      ぷらずも
      ぷらずも
      使用用途も限られるし、設定が複雑そうなイメージがあるからちょっと敷居が高いのはあるよね・・・。 ただOtisシミュレーションに関してはサンプルも用意されているので、とりあえず触って試してみるのはすぐに出来たりします。
      ぷらずも
      ぷらずも
      今回は自分も含め初めて触る人向けに、細かい設定などは抜きにして使い方やイメージがざっくり伝わる ように書いていこうと思います。
      エレキベア
      エレキベア
      楽しみクマ~~~~
      ぷらずも
      ぷらずも
      なお、今回はHoudiniのバージョンは以下を使用しました。 21.0.440だと一部不具合が残って いたりしていたので、極力新しいバージョンを使用することをおすすめします。
      • Houdini使用バージョン
        • 21.0.512
      エレキベア
      エレキベア
      まだ新しい機能だからこれから調整も入りそうクマね

      Otisシミュレーションの概要

      Otis Muscle and Tissue Simulation とは

      ぷらずも
      ぷらずも
      はじめにOtisシミュレーションとは何か?についてですが、一言でいうと筋肉、皮膚などのシミュレーションを行うシステム になります。 シミュレーションを行うことで、キャラクター等の筋肉の動きを考慮した、よりリアリティのあるアニメーションを作ることが出来ます。

      Houdini 21.0 > Muscles and tissue - Houdini公式ドキュメント
      ▲関連情報は大体公式ドキュメントにまとまっている

      20251130_01_houdini_otis_simulation_01
      ▲真ん中がシミュレーション結果、よりリアルな動きを表現出来ている

      エレキベア
      エレキベア
      おお〜〜〜 内部の筋肉をシミュレーションして動きを作っているクマか
      ぷらずも
      ぷらずも
      Otisシミュレーションは21.0で追加されましたが、それ以前でもVellumを使用して筋肉のシミュレーションを行うことが出来ました。 これまでとの大きな違いとしては、筋肉、皮膚といった各レイヤーの独立したセットアップが必要があったものを、Otisでは単一パスで動作するようにした ことです。
      エレキベア
      エレキベア
      これまでセットアップが大変だったのを、Otis内にまとめて使いやすくしたのクマね
      ぷらずも
      ぷらずも
      処理をまとめたことで、処理速度の改善も行われたようです。 この辺りの違いについては以下に記載されているのと、最近jyouryuusuiさんがこれまでの歴史についてQiita記事にまとめていただいてたので、こちらも合わせてみると状況が把握しやすいと思います。

      Differences between Otis solver and Vellum Solver - Houdini公式ドキュメント
      ▲VellumによるシミュレーションとOtisの違いについて

      はじめての筋肉 Houdiniマッスルシミュレーション - Qiita
      ▲jouryuusuiさんの記事

      エレキベア
      エレキベア
      これまでの歴史をまとめていただいてるのはありがたいクマね

      レイヤー構造とシミュレーション種類

      ぷらずも
      ぷらずも
      ここから簡単にシミュレーションの内容について触れていきますが、主に以下のページを参考にしています。 より詳細な情報が知りたい場合にはこちらを一読してみてください。

      Introduction to muscles and tissues - Houdini公式ドキュメント
      ▲Otisシミュレーション概要のページ

      ぷらずも
      ぷらずも
      まずOtisシミュレーションを行うにあたり、モデルを筋肉・骨といったレイヤーに分けて計算を行っています。 レイヤーは以下の4種類があり、上から順に 骨→筋肉→脂肪... と伝搬する形で処理を行っています。
      • レイヤーの種類
        • Bones (骨)
        • Muslces (筋肉)
        • Tissue Core (筋肉・骨を囲む層)
        • Tissue Solid (皮下脂肪)
      20251130_01_houdini_otis_simulation_02
      ▲4つのレイヤーに分けてシミュレーションを行う(画像引用:Houdini公式ドキュメント)

      ぷらずも
      ぷらずも
      これらのレイヤーで計算した結果をジオメトリに反映させることで、最終的な見た目が出来上がります。
      エレキベア
      エレキベア
      脂肪まで計算することが出来るのクマね・・・(重そう)
      ぷらずも
      ぷらずも
      そしてシミュレーションを行う種類として Fascia・Tissue の2種類が用意 されていますが、これは「Tissue Core層の計算を行うかどうか」の違いになっています。
      • Fascia
        • Tissue Core層のみが含まれ、高速
      • Tissue
        • Tissue Core層に加えてTissue Solid層も考慮され、高精度なシミュレーションが可能
      20251130_01_houdini_otis_simulation_03
      ▲Core層まで含めるかどうか選択出来る(画像引用:Houdini公式ドキュメント)

      ぷらずも
      ぷらずも
      Tissueの方がより高精度なシミュレーションを行えますが、その分処理時間は長いです。 どのような結果にしたいかに応じて使い分けましょう。
      エレキベア
      エレキベア
      専門用語ばかりでよく分からなかったクマが、概念自体はそこまで難しくないクマね

      シミュレーションの流れ

      ぷらずも
      ぷらずも
      シミュレーション自体は以下のような流れになっています。 必要なジオメトリを用意して情報設定し、シミュレーションした後にスキン変形する、といった流れです。
      • シミュレーションの流れ
        1. 各ジオメトリ(筋肉、骨、スキン)の準備
        2. 各種セットアップ(筋肉、Fascia/Tissue)
        3. シミュレーション
        4. スキン変形
      エレキベア
      エレキベア
      シンプルな流れクマね
      ぷらずも
      ぷらずも
      この一連の流れはサンプルとして既に組まれていて、以下が用意されています。
      • 用意されているサンプル
        • Test Geometry: Otto Muscle and Tissue Simulation
          • Ottoモデル(人型)を使用したOtisシミュレーション
        • Test Geometry: Otto Muscle Transfer
          • Ottoモデルを元に異なる人型モデルの筋肉・骨を生成するサンプル
        • Otis Muscle and Tissue Simulation
          • カピバラモデルを使用したOtisシミュレーション
      ぷらずも
      ぷらずも
      Ottoは人型のモデルで汎用性が高いですが、処理時間もそれなりにかかります。 そのため初めはカピバラモデルで試してみることをおすすめします。
      エレキベア
      エレキベア
      異なる人型モデルに筋肉・骨を生成することも出来るのクマね どんなものか気になるクマ

      カピバラモデルによるMuscleシミュレーション

      サンプルノードの構造

      ぷらずも
      ぷらずも
      まずはカピバラモデルを使用したサンプルを使用して処理を確認してみます。 サンプルは Otis Muscle and Tissue Simulation ノードを配置することですぐに確認することが出来ます。
      20251130_01_houdini_otis_simulation_05
      ▲ノード配置後の状態、これが基本形となる

      ぷらずも
      ぷらずも
      初見だとどうなっているのか分かりづらいですが、以下のようなまとまりで分かれていることが分かります。
      1. 必要なジオメトリの準備
      2. 筋肉セットアップ
      3. Fascia/Tissueセットアップ
        • switchノードで切り替えれるようになっている
      4. シミュレーション
      5. スキン変形
      エレキベア
      エレキベア
      最初に触れた流れに沿っているクマね
      ぷらずも
      ぷらずも
      それぞれサブネットワークとしてまとめられていて、内部で細かい処理を行っています。 それぞれのセットアップ詳細に関してはページが用意されているので、困ったら公式ドキュメントをみるとよさそうです。
      20251130_01_houdini_otis_simulation_21
      ▲それぞれの処理に関するページも用意されている

      エレキベア
      エレキベア
      設定項目も中々多いクマね・・・

      必要なジオメトリ

      ぷらずも
      ぷらずも
      次に「筋肉シミュレーションを行うにあたり何のジオメトリが必要になるのか?」についてですが、以下の5つを用意する必要があります。
      • 必要なデータ
        • 筋肉ジオメトリ
        • 骨ジオメトリ(静止)
        • 骨ジオメトリ(アニメーション)
        • スキンジオメトリ(静止)
        • スキンジオメトリ(アニメーション)
      20251130_01_houdini_otis_simulation_04
      ▲カピバラモデルの例

      エレキベア
      エレキベア
      骨・筋肉のジオメトリが必要なのと、アニメーションも要るのクマね
      ぷらずも
      ぷらずも
      アニメーションが必要になるのは、動きに合わせてシミュレーションを行うため ですね。 正直骨・筋肉ジオメトリの準備は大変ですが、同一トポロジのモデルに対して既存モデルから転送して作成する機能 もあるので、こちらも後ほど紹介します。

      シミュレーション結果

      ぷらずも
      ぷらずも
      デフォルト状態でシミュレーションを実行した結果は以下のようになりました。 Fascia/Tissueそれぞれでシミュレーションしてみてどのようになるか を見ていて、シミュレーション後にFileCacheを挿し込んだ後、Flipbookで再生して確認しています。
      エレキベア
      エレキベア
      こうやって並べてみると中々面白いクマね
      ぷらずも
      ぷらずも
      比較するとFasciaの方が振動するような揺れ方なのに対して、Tissue(脂肪あり)の方は自然に揺れ方が抑えられてる印象 があるね。

      OttoモデルによるMuscleシミュレーション

      ぷらずも
      ぷらずも
      それでは次に、より本格的なOttoモデル(人型のモデル)でのシミュレーションを実行してみます。 こちらは Test Geometry: Otto Muscle and Tissue Simulation ノードを使用すると、カピバラと同じくセットアップされた状態で配置されます。
      エレキベア
      エレキベア
      人型の筋肉シミュレーションは汎用性が高いクマね
      ぷらずも
      ぷらずも
      しかしこれがポリゴン数が多いのもあるのか、中々に処理が重いです・・・。 自分のPCだと丸一日かけても終わらないこともあったのですが、最終的にはfilecacheノードをotissolverの後とdeform_skinの後にそれぞれ挟む ことで何とか処理を完了させることが出来ました。
      20251130_01_houdini_otis_simulation_22
      ▲filecacheを2箇所挟んで実行した

      ぷらずも
      ぷらずも
      実行した結果は以下のようになりました。 中々にマッスルですね・・・。
      エレキベア
      エレキベア
      ボディビルダークマ・・・

      Muscle情報の転送方法

      MuscleTransfer とは

      ぷらずも
      ぷらずも
      サンプルで筋肉シミュレーションを実行しましたが、「一つ一つのモデルに筋肉・骨のモデルを用意するのは大変なのでは・・・?」といった疑問は残ると思います。 そんな手間を解消するのが、もう一つの目玉機能である MuscleTransfer です。
      • MuscleTransferとは
        • 筋肉・骨セットアップ情報を同一トポロジのジオメトリに対して転送する機能

      参考:
      Test Geometry: Otto Muscle Transfer - Houdini公式ドキュメント

      エレキベア
      エレキベア
      これを使えばまさか筋肉・骨のモデルも自動で作ってくれるクマ・・?
      ぷらずも
      ぷらずも
      そのまさかで、こちらもサンプルノードが用意されています。

      サンプルノードの構造

      ぷらずも
      ぷらずも
      サンプルノードは「Test Geometry: Otto Muscle Transfer」で、こちらもセットアップされた状態で配置されます。
      20251130_01_houdini_otis_simulation_06
      ▲Test Geometry: Otto Muscle Transfer を配置した状態

      ぷらずも
      ぷらずも
      左上部分が筋肉等の設定を行ったottoモデル右上部分がbrootという巨人のモデル になっています。 brootの方は 描画用のスキンとottoモデルとトポロジを合わせたプロキシスキンモデルの2つを用意 して、そこからシミュレーションに必要なジオメトリを生成しています。
      エレキベア
      エレキベア
      ほほう・・・ スキンを用意するだけで筋肉などを生成してくれるのクマね
      ぷらずも
      ぷらずも
      この処理で生成されるのは ・筋肉ジオメトリ ・骨ジオメトリ ・リグ ・スキンジオメトリ の4つになります。
      ぷらずも
      ぷらずも
      リグに関しては21.0.440だと生成エラーが発生していたので、ご注意ください・・・。 21.0.511で修正されたようで、それ以降だと問題なく生成されました。

      参考:
      https://www.sidefx.com/forum/topic/102202/?page=1#post-450378
      ▲Rigの転送でエラーが発生していたが、21.0.511で修正された

      エレキベア
      エレキベア
      まだ出たばかりで今後も調整が入りそうクマね

      筋肉転送に必要な情報

      ぷらずも
      ぷらずも
      先ほど記載した通り、筋肉転送に必要となる情報は ・描画用スキン ・プロキシスキン の2つになります。 このプロキシスキンモデルに関しては、転送元のモデルと頂点数なども合わせておく必要がある ためご注意ください。
      20251130_01_houdini_otis_simulation_07
      ▲転送元のモデル

      20251130_01_houdini_otis_simulation_08
      ▲転送先のモデル(頂点数など合わせる必要がある)

      エレキベア
      エレキベア
      単純に形状が似ている、というだけではだめなのクマね
      ぷらずも
      ぷらずも
      brootのサンプルではプロキシモデルは用意されていますが、他の人型モデルを使用する場合には自前で用意する必要があります。 Houdini上で手っ取り早く用意する方法としては、topotransferノードを使用する方法 があったのでこちらも紹介しておきます。
      20251130_01_houdini_otis_simulation_12
      ▲topotransferでトポロジを揃えた状態

      20251130_01_houdini_otis_simulation_13
      ▲tommyモデルでトポロジを合わせた状態

      エレキベア
      エレキベア
      こんな便利ノードもあったのクマね これがあれば近しい形のモデルは大体合わせられそうクマね

      筋肉情報転送結果

      ぷらずも
      ぷらずも
      brootモデル(デフォルトのサンプル)tommyモデル(topotransferで手動で合わせたもの)をそれぞれottoから転送してみた結果は以下のようになりました。
      20251130_01_houdini_otis_simulation_09
      ▲brootモデルの転送結果

      20251130_01_houdini_otis_simulation_15
      ▲tommyモデルの転送結果

      エレキベア
      エレキベア
      どっちもいい感じに転送出来ているクマね・・・ すごいクマ
      ぷらずも
      ぷらずも
      大量のキャラをシミュレーションしたい場合でも、一つ筋肉セットアップの型を用意しておけばそれで使いまわしが出来そうだね。

      筋肉転送モデルによる筋肉シミュレーション

      ぷらずも
      ぷらずも
      最後に、筋肉転送したモデルで実際にシミュレーションを行ってみようと思います。 シミュレーションに関しては ・転送後のモデルにアニメーションを付けてパック した後、ottoモデルと差し替える形で実行してみました。
      20251130_01_houdini_otis_simulation_23
      ▲アニメーションを付けた後にパックする

      20251130_01_houdini_otis_simulation_24
      ▲筋肉シミュレーション側でottoモデルと差し替える

      エレキベア
      エレキベア
      これでシミュレーションに必要な情報が全て揃ったクマね
      ぷらずも
      ぷらずも
      アニメーションに関しては、ottoモデルのマッスルアニメーションも流用出来ないか試してみたのですが、形状が違うためか破綻してしまいました・・・。 そのため今回は 屈伸を行うだけのシンプルなアニメーションを手付けで試してみました。
      20251130_01_houdini_otis_simulation_17
      ▲ottoモデルのアニメーション流用は難しかった

      20251130_01_houdini_otis_simulation_18
      ▲手付けした屈伸アニメーション

      エレキベア
      エレキベア
      (屈伸かぁ・・・)
      brootモデルのシミュレーション結果
      ぷらずも
      ぷらずも
      以上を踏まえて、brootモデルでシミュレーションした結果は以下のようになりました。
      エレキベア
      エレキベア
      おお~~~ ちゃんとそれっぽくなってるクマ~~~
      ぷらずも
      ぷらずも
      ちょっとまだ違和感が見えるけど、このあたりはセットアップの調整が必要になるかもしれないね・・・。
      ぷらずも
      ぷらずも
      それと一点発生した問題として、シミュレーションを行う中で ・シミュレーション後に筋肉などが消えてしまう ・シミュレーション時間がやたらと長い 事象が発生することがありました。
      エレキベア
      エレキベア
      筋肉が消える・・・・??
      ぷらずも
      ぷらずも
      こちらについて原因調査したところ、どうやら同名のパーツ同士が衝突することで意図しない結果になっていたようで、otissolver内の「Ignore Collisions with Same name or Piece」フラグを外すことで解消できました。 処理時間も解消されたので、いつまでも終わらない場合にはこの辺りを疑ってみてもいいかもしれません。
      20251130_01_houdini_otis_simulation_25
      ▲「Ignore Collisions with Same name or Piece」フラグを外すと同名パーツ同士の衝突を防げる

      tommyモデルのシミュレーション結果
      ぷらずも
      ぷらずも
      最後に自前で用意したtommyモデルのシミュレーション結果も載せておきます。 こちらは以下のような結果になりました。
      エレキベア
      エレキベア
      こっちもちゃんとシミュレーション出来てそうクマね (ズボン破けてるけど・・・)
      ぷらずも
      ぷらずも
      ズボンが破けているのは服のウェイトがボディとあっていないからですね。 本当は衣類を全部外そうかと思ったのですが、絵的にアウトかなと思いとりあえず残しました・・・。
      20251130_01_houdini_otis_simulation_20
      ▲ちょっとここまでは調整する気力が起きませんでした

      エレキベア
      エレキベア
      なんかシュールクマ・・・

      おわりに

      ぷらずも
      ぷらずも
      というわけで今回はHoudini21.0の新機能であるOtisシミュレーションを触ってみました! どうだったかな??
      エレキベア
      エレキベア
      どれもセットアップ込みのサンプルが用意されていて分かりやすかったクマ ざっくりとイメージは掴めた気がするクマ
      ぷらずも
      ぷらずも
      まだ細かい調整までは触れていないので、時間があればその辺りもやってみたいね。 個人的には人型以外も含めて、オリジナルキャラクターに対して一からセットアップ~シミュレーションまで行ってみたいなとは思っています!
      エレキベア
      エレキベア
      ぶよぶよなモンスターとかやったら絵的にも映えそうクマね 引き続き触ってみるクマ
      ぷらずも
      ぷらずも
      それでは今日はこの辺で! アデューー!!
      エレキベア
      エレキベア
      クマ~~~~~

      【Houdini21.0】Otisによる筋肉シミュレーションと筋肉情報転送機能の使い方【Otis Muscle and Tissue Simulation】~完~


      Houdiniアニメーション筋肉シミュレーションOtis
      2025-11-29

      関連記事
      【Houdini】Mardini2025の振り返りと制作物解説
      2025-11-24
      【Houdini Indie】通常版とSteam版の挙動の違いをまとめる【2025年版】
      2025-11-03
      【ゲーム数学】第十回 p5.js(+α)で学ぶゲーム数学「複素数とフラクタル」
      2025-11-02
      【プロシージャル】Pythonで学ぶ波動関数崩壊アルゴリズム(Wave Function Collapse)
      2025-06-22
      【Houdini20.5】主要な環境変数と設定方法についてまとめる【Windows/Mac】【Steam版】
      2025-05-05
      【Houdini20.5】観覧車をプロシージャルに作ってみる【SOP・VEX】
      2025-01-03
      【書籍紹介】「コンピュータグラフィックス」に出てくる用語をまとめる【CGエンジニア検定】
      2024-07-13
      【Unity】第五回 オセロAI開発 〜キャラクターらしさを表現したAIの作成〜【ゲームAI】
      2022-09-19