ゲームエフェクトデザイナーのブログ | A Real-Time VFX Artist's Blog

About Making Materials on UE, Making Tools with C#, etc

C# MonoGameで3Dモデルを表示してみる

こちらの記事にまとめてるように「Maneged DirectX」や「SlimDX」の解説記事をもとに3Dモデルの表示を片っ端から試してみましたが、途中でうまくいかなくなったりコードが複雑で理解が追いつけなかったりしました。

そんな中、DirectXよりかなり敷居が低いと言われているXNAマイクロソフト公式でそのまま動くよう移植したという「MonoGame」が良さそうに思い、XNAの解説を頼りに学習してみることにしました。

その際に躓いたことなどメモっておきたいと思います。※随時更新

 

MonoGameの導入


MonoGame

 こちらの公式サイトから最新のインストーラーをDLします。
 この記事を書いた2019.1.13 時点では、公式サイトでDLできる最新バージョンは 3.7.1 で、インストーラーにVisual Studio 2017のTemplateが含まれていたので安心です。

MonoGameで2Dゲームを作る(前書き) - Qiita
MonoGame入門Ⅰ - Qiita
MonoGame で 3D 描画 - Qiita

 こちらのあたりは参考用に貼り付けておきます。

MonoGameで3Dモデルの表示


かんたんXNA4.0 (XNA入門)|Memeplexes

 XNAによる3D描画の主要な解説が網羅されていて、大変ありがたいです。
 こちらを順に試していっています。
 三角形の表示とカメラの生成が70行ほどでできるため、敷居が低い印象です。
 テクスチャを貼ってライティングしてカメラを回すのもお手軽な感じでした。

f:id:moko_03_25:20190114032547g:plain

 

画像の読み込み時の落とし穴


かんたんXNA4.0 その4 画像ファイルを表示|Memeplexes

 その3までは順調に進んでいましたが、その4で画像の読み込みでエラーが出て詰まりました。下記の記述部分です。

texture = Content.Load<Texture2D>("Content/sample");


 Contentフォルダがプロジェクト内に複数あるので「どれだろう?」と思いつつ、全てのContentフォルダに同じ画像を放り込んでみましたがダメ。ググってみたところXNAとは違ってMonoGameでは「MonoGame Pipeline Tool」で画像を読み込んでxnbファイルにコンバートしてやらないといけないようです。

▼スタートメニューから起動できます

f:id:moko_03_25:20190113234143j:plain

MonoGame でのコンテンツの登録と読み込み - MonoGame - ソーサリーフォース

手順はこちらで解説されており、無事に画像の読み込みがうまくいきました!

f:id:moko_03_25:20190113234137j:plain

 

サンプルなど


XNAGameStudio/Samples at master · SimonDarksideJ/XNAGameStudio · GitHub

こちらにXNAのサンプルプロジェクトが大量に公開されています。
今はもう存在しないXboxLive公式サイトにあったらしいサンプルを、退避して公開されている感じでしょうか?

Windowsフォームを併用したい場合


[XNA and C# Winforms] Tutorial Series 01 - Setting up the Project - YouTube

Windowsフォームを併用することはできそうです。
MonoGameでプロジェクトを開始しておいて、参照の追加で「System.Windows.Forms」を追加することで可能な感じでしょうか。

このあたり、また試してみたら追記したいと思います。