Webサイト「macOS研究所」日本語版・英語版の公開

ゲームやツールやデモのmacOSアプリやiBooks電子書籍が無料でダウンロードできるホームページ「macOS研究所」「macOS Lab」を公開しました。

今まではiOSアプリと一緒にWebサイト「Cyberdelia.net」で公開していたものを分離しました。
ホームページの設計は、ジャンルごとに1つのテーマに特化したコンテンツがいいと聞いたので。まあmacOSで動くiBooks電子書籍はmacOSアプリと一緒だと考えています。

Metalライブラリ「RoxigaEngine」サイト公開

「macOS」の「Xcode」の「Objective-C」言語で「Metal」プログラミングする3Dライブラリ「Roxiga Engine」とそのサイトを公開しました。


https://engine.roxiga.com

3Dデータは「Autodesk FBX」形式をRoxigaEngine専用形式に変換して表示できます。
FBXファイルは、ボーンアニメーションした1オブジェクトで1マテリアル1テクスチャが必須です。
この変換には「macOS」アプリ「FbxToCSharp」を使います。

「RoxigaMain.mm」ファイルにコードを記述するだけで、3Dゲームなどの3Dコンテンツが作れます。

できればこのRoxigaEngineの入門書を執筆できたらと思っています。

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,
に変更するのに気づきませんでした。

iPhone実機でデバッグ中にデバイスが動かなくなった場合

iPhoneをMacにUSBで繋いで、Xamarin Studioで開発中に、Debugで実機で動作テストしている最中にUSBケーブルを抜いてしまうと、iPhoneデバイスが真っ暗になって動作しなくなる可能性があるようです。
多分Xcodeでも?
その場合、もう一度iPhoneをUSBコードで繋いで、デバッグビルドしてみてください。
僕の場合はそれでiPhoneが正常に動きました。

Xcode7+iOS9でiTunesConnectに登録できないエラー

先日公開された「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つのアプリを全画面表示だけにしたら解決しました。

Xcode