【C++】DirectXにおける3Dアニメーションプログラミングを分析する~その1

ちょっとわけあって、タイトルにあるとおり、C++でDirectXを使った3Dアニメーションの実装方法を分析していこうと思う。

分析というかソース解読の元ネタは、下記のニコニコ動画によるチュートリアル。

mはげ さんの公開マイリスト

うp主のmはげさんのサイトでは動画で紹介されている技術のサンプルプログラムも公開されておられる。

うp主のmはげさんのサイト

サンプルソースをそのままビルドしたり、ソースをひたすら読んでいってもよかったんだけれども、コードに触れながら学べるようにしたいと思う。

C++も読めるくらいには勉強したし、『入門ゲームプログラミング』のおかげで、DirectXのコンテキストを持った、ウィンドウのスケルトンプログラムも作ることが出来た。

なので、サンプルソースにある、3Dアニメーションのロジックのみを抜き出して、自作のウィンドウスケルトンの中に取り込んでみた。

ヘッダファイルの関係とか、ダイレクトXの初期化ロジックの違いなどで、多少(というかけっこう)の苦労はあったものの、なんとか今日中にビルドまでこぎつけることが出来た。

ただし、3Dアニメーション部分は現在のところ、ほぼコピペわはは。

まだいくつかバグが残っているんだけれども(もちろん俺自身の手によるもの)、とりあえずは動くものが出来た。

ちなみにわかっているバグは、プログラム終了時にメモリリークが起きている問題と、頂点グループ(またはボーン)がレンダリングされてしまっている点。

これはソースを解析していく中で修正していこうと思う。

あと、大きいネタとして、物理演算を組み込んでいく必要がある。

それもおいおい、取り組んでいく所存。

PMDのモデルデータと、VMDのモーションデータを読み込んで自作のウィンドウ内で表示させたものを動画にしてみたのではっておく。

次回から、毎行コメントを入れながら、ガリガリ読んで行きます。

4年前

4 コメント

  1. はじめまして。記事のほう読ませていただきました。
    私も今mはげ様のソースコードを見ながら(というかほぼコピペ)でPMD描画、そしてbulletを使ったビューアーを作ってゲームに取り組もうとしているところです。

    ビューアーまで出来たのですが、やはりメモリリークが気になりまして、ブログ主様もメモリリークがあると言っていたな~と思い出しコメントしました。

    メモリリークの原因と解決方法がわかっていましたら是非教えていただきたいと思います。
    よろしくお願いします。

    1. はじめまして。

      本件は仕事でIKを学ぶ必要があって、その一環で勉強がてらはじめたものです。

      現在、当の仕事の方は無事終了しまして、このプログラムは完全に放置状態になってます。

      データの持ち方や、ロジックが結構追いづらいですよね。メモリリークの問題も解決せずじまいです。

      まことにかたじけない。

      ゲーム作り、がんばってください。また、よろしければ、ゲームができたら教えてください。

      インディー制作同士(ですよね?)、がんばりましょう。

      1. お返事ありがとうございます。

        インディーといいいますか、学校のチーム制作でMMDのモデルを使おうと思ったので調べたらこちらのブログに辿り着いた次第です。
        自分の力不足のせいで中身の解読もまったくできてなくメモリリークの原因も全然です…

        人様に見せれるようなゲームができましたら連絡させていただきます!

        お仕事頑張ってください。

        1. いちおう、自分の環境で出ていたメモリリークの対処法をブログにアップしました。

          unknownさんのケースに当てはまるかはわかりませんが、参考になれば幸いです。

          学生さんですか。うらやましいです。チーム制作がんばってください。学生のうちからしっかり学んでおけば、俺のようにおっさんになってから苦労して学ぶより、ずっと成長がはやいと思います。すぐには成果が出なくても、必ず開花します。がんばって!

コメントを残す

メールアドレスが公開されることはありません。