!!!独り言日記 !![Unity] Unity関連の情報格納庫(2014/01/30) まだ途中なページがいろいろありますが、実際にアプリ開発で勉強しながら学んだ情報など、Unityに関する情報のまとめページを公開しました。 情報量が多いので、別Wikiとして展開してます。 http://ft-lab.ne.jp/cgi-bin-unity/wiki.cgi 本ft-labのトップページにもリンクを貼ってます。 NGUIの使い方については、上記URLの左のメニュー部の「NGUI」にいくつかページを作ってますので参照くださいませ。 !![Unity] NGUI (2014/01/28) Unityで有名なAsset「NGUI」をいまさら購入しました。 これは、プッシュボタンやチェックボックス、スライダなどのウィジットを楽に実装できるAssetです。 {{ref_image unity_ngui_00.png}} 上の画像はサンプルのウィジットを配置しましたが、基本は「アトラス」という部品画像の格納庫みたいのを作ってカスタム描画のウィジットを作ります。 これにより、個々のゲームやアプリの雰囲気にマッチしたUIを実現できます。 PCとandroidで試しましたが、同じ操作性を実装できました。 また、画面サイズが端末によって変わるモバイルに使えそうなものとしてレイアウトを調整する機能があります。画面端からどれくらい離して配置(Unified)といった調整も可能。 個人的にはPCよりもモバイルで力を発揮するかなという感じがしました。 NGUIは2Dとしてウィジットを配置しますが、後ろに3Dの表示を行うということももちろんできます。 ざっと触った感じでは、UIの作りこみはNGUIに大きく頼ることで効率化できそうではあります。 ただし、NGUI 2.x.xと3.x.xでは使い方が異なるようですのでこのあたりは注意です。 Unity関連の解説ページは(今のところ)非公開として書いてますが、時期を見てオープンにする予定です。 !![Unity] 続・Unity終了時にフリーズすることがある原因は? (2014/01/28) 01/27に書いたこと以外でもまだ終了時のフリーズが起きてました。 androidでの実機テストをしつつで発生確認。また原因追求せねば。 !![Unity] Unity終了時にフリーズすることがある原因は? (2014/01/27) 2014/01/19に書いた「Unity終了時のフリーズ」ですが、 どうもリソースからMaterialを「Resources.Load」を呼んだ場合に、アプリ終了時に「Resources.UnloadAsset」で解放してなかったのが原因かも。 アプリの終了時の処理は、MonoBehaviour派生クラスで「void OnApplicationQuit() 」をオーバーライドすることで行うことができます。 今のところ、「Resources.Load」で読み込んだMaterialを「Resources.UnloadAsset」で適切に解放した場合は、Unity終了時にフリーズしてません。 別パターンもあるかもしれませんが、また何か起きた場合はメモ的に書いておきます。 !![Unity] 実行時のクラッシュ (2014/01/27) Unityでプログラムをしていて、Unity環境上でテスト実行する際にクラッシュする事案が発生。 原因を追ってみると、Prefabのリンクが不正になってしまってました。 Prefabは、オリジナルの形状を複製したものでPrefabにするとそれに対して独自のマテリアルを割り当てることができます。 オリジナルの形状はそのままにしておき、作成したPrefabをGameObjectに割り当てて使いまわすようにしたほうがいろいろはかどります。 で、なぜPrefabのリンクがおかしくなったのかというと、 形状やマテリアルはResourcesディレクトリに入れて遅延呼び出ししてたのですが、 呼び出し時は GameObject gameObject = Resources.Load("prefabs/xxx", typeof(GameObject)) as GameObject; 終了時の破棄時にテスト的に、 GameObject.DestroyImmediate(gameObject, true); としてしまってました。 この「GameObject.DestroyImmediate」で壊してしまったみたい。これを一度実行すると、2回目以降はproject内のprefabが不正になるため必ずクラッシュするようになりました。 復帰させるにはprefabを再作成。 手順としては、Unity上からじゃなくてWinのブラウザでファイルとしてprefabファイルとmetaファイルを削除。再度Unityのウィンドウに戻ると無事削除を確認。この後、Unity上でprefabを再度作る。 「Resources.Load」でGameObjectとしてprefabを呼び出した場合は、 「Resources.UnloadAsset」かなと思ったのですがGameObjectのときはエラーが。 何も呼ばなくてもいいのかな。このあたりはまだ不明です。 なお、MaterialはリソースとしてResources.Loadで読み込んでResources.UnloadAssetで解放、は正常動作してます。 !!StopMotion (2014/01/26) 去年実験的に、手持ちのケヤキ盆栽をひたすら撮影して動画にして成長観察、としていたのですがそれをYouTubeにアップしてみました。 https://www.youtube.com/watch?v=wnLZlgPEok0&feature=youtu.be 撮影はSony Tablet S上のandroidのカメラで行ってます。 android SDKで15分間隔くらいでカメラを撮るプログラムを作成し、撮影した画像をサーバーにアップ。 全部で6000枚以上の画像数になり、Premiereでも動画化できるか試したのですがマシン速度が追いつかなかったです(いつまで経っても終わらない、というかフリーズしました)。 そのため、この動画化はOpenCVを使うことに。 もともとの目的は、植物の成長動画を個人でも撮ることができる時代になった、というのを実践するというのがあります。 ただ、数日すればアプリが落ちてましたねぇ。何回か再起動したりしました。 !!続・Unity 4.3.3 (2014/01/19) Unity終了時のフリーズが収まったと思っていたのですが、 長時間Unityで作業して終了させるとまだフリーズすることがありました。 androidとは別の問題かどうか、もうちょっと調べる必要がありそうです。 !![Unity] 水の表現 (2014/01/16) UnityにWaterでの水面表現があります。 Basicは反射なし/Pro版は反射あり。それなりにリアルですが、Basic版で反射(cubemapを使った環境マップですが)と半透明化を反映したかったので少し改造しました。 以下の動画のように、フェイクの映り込みを反映。 {{h264player http://ft-lab.ne.jp/files/movie/unity_Water_20140116.mp4,width=640,height=480}} モバイル(android/iOS)でも同じように表現できますね。 !!Unity 4.3.3 (2014/01/15) 先日出たUnity 4.3.3を本日使ってますが、Unity終了時にフリーズすることがあった問題は修正されているようでした。Android SDKとの相性問題だったようですね。 Monoの起動時に「オブジェクト参照がオブジェクトインスタンスに設定されていません」メッセージウィンドウが出る現象はまだ発生中。reloadすれば正しく読み込めます。 !!Macでサウンド付き動画を撮る 〜 H264に変換 (2014/01/15) 正月にMacのGarageBandで深夜の勢いで耳コピーしてたのを、サウンド付きで動画にする方法を調べました。 まず、Macについている「QuickTime Player」でPC上の操作環境の動画を撮ることができます。 www.apple.com/jp/quicktime/download/ 音声は別途、PC内のサウンドをQuickTime経由で出力する必要があります。 「Soundflower」というツールを入れて、システムのサウンドをソフトウェアのほうに持ってきます。 http://cycling74.com/soundflower-landing-page/ これをインストールして再起動後、システム環境設定のサウンドから「出力」-「Soundflower (2ch)」を選択。選択すると内蔵スピーカからは音は出なくなり、soundflower経由のソフトウェアのほうに音の出力が回されます。 GarageBandの環境設定より「オーディオ/MIDI設定」の「出力デバイス」が「システム設定」になっているのを確認。 QuickTimePlayerを起動して、メニューより「ファイル」-「新規画面収録」を選択。 録画ボタンの付いた小さいウィンドウが出ますので、ウィンドウ右端の「▼」をクリックして、マイクが「Soundflower (2ch)」となっているのを確認。 録画ボタンを押してスクリーンを範囲選択します。 この後録画を開始。録画を停止するには、ドックのQuickTime Playerのメニューで停止を選択。 これで、mov形式で出力されます。 H264に変換するには「Avidemux」というツールを使いました(Win/Macどっちも使えます)。 http://avidemux.sourceforge.net/download.html Avidemuxでmovファイルをドラッグして読み込んだ後、 左端の「Video Output」で「Mpeg4 AVC(x264)」を選択、「Audio Output」は「Copy」のまま(変更すると正しくH.264にならないようです)、 「Output Format」で「MP4 Muxer」を選択。 メインメニューの「File」-「Save」でmp4の拡張子で出力。 以下のような感じになりました。 録画はかなりマシンパワーかメモリを食うみたいで、録画範囲を大きくするとGarageBand側がメモリエラーになったり動画がぎこちなくなったりしてました。 録画範囲は少し小さくしてます。 {{h264player http://ft-lab.ne.jp/files/sound/idle_master_20140114.mp4,width=640,height=480}} ピアノ曲です。 途中まで打ち込んでた(脳内再生しつつ)のですが、サビの左手がうまく噛み砕けなかったので途中でフェードアウトさせてます。 また続きは気が向いたらリベンジしてみます。ピアノの場合はごまかしたらすぐばれるので難しいですね(これでも左がかなり怪しいのですが(^_^;;)。 しかし、GarageBand10は以前のバージョンと比べて少し不安定かも。 *ピアノロールでの矩形選択や単一選択操作が重くなる場合がある *トラックを切り替えても、表示だけ切り替わらないときがあった(トラック自身の切り替えは出来ている模様) *ピアノロール側のトラックの描画が不正になることがある です。 追記: 動画見たら、微妙に動画と音がずれて再生される感じがしますね。 さて、どれの問題だろう。 !!Panono (2014/01/14) 先月日記に書いていた「Panono」は発売決定したようですね。今年年末。 http://www.itmedia.co.jp/news/articles/1401/08/news123.html 解像度も申し分ないのですが、このボールを持ち歩いてあまつさえ上に放り投げて撮影、という自分の姿を想像したら恥ずかしさが勝る気がして、ほしいんだけど手が出せないです。 RICOHのTHETAもまだ使ってる人見たことないなぁ。 ウルトラマンの姿勢をしてれば間違いないと思うのだけども(^_^;; 私自身は、パノラマ撮影時はiPhone持ってその場で回ってます(Photosynth使用)。こっちのほうが怪しいかな(汗)? でも、正直なところ、RICOHのTHETAもそうだと思うけど、もうちょっと解像度がほしいかも。 !!FireAlpaca (2014/01/14) 私自身、Win環境ではSAIでペイント処理を行います。PhotoShopはフィルタを使う目的があるとき以外はほとんど使ってないですねぇ。 MacBookAirを持ち歩いていた際に、Macでちょっと画像処理したいなと思って探すと「FireAlpaca」というのがいい感じでした。 http://firealpaca.com/ ほぼSAIと同じようなことができます。もう、ペンタブレットなしではいろいろ操作が困るようになってしまった、、、。 !!今年の目標 (2014/01/06) 今年の作業開始。 いつもかなり大雑把な目標で予定は未定ではありますが、今年の目標として。 *スマホ/タブレットのアプリを作る *本サイトで記載していたShadeとUnityでやりとりするTipsが途中なので完成させたい *Unityに関する覚書ページを公開 「スマホ/タブレットのアプリを作る」については、Unityで作ってます。 去年完成予定だったのですが、Unityを全体的に知っておいたほうがよいだろうと勉強にも時間を割いていました。 「急がば回れ」とかっこいいことを言ってもアレですので純粋に遅れてます、すみません(汗)。 おかげさまでUnityプログラムについては知識がつきました。今年前半には! 「ShadeとUnityでやりとりするTips」は、モデリングの説明にそれてしまったのですが せっかくなので「ゼロからモデリングしてキャラクタをUnityに送る、動きもつけるよ」まで記載できればと考えています。 モバイルのアプリ作成プロジェクトで3DのモデリングはShade使ってますので、これもノウハウ貯まってきました。 まじめに書いたら本一冊くらいになりそう、、、、。なんとかオンラインでまとめます(^_^;; 「Unityに関する覚書ページを公開」は、実は非公開で去年後半あたりから結構進めてます。 勉強しながらですので、全体を校正しながら。 アプリ公開後くらいに一気に出すか思案中。 前年はあまりft-labを更新できませんでしたので、徐々に今やってることのネタ出ししていければと思います。 追記: ドラクエのキャラのモデリング&レンダリングは、息抜きでたまに画像を貼り付けようかと。Shadeでやってます。コンセプトはオリジナルを保ちながら無駄にリアルに。DQ1制覇できるかな。 !!GarageBand 10 とMarvericks (2014/01/05) 正月休み中はクリエイティブな視点を養うということで(帰省時の恒例行事があって集中できないというのもあり)、ひさびさにGarageBand 10をいじってたのですが、Marvericks上では途中でピアノロールの入力がもたつくときがある気が。 {{ref_image garageband_10_20140105.png}} 外に出ることが多かったので、一曲の耳コピー、一週間では間に合わず。 いつも、うまく音をつかめずに凹んでしまう(^_^;; 後、ネットワークが不調な環境あり。接続してしばらくするとネット接続できなくなる現象発生。再起動で復帰。 iPhoneやNexus7のスマホ/タブレットでは問題ないのでMacBook Air機(+ Marvericks)のみかな。 これは、スマホ/タブレット用のモバイルWi-Fiルータ使用のネット接続だと問題ないのですが、、、。 Marvericksに移行したのが原因だろうか(たしか、前のバージョンでは問題なかった記憶があります)。 !!スライム (2014/01/04) 卵を描くかのごとく、意外に手間取った、、、。 スライム自身にテクスチャは未使用。餅っぽい質感を出したかったんですがいまいち。 {{ref_image dq_slime_20140104.png}} ドラクエのキャラをコンプリートするというのも練習になって面白いかもしれませんね。やらないですが、たまに気が向いたら追加するかも。 !![Unity] Simple Cloud Systemを試す (2014/01/01) UnityのAssetStoreで「Simple Cloud System」というのがあります。FreeのAssetです。 https://www.assetstore.unity3d.com/#/content/6715 sphereを作ってそこに雲テクスチャとアニメーションを割り当てるだけ、なのですがなかなかいい感じの雲具合になります。 以下、水面の挙動はUnity ProのWaterのAssetを使用(Unity Basic版のWaterだと映り込みが表現されません)。背景はSimple Cloud System。 {{ref_image unity_cloud_20140101.png}} 雲はゆっくりと水平にスクロールします。 パノラマ画像の背景(Skyboxとして使用)は地平線部分が気になるのですが、Simple Cloud Systemだと全体が雲に覆われるため適切に地面を広く配置するとそれらしく処理できそうです。 !!あけましておめでとうございます(2014/01/01) あけましておめでとうございます。 去年はなかなかft-labは更新できてませんでしたが、今年も変わらずTips系含めてネタ出ししていければと思います。 facebookでは、ほぼ毎日何か書いてますが、、、 facebookは「https://www.facebook.com/yutaka.yoshisaka」です。このサイトからたどれるように どっかに追記しないとですね。 新年一発目のレンダリングです。12/31に勢いでモデリングしました。 {{ref_image dq_go_20131231.png}} 先月末に日記に書いた疑似HDRでレンダリングしています。光源はナシ、背景のIBLのみ。 なお、背景はiPhoneアプリのPhotosynthで撮影したものです。 レンガのテクスチャ/地面のテクスチャもiPhoneで撮影したもの。 レンガですが、オリジナルの建物はもうこの世に存在していないレアなものだったりします。 1923年の関東大震災で壊滅した建物のレンガ壁の一部があるところに保存されており、それをテクスチャ素材にしています。 法線マップでの凸凹はBitmap2Material使って自動生成してます。