Xamarin.iOSのMetalで3Dプログラミング

「Visual Studio for Mac」で「Xamarin.iOS」の「Metal」をいじっています。

でも「FBX SDK」は「C++」なので、「Cocoa」の「Objective-C」で、FBXファイルを「CSharp」ファイルにモデルデータとアニメーションを配列として書き出すところまでプログラムができました。

困ったところは、「シェーダー」でコードからボーンの番号を「int」型で送ったらうまくいかず「float」型でボーン番号を送ったらうまくいきました。

また「SetVertexBuffer」の「offset」を変更することでアニメーションさせているのですが、オフセットのサイズに「sizeof(float)」の値も乗算してやる必要がありました。

また「DirectX」や「OpenGL」ではデフォルトでZバッファが効いていましたが、「Metal」は常にZバッファを上書きする
DepthCompareFunction = MTLCompareFunction.Always,
だったのを、既存のZバッファより手前に描かれるときにだけ描画する
DepthCompareFunction = MTLCompareFunction.Less,
に変更するのに気づきませんでした。

iOS・Androidアプリ「3D Quiz – 別視点から間違い探し」

以前までFlash製だった「3Dクイズ.com」をHTML5に作り直しました。全49問あります。
http://3d-quiz.com

また「3Dクイズ」のiOSスマホアプリ版「3D Quiz – 別視点から間違い探し」をApp Storeで公開しました。
https://itunes.apple.com/jp/app/3d-quiz-%E5%88%A5%E8%A6%96%E7%82%B9%E3%81%8B%E3%82%89%E9%96%93%E9%81%95%E3%81%84%E6%8E%A2%E3%81%97/id1235138240

さらにAndroid版「3D Quiz – 別視点から間違い探し」をGoogle Playで公開しました。
https://play.google.com/store/apps/details?id=com.roxiga.quiz3d

コンテストに応募する場合は5~10問ぐらい作ればよかったのですが、ストア向けにボリュームたっぷりに100問作りました。
友人に「一発ネタばかりでなく、お腹一杯になるようなアプリは作らないの?」と聞かれたので、一発ネタをたっぷりのボリュームで問題をたくさん作りました。