ゲームやツールやデモのmacOSアプリやiBooks電子書籍が無料でダウンロードできるホームページ「macOS研究所」「macOS Lab」を公開しました。
今まではiOSアプリと一緒にWebサイト「Cyberdelia.net」で公開していたものを分離しました。
ホームページの設計は、ジャンルごとに1つのテーマに特化したコンテンツがいいと聞いたので。まあmacOSで動くiBooks電子書籍はmacOSアプリと一緒だと考えています。
「macOS」の「Xcode」の「Objective-C」言語で「Metal」プログラミングする3Dライブラリ「Roxiga Engine」とそのサイトを公開しました。
3Dデータは「Autodesk FBX」形式をRoxigaEngine専用形式に変換して表示できます。
FBXファイルは、ボーンアニメーションした1オブジェクトで1マテリアル1テクスチャが必須です。
この変換には「macOS」アプリ「FbxToCSharp」を使います。
「RoxigaMain.mm」ファイルにコードを記述するだけで、3Dゲームなどの3Dコンテンツが作れます。
できればこのRoxigaEngineの入門書を執筆できたらと思っています。
「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,
に変更するのに気づきませんでした。
iPhoneをMacにUSBで繋いで、Xamarin Studioで開発中に、Debugで実機で動作テストしている最中にUSBケーブルを抜いてしまうと、iPhoneデバイスが真っ暗になって動作しなくなる可能性があるようです。
多分Xcodeでも?
その場合、もう一度iPhoneをUSBコードで繋いで、デバッグビルドしてみてください。
僕の場合はそれでiPhoneが正常に動きました。
先日公開された「iOS9」向けにアプリを開発するには「Xcode7」をインストールする必要があります。
それだけならいいのですが「iTunes Connect」に登録する際にエラーが出て失敗します。
実機でデバッグする際に以下のような警告が出ます。
「All interface orientations must be supported unless the app requires full screen.」
「A launch storyboard or xib must be provided unless the app requires full screen.」
恐らくiOS9から2つのアプリを同時に2画面で表示できるようになったり、インターフェースの向きに対して全てサポートされなければならないので、そのコーディングをする必要があるのだと思います。
まあそれは面倒なので警告文にも書かれている通り、以下の画像の赤丸の「Requires full screen」をチェックして1つのアプリを全画面表示だけにしたら解決しました。