サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
Wikipedia
hideapp.cocolog-nifty.com
色々途中なのでちょっとお茶濁し記事ですヾ(゚ω゚)ノ゛ まず前提としてですが、 UnityのTerrain機能で作った地形はモバイルではまともに使えません。 ※動きはするのですが、重すぎて、他に処理が割けなくなります。 したがって、モバイル向けゲームでTerrainを使って 地形を作ろうとした場合、 基本的には何かしらの対応が必要になります。 ちなみに、Terrainは標準機能ではモデルデータをしては出力できません。 一応UnityからHeightMapは出力できますし、 Maya等でもHeightMapの読み込みはできますが、 正直面倒です。 そこで、TerrainObjExporter。 http://wiki.unity3d.com/index.php?title=TerrainObjExporter これで、Obj形式でTerrainを出力できるので、 このデータをMaya等の3D
巷で今話題?のドット絵シェーダーを試してみました。 http://kushi.lv9.org/pixelartshader/index.html 3Dモデルをドット絵っぽく見せるという、 出来そうでなかなか出来ない所を表現したシェーダーで、 色々可能性を感じる内容となっています。 で、早速試してみたのが↓。 どことなくドット絵っぽいですね。 心温まります(ぇ 元は以前作ったこいつです。 では早速やり方について。 ------------------------------------------------------------------ ■作り方簡易概要■ ※http://kushi.lv9.org/pixelartshader/manual/index.html にマニュアルがあるので、それでわかる人は以下読む必要ありません(笑 ①:BlenderがPCに入ってない人はDL&インス
昨晩Unity公式キャラクターのUnityちゃんのデータが 公開されてた事に気づいたので、 今日は急遽予定を変えて、Unityちゃんを検証と、 作成中のゲームへの入れ込みをしてみました。 ※Twitterに書いてたのをまとめた感じです。 ■Unityちゃん情報 ホームページ :http://unity-chan.com/ ポリゴン数 :約16000(△ポリゴンで) 表情 :ブレンドシェイプ モデルパーツ数 :21 ノード数 :約140 マテリアル数 :9 ドローコール :42 ボイス、モーション、専用シェーダー有 といった感じ。 とても魅力的にできていると思います。 これだけの物を無料で使えるのは素晴らしいですね。 (使う場合はHPの規約を熟読しましょう) ただ、PCで使うならともかく、 モバイルとして考えるとかなり贅沢仕様。 特にノード数とドローコ
Twitterで上げてましたが、一応ブログにも。 CGワールドのギルティギアの記事で法線の転写の記事があったようで、 くろろさんがSIで試してたのを見て、 Mayaでも試してみました。 ※二ノ国等で手法自体は結構前から出ていたのですが、試したのは初です。 やり方:「適応元選択」→「適応先選択」→「メッシュ」→「アトリビュートの転送」 ・適応後も適応元を編集することで、リアルタイムに編集可能 ・頂点やフェースを選択して実行することで、メッシュへの部分的な反映も可能 尚、キャラクター以外にも、背景の木等でも結構使われている手法のようです。 Unityに出力がてら、Toonシェーダーの見え方を動画にしてみました。 (Unity上のキャプチャです) 左が法線転写後、右が法線転写前です。 陰影がシンプルになって、情報が見やすくなっているかと思います。 リアルな表現には向きませんが、アニメ寄りの表現で
昨日、開発中のゲームを久々にAndroidにビルドしてみた際に、 何故か起動しなくなってました。 その為、Androidでの実機デバッグについて調査。 ※Androidでの実機のログを追うのは実はやった事なかった。 まず試したのはコマンドプロンプトでの表示。 ※前提として、AndroidのSDKが入っていて、USBデバッグが有効になっていること。 コマンドプロンプトで「adb logcat」を実行(自分の場合は以下のパス)※Win7 C:\Program Files (x86)\Android\android-sdk\platform-tools\adb logcat これで、Androidのログメッセージが流れます。(一応一部モザイク が、正直分かりにくい!という事で、別の方法を調査。 そこで良さそうだったのが以下。 ■Dalvik デバッグモニタサーバ ( Dalvik Debug M
制作記事というよりはTips寄りかも。 ストーリー煮詰まってきたので ボチボチ主人公モデルの着手を検討してますが、 その前に、キャラクターの髪の毛について 表現できるか心配だったのでJointの実験。 ※skinnedClothは以前別の機会に試して あまり上手くいかなかったので割愛。 そして実験に参加したのは髪の毛テスト君1号! 今回の為に(5分程で)生れまたキャラクター! ゚.+:。(・ω・)b゚.+:。 で、具体的な結果は↓な感じ。 ■頑張れ髪の毛テスト君(Joint実験中の動画) ■髪の毛テスト君の髪をキャラに置いてみて 少しパラメータ調整した動画 (分かりやすいようにJoint使用の髪のみ赤色にしてます) もう少し詰めれば実用できそう。と感じました。 また、それとは別に、 ・モーションデータによる制御を優先 ・モーションデータとのブレンド ・髪の根元だけモーションで制御もできるよ
オブジェクトの「スクリーン座標」/「ワールド座標」の変換は、 ・マウスクリックした位置を3D座標に落とし込む ・タップした位置に移動したり、何かを表示する 等にも使うかと思いますが、 今回は様々な位置にあるオブジェクトに対して固定サイズのUIを表示する場合 の例になります。 具体的には、下記図①のようなイメージになります。 ※白黒の物がUIだと思って下さい。 まず、オブジェクトの位置にUI(NGUIのUISprite)をそのまま出してカメラに写した場合、 UIの位置は正しいのですが、 図②のように、近距離では大きく、遠距離では小さく表示されてしまいます。 次に、「Perspectiveカメラ」と同位置に「Orthographicカメラ」を置いて、 「Orthographicカメラ」側でUIを写した場合、 図③のようにUIのサイズは均等になりますが、 UIが画面端に行けば行くほど、パースの分
あけましておめでとうございます。 色々作業は進めてますが、 書ける大したネタも無いので、最近購入アセットを紹介してみます。 ※全てUnity 5.3.1p1で確認。 ----------------------------------------------------------- ■Script Inspector 3($55) https://www.assetstore.unity3d.com/jp/#!/content/3535 Unity上でスクリプトを編集できるアセット。 MonoDevelopやVisual Studioで使う基本的な機能はほぼ揃っているので、 さほど変わらない感覚で編集できる優れ物。 特にConsoleやProject/Hierarchyからスクリプトを開く際のレスポンスが良いので、 結構お勧めできます。 ただ、作業が劇的に速くなったりはしないので、 その
ざっと配信をメモってたのでペタリ。 なので微妙に間違ってるところとかもあるかもです。 ■ロード、シーン切り替えの高速化 複数のシーンか単一のシーンか ⇒単一シーン ガベージコレクションが走るかどうかが一番大きいのでは。 初回ロードメリット? ステージの切り替え? リソースのロードに無駄がない。 メモリ管理が大変。 ⇒高速化重視じゃなければ手を出さない方が良いかも。 ネックになるがリソース指定での解放ができない。 画面遷移がきれいに。 ロードレベル呼ぶと時間かかるので、間に 軽いシーン(ローディング表示)を挟んでたりする。 ナビメッシュがシーンに紐づいているため、 複数シーン推奨? ⇒todoリストには入ってる。いつかは…。 リソーシーズは古い仕組み? あまり中の人はお勧めしてないかも。 アセットバンドル⇒プロ版じゃないと使えない ⇒サウンドのストリーミング再生ができない という問題も?サウ
早いもので、 今年もあと一週間を切りました。 今週の進捗に関しては、 現在は素材の調整、バランス調整、 バグ修正と、完成に向けての作業に集中してる感じです。 超地道・・・! ------------------------------------------ さて、話は変わりますが、 年末という事で来年について。 来年ですが、本業の都合で 今年の後半よりは作業ペースが落ちてしまいそうです。が、 完成に近づいている事もあり、 今回は完成までは止まらずに進められると思います。 それと、作業も本格的にゲーム&素材調整、バグ修正に入ったので、 毎週の定例進捗は一旦今回で終了しようと思います。 (進捗として書ける事がしばらくテンプレになってしまうので…) ※状況に変化があった際の不定期更新は行います。 また、もう少し落ち着いてきたら 何かしら見れる物も出したいと思いますので、 のんびりお待ち頂ければ
と、いう訳で、ポーズメニューの処理を一通り実装してみました。 久しぶりに動画でペタリ(ポーズ部分)。 ちょっと見た目が安いので、追々見た目は調整予定ですが、 処理的には一段落です。 今までは、バトル中に装備変更とかできてましたが、 本来は想定してない仕様なので、色々シンプルになってます。 で、ポーズメニューで出来る事自体は少ないので、 サクッとできるかなーとか 甘いこと考えてましたが、 思いの他手こずりました…。 ポーズメニューには前提として、 「Time.timeScale = 0;」で時間の経過を止める 事をしています。 そうしないと、動くすべての物に対して静止処理が必要になり、 大変な上にバグが山のように出る事が懸念されたため。 で、今回問題になったのは、おおよそtimeScaleが0なのが原因です(笑) 以下、引っかかった点等のメモになります。 ■timeScale0だとアニメーシ
またちょっと脱線ネタです。 Unityのエフェクトと言えば、一般的?には Shuriken(パーティクルシステム)かと思います。 簡単にエフェクトを作れるのですがこれ、 油断すると負荷がかなり増えます。 いくつか対処法を検討してみます。 ■粒や火花等をを多く出したい 真面目に数を出すと処理がヤバイ事になりますが、 これは疑似的な対処を比較的し易く、 1:複数の短冊状のメッシュをまとめて配置しておき、 UVアニメーションでたくさん同時に動いてるように見せる。 ※確か以前のCGワールドのモンハンの記事で詳しく書いてあった気がします。 2:複数の粒を1つのテクスチャにまとめて動かす。 とかでしょうか。 ■シェーダーが重い 軽いシェーダーを選びましょう(笑) また、描画範囲は極力抑えましょう。 とかありがちな所は流して、 今回ちょっと困った(ている)点が以下。 ■ドローコールを抑えたい 主な原因と
前回の記事に対してコメント頂きまして、 shurikenでのドローコール節約について、 UVアニメのパラメータを使ってなんとか出来ることが発覚。 折角なのでまとめておきます。 触る場所はParticleSystemの以下の場所。 Texture Sheet Animationの Frame over TimeをConstantにする事で、 何コマ目を表示するかを直接指定できます。 例えば、以下のような 512*512テクスチャを使う場合、 ・・・と、これだと分かりにくいので、 64ピクセル毎にグリッドを表示した画像をペタリ。 で、 どういった値を設定するかですが、以下の様にになります。 ①テクスチャを使用する場合 ・Tiles: x=2 y=2(画像全体の半分のサイズ) ・Frame over Time : 0 (画像を4分割した場合、左上から1番目のテクスチャ) ②テクスチャを使用する場
まだ完全に1シーンにできた訳では無いですが、 現状で実機で確認してみました。 ■旧ロード時間(8秒くらい) ■現ロード時間(ほぼ無し) と、ここだけ見ればキタ━━━━(゚∀゚)━━━━!! って感じではありますが、当然のようにそんな旨い話は無かったw 初回起動時間が長いよ、長すぎるよヽ(`Д´)ノ 別シーンの時は5秒程度でしたが、 1シーンにまとめたら13秒くらいに・・・ ・゚・(つД`)・゚・流石にこれはナイ。 そうなるとこのまま量産すると確実に乗り切らないので、 別の対処をしないとダメそうだ;; Resources.Load("オブジェクトパス"); とかで読む形にする必要があるのかな~とか考えつつ ちょっと調べてみた。 ■1Sceneのメリット・デメリット http://d.hatena.ne.jp/nakamura001/20120426/1335464256 を見てみたら大体予想
最近メニュー実装が主で、あまり載せるものがないので、 気分転換に試してみたものをペタリ。 とりあえずどんな物かの画像です。 ↑画像の剣軌跡の部分です。なんか歪んでます。 まぁ最近はよく使われてる手法ですね。 ちょっとだけ高級感が出ます。 モバイルでも動作してました(≧∇≦)b で、別にシェーダーを自分で作ったわけではなく、 以前落してあまり使ってなかった、 「Xffect」 のパッケージ内にある、 「xf_heat_distortion」 シェーダーを使ってるだけです。 熱歪み、という名前だけあり、本来別用途の物っぽいですが、 こんな使い方もイイよね!的な所で一つ。 ただ、デフォルトだと歪み具合が若干弱いので、 シェーダーを開いて_HeatForce のrangeの幅を広げて使うと良いでしょう。 ただ、単発の攻撃の場合は実際に動かした際に ちょっと地味目なので、 リアル寄りの作品ならそのま
さて、先ほど謎の問題にぶち当たりました。 昨日設定したSVNでMacからUnityを起動。 すると・・・ Σ(゚д゚lll)ピンクー!!! そして Σ(゚д゚lll)エラー!!! ・・・(((;-д- )=3ハァハァ いや、待てよ、この症状は見たことある。 ■強火で進め http://d.hatena.ne.jp/nakamura001/20120404/1333554280 ふむふむ。 >調べてみると改行が問題だったみたいです。改行がCRだとNGみたいです。皆さんはご注意を。 なるほど。つまり改行コードが問題だ、と。 これなら簡単に直せそうだ。よし、エラーが出てるデータをWindowsで確認してみよう。 ・・・ ;y=ー( ゚д゚)・∵. ターン ちゃんとなっとるがな! と、なるとMacに持ってった時点で・・・? というわけでOpen! ・・・⊂(´<_`⊂⌒`つ≡≡≡≡≡≡≡ズサー ・
うぬぬ・・・ 帰宅後気づいたら寝てました・・・orz さすがに疲れが溜まってきてるのかね(;・∀・) で、現状書ける進捗が無いので、今日の議題?はDrawCallについて。 なにそれ?という人もいるかもしれないので、簡単に説明します。 ◇DrawCallとは Unityにおける描画呼び出し回数。 これが多いほど、同時に多くの描画が必要になり、負荷が増大する。 ※若干ニュアンス怪しいですが大体こんな感じ。 DrawCallは油断して作ってると簡単に増大します。 初めてUnityを使ってそれっぽい物を作った時はDrawCallの存在を知らずに DrawCallが余裕で100を超えてました・・・(;つД`)ぉぉぅ もちろんモバイルではまともに動きませんでした(´・ω・`) 対策としては、 ・マテリアルの数の分DrawCallが増えるのでマテリアルの種類は最低限にする ・極力オブジェクトをまとめる
Mathfは結構使う場合が多い割に 良く忘れるので、Mathfの処理をメモ(一部)。 ----------------------------------------------- Mathf.Floor() 切り捨て Mathf.Ceil() 切り上げ Mathf.Round() より近い整数の値を返す(0.5の場合は偶数になる) Mathf.FloorToInt() 切り捨て(Int型に変換) Mathf.CeilToInt() 切り上げ(Int型に変換) Mathf.RoundToInt() 四捨五入(Int型に変換) Mathf.Abs() 絶対値 Mathf.Sign() 正負の判別(正を1/負を-1 で返す) Mathf.Clamp() 最大値の制限 Mathf.Min()
昨日のメガUnityユーザーミートアップ2013での ライトニングセッションであった 「DstAlpha で広がる表現の世界」で紹介された、 「目と眉を髪の前に出す処理」を早速試してみました! 前髪パッツンキャラなので効果が薄いですが、 まゆげとかが髪の上に表示されてるのが分かる...分かりますよね?(汗 アニメ調のキャラクターの場合はかなり有効そうですね! と、言うだけだとアレなので、 参考までに簡単に自分の方で試した流れを記載しておきます。 ①DstAlpha用のシェーダーを作成する アルファに対応したシェーダーであれば、 どれでも改変を行って使えるとの事でしたので、 NGUIに付属している「Unlit/Transparent Colored」 を複製して使用しました。 変えたところと言っても1点だけで、 Blend SrcAlpha OneMinusSrcAlpha ↓ Blend
本日TwitterでFovのMayaとUnityの違いについて助言を頂き、 調べた結果、ほぼ解決となったので、 情報共有の意味も含めて番外編として記載しておきます。 結論から言うと、Unityは垂直画角ベースなのに、 今までの算出方法は水平画角でやっていたことが原因でした。 で、改めまして使用した計算式です。 Fov = 2.0 * atan((0.5 * verticalFilmAperture) / (focalLength * 0.03937)) * 57.29578 これで算出して出力、モーションを再生し、 MayaとUnityの画面を比較してみました。 ※すべて同じ位置からのカメラで、画角&アスペクト比のみ変更した画像です。 縦横比が変わっても、極端な画角でも大丈夫! Unity側で補正掛けなくてもOKでした。 ただ、一つ注意点があります。 Maya上でのカメラも垂直画角ベースし
現在使えるスキルに合せてリソースを読み分けする処理実装を進めていますが、 それに伴い、ちゃんとリソースを動的に読み捨てできているかどうか見るために メモリの使用量を表示する事にしました。 今回使用する処理は以下の2つ。 //メインメモリの容量(メガバイト換算) SystemInfo.systemMemorySize //プログラムによって使用されるヒープサイズ(バイト単位) Profiler.usedHeapSize 1MB=1048576B って事で、表示に使う文字列は以下の様な感じかな?Profiler.usedHeapSize/1048576 + " / " + SystemInfo.systemMemorySize + " MB" この文字列をfps表示と同時に画面に表示するようにしましょう。 で、実行すると以下のような形になりました。 ※Androidでテスト 注意点として、実機
さて、Unity4の目玉システム?Mecanimですが、とりあえず初期設定周りを書いてみます。 何分調べながらなので見当違いの事書いてたらスミマセン(汗 1:Mecanimを適応するFBXデータのInspectorに新しくできた、 「Avatar」の「Create Avatar」にチェックを入れて、 Applyを押します。 するとFBXデータの階層に、Avatarファイルが追加されていますので、 この作成されたAvatarを編集します。 Inspector上から「Configure Avatar」を選択してください。 ※その際にシーンの保存を求められますので、保存を行って下さい。 2:次にキャラクターの各ノードがどういった役割なのかを指定します。 1を行うと、↓のような画面が表示されます。 Unity上で、このノードはここじゃないか?っていう物が自動配置されるようなので、 必要に応じて「い
はい、アスペクト比です。いわゆる画面比率ですね。 UI描く前にこの問題を解決しておこうかと思ったので、 仮素材より先にこちらを調べる事にしました。 メニュー周りを作成するにあたって、 スマホは機種毎に比率が違いすぎて、 UIを全て対応できるように作るのが非常にシンドイ、 のでなんとかしたいのですヽ(;´Д`)ノ iPhone ⇒3:2 iPad ⇒4:3 Android ⇒16:9(が多い 簡単にいえば、↓のような弊害を回避するためです。 数が少なければUI毎に個別の処理をしつつ 作れば対応できなくもないですが、 数が多くなってくると正直死ねます;y=ー( ゚д゚)・∵. なので、とりあえずメインターゲットとして考えているiPhoneのサイズに合わせて 作る事にしました。 ※範囲外は黒帯にする予定。 Unity側の処理としてはシンプルで、 カメラのRectを画面サイズに応じて可変
現在作成中のゲームでは剣の軌跡はプログラム軌跡を使ってます。 ↓のヤツですね。 しかし、場合によっては 実際の動きに依存しない軌跡をつけたかったり、 誇張したりしたい場合もあります。 なので、 モデルでの軌跡の作り方の一例を書いてみます( ´∀` )b 以下Mayaシーン ■その1:攻撃の軌跡を確認するために、ゴースト等を使って流れを確認しやすくする ■その2:カーブで軌跡を描く ■その3:カーブを2つ選択し、ロフトで NURBSを作成する ■その4:NURBSをポリゴンに変換する ■その5:軌跡用のマテリアルを適応し、マテリアルアニメーションを付ける ■おまけ:ポリゴンに厚みがないと特定の角度で薄く見えるので、 十字で作っておくと若干マシになったりもします。 ①特定の角度だと細くなるのを・・・・ ②十字型にポリゴンを組めば・・・ ③厚みが持てる! ・・・まぁそれでも特定の角度ではバレます
ImageEffectsに引き続き、UnityProの機能把握ついでに Light Probeについて簡単にまとめようと思います。 ■Light Probeとは ライトの当たり具合を事前に焼きこんでおく事で、 その空間空間にあったライティングを行える処理。 そしてなんと言っても軽い!! モバイルでも十分利用できます。超・実・用・的!(´▽`*) と、いう訳で、文章ではよく分らないと思いますので 画像付きで設定の流れを。記載してみます。 --------------------------------------------------- ①Lightを空間に配置する ここはライトマップを焼き付ける場合と同様に、 表現したいライトを設定します。 ※分かり易いように極端なライト置いてます。 ②LightProbeを配置する LightProbeは↓画像の位置にあるので、Emptyオブジェクト等
さて、UnityをProにした事で、色々と機能が使えるようになりましたが、 今回はその一部であるImageEffectsについてまとめます。 ImageEffectsはすべてカメラに対して付けるスクリプトとして構成されていて、 描画結果に対して効果を載せる処理になります。 どんなことができるかは、以下の画像を見てもらえれば 大体分かるかと思います。 まぁ全て効果的な使い方をしてるサンプルと言うわけではないので、 一部分かりにくいものもありますが、そのあたりは・・・スミマセン! 自分が最初試した時にハマッタのは、 カメラのDepthの干渉です。 もしカメラにImageEffectsを入れても処理が反映されないようであれば、 他に配置しているカメラが無いか、また、そのカメラのDepthに 効果を載せたカメラが負けてないか、等を確認してみる事をお勧めします。 で、実際これらが(処理的に)モバイル
先日AndroidでのUIのサイズがずれる件を軽くコメントしてましたが、 一応対応できたのでメモ程度に。 2DUIと3DUIとで対応を変えてます。 2DUI⇒UIAnchorのvoid Start ()に以下の文を追加 float hirituW = Screen.width/開発時の幅; float hirituH = Screen.height/開発時の高さ if(hirituW>hirituH){ hirituW=hirituH; } transform.localScale =new Vector3(hirituW,hirituW,1); 3DUI⇒3Dを表示しているパネルに、2DUIと同じ内容を実行するスクリプトを 入れる※Startの最後にDestroy(this);とかで消してしまうと良い。 ただ、3DUIは縦比率は自動で補正かけてくれるので、横幅で補正をかけたい時のみ みス
このページを最初にブックマークしてみませんか?
『Karasuのアプリ奮闘記』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く