頭と尻尾はくれてやる!

パソコンおやじのiPhoneアプリ・サイト作成・運営日記


SwiftでBulletはやめにする

数字を書こう
↑この前にリリースしたアプリは Objective-C x OpenGL ES 2.0 x Bullet で作ったのよ。
次のアプリは Swift x Metal x Bullet で作ろうと思って本当にできるのかな?と動作確認などやってたんだけど、、、

SwiftからC++のBulletを扱うのが結構しんどいことがわかってね。
SwiftからBulletを扱うためのラッパークラスを作ってなんとかやってたんだけど、構成が複雑になってかなり可読性が低くなるし、どこでどんな処理をするのか直感的でもないしこりゃ後から修正するのもしんどいだろうなって感じに。Swiftは楽しいけど、そうまでしてSwift使わなくてもいいかって気になってきた。
上級者ならできるんだろうけど、俺には無理ってことで降参。


ちなみに物理エンジンならSceneKitというAPPLE様謹製フレームワークで使えるらしいんだけど、以前調べた時にクォータニオンがイマイチ使いづらそうということでやめたんだよな。
改めてリファレンス見てもクォータニオンの計算する関数とかなさそうだし、、、 
ios - SCNQuaternion Multiplication - Stack Overflow
↑どうやらまだこういうことかな。

あと、SceneKitでsoft bodyが扱えるのかがよくわからないのでSceneKitはやっぱり見送り。


3D表示に3D物理エンジン使うのなら普通はUnityあたりがいいんだろうけどねえ、、、もう一つUnityあたりはやる気にならないんだよな。

そんなわけで次のアプリは Objective-C x Metal x Bullet でやるか。
はい、Objective-CでMetalの動作確認するところまで退却〜!


お手頃ワイヤレスヘッドセットQY7を買ってみた

ジョギング/ウォーキング/Ingress用にとBluetoothのイヤホン QY7 ってのを買ったのよ。値段も2400円くらいと手頃だったし。

ヘッドセットQY7

iPhone 6とのペアリングは全く問題なし。以前買った1000円台のBluetoothイヤホンやダイソーの有線のイヤホンよりも音はいい。

耳に直接引っ掛けて落ちないようにするわけじゃなく、

QY7付け方

こんな感じで固定するらしい (ネット上で見つけた画像)。こういうのは初めてなので同梱のパーツを取っ替え引っ換えしてまあなんとか自分の耳に合いそうなのを選択。
実際これで走ってみると、耳から外れることはない。たいしたもんだね。

ところがさ、イヤホンが揺れる音というのかな。耳の中でぐわんぐわんと音がして、とてもじゃないが聞いてられない。耳の中に刺さるゴムの部品も大中小とあって小に交換してみたらマシにはなったけど、やっぱりうるさい。
それに密閉性が高いのか外部の音が聞こえにくく、若干外で使うのは危険を感じるわ、、、

ということでこのQY7は家の中用にしとこうっと。



Blenderで作成した法線マップをiOSで使う

Blenderで3Dモデルを作成してobjファイル出力してiOSアプリのOpenGL ESなりMetalなりで使用する、って流れからするとやっぱり法線マップもBlenderで作成したいと思うよね。調べてみると

Blenderチュートリアルまとめ | blenderでノーマルマップの作成(bake)
↑このページが参考になった。


ただ、ちょっと面倒なのが法線マップをシェーダで使う時にオブジェクト(というか面)の法線以外に接線と従法線なるものが必要になるとか。
Blenderのobjファイル出力だとそういうのはサポートされてないみたい。

GLSLでバンプマッピング
↑原理的にはこんな感じなので接線と従法線を自分で計算してみた。
このサイトに書いてるように接線(tangent)がテクスチャのuv座標のu軸方向と一致させる必要があるらしい。
法線はわかってるので計算した接線との外積から従法線はOK。

How To Export Blender Models to OpenGL ES: Part 1/3 - Ray Wenderlich
↑そもそもobjファイルからiOSで使うファイルへ変換してるわけでそのコードを接線と従法線も出力するように修正。




↑うん、膨らませたとこは膨らんでるし、凹ませたところは凹んでるわ。

MetalでのシェーダとかはAPPLEのサンプル MetalShaderShowcase を参考にしてる。


↑テクスチャ画像を追加して materialDiffuseColor に割り当てて色を付けてみた。テクスチャ画像と法線マップの二つをシェーダに送ればいいのね。


Blenderのスカルプトモードでハイポリを作成するのがまだ慣れてなかったりするけど、とりあえずできるのは確認できたかな。ただ法線マッピングで膨らんでるように見せるのはやりすぎるとなんか不自然に見えるかも?凹ます方がいいのかな。

※Blenderは2.74


ポケモンカードゲームのカードを自作

相変わらずポケモンカードゲームが大好きな小二の息子。
最近では普通の遊び方だと満足できないのか、独自のルールを考え出してくるんだよね。ポケモンは二体まで同時に攻撃ができる、とかカードで”壁”を作ってこれが壊されたらダメとか、相手の攻撃時に対応できるとか、まあそういうの。他のカードゲームの流用なのかもしれないけど。
お金がたくさんあったらどんどんカードを買い足していく方向へ行ったんだろうけど、幸か不幸かさほどお金がないからちょっと斜めの方向へ向かっているみたいだけどまあは悪くない。

さらに、自分でこういうカードを作りたい!なんて言いだしてさ。使わないようなカードにポストイットで貼り付けてたんだけど、、、
そりゃ使ってたら取れるんじゃない?って感じだったので、スキャナでカードを読み込んでiDrawなどで処理、それを写真印刷用のL判(89mm x 127mm)の光沢紙に印刷してみた。

自作ポケモンカード

↑これを半分に切って糊付け、角のRはハサミで。これでサイズは本物とほぼ同じ。


本物と比較

↑ただ本物とは色合いも違うし質感も違うんだけど、子供は大喜びだったわ。

というか、内容の方がブランクのポケモンカードが売ってて印刷するだけ!みたいなのがあればいいのになと思った次第。探したけど見つからない。売ってないよね???


子供向けアプリに必要なparental gate

この前リリースになった
数字を書こう
↑このアプリは一度24.3が理由でリジェクトされてさ。

子供向け教育iPhoneアプリの審査が通らなかった時の解決法 - 河合さんのブログ

↑この記事の内容と同じで parental gate なるものが必要だと。

子供がうっかり大人を対象にしたリンクをタップしたりしないように、大人向けページをみるにはなんらかの確認が必要というものなんだな。
最初は単に保護者向けページの入り口ボタンを別に置いてるだけだった。

ホーム画面

↑これだとリジェクト。


このアプリは幼児じゃなく、6〜8歳児向けなので二桁の足し算程度じゃ用をなさない、というかそういう簡単な計算を練習するアプリだし。

ということで次のような感じにしてみた。上の「保護者の方へ」ってボタンをタップすると最初にUIAlertControllerによるメッセージを表示して4桁の数字を入力してもらうようにしたのよ。

Parental gate

これで適切な値(とりあえず16歳〜117歳にしてる)だとOKで、ダメだと元に戻るという仕組み。これで審査通過。
ちなみに生まれた年を西暦4桁で入力する、というのはToca Carsってアプリでやっていたのを参考にしたんだけどね。
Toca Carsだと14歳からOKになってたけど余裕をみて(?)16歳にしといた。最大値を117歳にしたのは世界最高齢の女性が117歳で亡くなったとかなんとかいう記事をみたので。




Copyright ©頭と尻尾はくれてやる!. Powered by FC2 Blog. Template by eriraha.