タグ

ブックマーク / tsubakit1.hateblo.jp (32)

  • 【Unity】影の表現を軽量化するアイディア - テラシュールブログ

    今回は影の表現を軽量化するTipsについてです。 影はキャラクターの立ち位置を明確にして存在感を出します。影により地面とキャラクターの距離感が判断出来たり、影により周囲の空間を把握しやすくする等です。 ただし影の表現は負荷としてはそれなりに高い物です。 ステージや背景は、影の計算を事前にテクスチャ等に焼き付けておく事で、描画にかかる負荷を下げる効果が期待できますが、キャラクターといった動くものに対して利用する事は出来ません。 なおForwardの考え方で、Deferredは知りません。要するにモバイル的です。 影の負荷 Unityの影の負荷を考える場合、以下の要素を考えます。 影の範囲に何個の影をキャストするRendererがあるのか 影を発生させるポイントライトの数 マテリアルの数 メッシュの頂点数 影の範囲は、単純に影の描画対象の増減です。 これはShadow Distanceで設定し

    【Unity】影の表現を軽量化するアイディア - テラシュールブログ
    peroon
    peroon 2018/02/26
    なるほどー!
  • 【Unity】Shadow ProjectionのClose FitとStable Fitについて - テラシュールブログ

    今回はQualityの設定にあるShadow Projectionの設定について、少し説明が分かりにくかったので検証してみます。 Shadow Projection Stable Fit Close Fit あくまで描画範囲を設定しているだけ 動かすと影がちらつく 描画判定はRecieve Shadow 感想 関連 Shadow Projection Quality SettingsのShadow Projectionのマニュアルを見てみます。 ディレクショナルライトから影を投影する 2 つの方法があります。Close Fit は高解像度の影をレンダリングするが、カメラのわずかな動きで揺れることがあります。Stable Fit は、低解像度の影をレンダリングするが、カメラの動きでは揺れません。 昨日のテクスチャに焼いた影とリアルタイムな影を混ぜる に書いた通り、Directional Li

    【Unity】Shadow ProjectionのClose FitとStable Fitについて - テラシュールブログ
    peroon
    peroon 2016/11/25
    “特にモバイルはShadow Textureのサイズが厳しいので、Unityの初期設定である150mなんて設定していると、かなり汚い影になります”
  • 【Unity】uGUIのImageとSprite Rendererの使い分け - テラシュールブログ

    今回はuGUIのImageとSprite Rendererの使い分けについてメモします。 ImageとSprite Renderer Sprite Rendererの振る舞い uGUI Imageの振る舞い 最適化に関するアプローチの違い SetPassの削減に関する振る舞いの比較 フィルレート・オーバードロー削減に関する振る舞いの比較 大量に描画した時と動かした時の振る舞いの比較 つまり、どのように使い分けるべきか Tips 関連 ImageとSprite Renderer Unityで2Dの絵を簡単に出す方法として思いつくのが、Sprite Rendererのような2D機能を使用する方法と、uGUIのImage系の機能を使用する方法です。 どちらも「テクスチャを表示する」という振る舞いなので、画面に表示したようなケースでは、全く見分けが付きません。 では、どちらを使っても良いのかと言わ

    【Unity】uGUIのImageとSprite Rendererの使い分け - テラシュールブログ
    peroon
    peroon 2016/10/03
    "uGUIはCanvas単位で動かす" 負荷が無視できなくなったらやろう
  • 【Unity】CPUプロファイラでパフォーマンスを改善する 後編 - テラシュールブログ

    CPUプロファイラに関する内容の後編です。 パフォーマンスの問題を解決する GCを減らす GCの発生要因を減らす コルーチンとGC GCの負荷を減らす オーバーヘッドとは何ぞや 実機で動作するアプリのパフォーマンス検証 出力したアプリを計測するメリット 実機で動作するアプリにプロファイラを繋ぐ 実機にてプロファイル結果を計測して取得する 参考 関連 パフォーマンスの問題を解決する パフォーマンスの問題はケースバイケースです。銀の弾丸が無い以上、実際にやってみて効果を確認する以外には無い感じであはあります。 また、一つの事柄に注目しすぎるのも問題です。例えばAnimatorはAnimationを比較するとAnimatorのほうが若干負荷が高いですが、SkinedMeshRendererの変形コストも加算するとAnimatorの方が負荷が低かったりします。 今回はそういった細々とした内容ではな

    【Unity】CPUプロファイラでパフォーマンスを改善する 後編 - テラシュールブログ
    peroon
    peroon 2016/07/04
    コルーチン、なるほど
  • 【Unity】ファイルサイズとメモリ消費を無意味に増やさない為の、AssetBundleと依存関係についてのメモ - テラシュールブログ

    今回はAssetBundleとAssetBundleの依存関係についてです。これについては、AssetBundleを使うなら最低限知っといた方が良いかもしれません。 AssetBundleとアセットの依存関係 複数のAssetBundleから特定のアセットを参照する場合 リソースは別のAssetBundleに格納して、それを読む 依存関係のあるAssetBundleを作る 依存先のAssetBundleは差し替えられる 依存関係のあるAssetBundleをロードする際の注意 感想 関連情報 AssetBundleとアセットの依存関係 Unityは非常に複雑な依存関係を持ちやすい構造になっています。例えばアニメーションする2Dキャラクターを表現するのみでも、結構色々なアセットを参照して出来上がっています。 3Dの場合は、これにさらにマテリアルやシェーダーといった物が追加されます。 整理して

    【Unity】ファイルサイズとメモリ消費を無意味に増やさない為の、AssetBundleと依存関係についてのメモ - テラシュールブログ
    peroon
    peroon 2016/03/31
  • ScriptableObjectについて - テラシュールブログ

    ScriptableObjectとは何かと色々と悩んできましたが、答えは簡単でした。データを格納するオブジェクトです。もう少し言えば、Unityがデータをシリアライズ・デシリアライズしパラメータを格納するための仕組みです。色々な事が出来る割に用途が分かりにくいのでけっこう悩んでしまいました。 ScriptableObjectの使い方 ScriptableObjectの用途 基的にはScriptableObjectはパラメータや参照を格納する用途で使用します。 例えば、沢山の敵が居たとします。その敵は大量に配置する予定のため、オブジェクトプールのように「再生成」ではなく「パラメータ初期化して再登場」させる物とします。その場合、何処かに「初期化時のパラメータを保持する場所」が必要です。 この時、初期化時のパラメータを敵各々が持つのは少し勿体無いです。1体が1MB分のパラメータを初期化に使うな

    ScriptableObjectについて - テラシュールブログ
    peroon
    peroon 2016/02/05
    ユーザデータの保存に使えるかもと思っていたが、ビルドしたら保存されないのかー
  • グローバルゲームジャム2016で、NPCに紛れたプレイヤーを見つけ出すゲーム「Creep IN Heresy(邪教に忍び込め!)」を作った話 - テラシュールブログ

    グローバルゲームジャム(GGJ)の八王子会場(東京工科会場、通称TUT)に参加してきました。当は他の会場に行きたかったけど乗り遅れた… 今回も東京工科会場は人数が多く、なんと8人という超大所帯(普通のゲームジャムは3~5人程度。人数が多いと難易度が上ります)でしたが、割と面白い感じのゲームが出来たかなと思います。 GGJ登録作品は最多の6804作品 グローバルゲームジャムも毎年人数が増え続けて、今回は6804作品ものゲームが(少なくともフォーラム上に)登録されました。 ちなみに、6804作品のうち4113作品のゲームUnity、1314作品のゲームが一覧にないエンジンを使用(もしくは未記入)で、残りの959作品のゲームがGameMaker・UnrealEngine・Construct2の順で分割する感じです。 2014年が4294作品(2288作品がUnity)、2015年が5443作

    グローバルゲームジャム2016で、NPCに紛れたプレイヤーを見つけ出すゲーム「Creep IN Heresy(邪教に忍び込め!)」を作った話 - テラシュールブログ
    peroon
    peroon 2016/02/02
  • Global Game Jam2016の前に発表されたゲームジャム向け資料まとめ - テラシュールブログ

    Global Game Jam直前!Unityエンジニアが伝授するゲームジャム対策勉強会 ゲームジャムを進める上でのアイディア出しや、覚えて置くと色々と便利なTipsが紹介されています。 個人的には配色の話とフォントは凄い大事だと思います。あとプロジェクトの完成図を松竹梅に分けて竹を目指す話。 speakerdeck.com ゲームジャムに使える!いろんな素材サイトとライセンスに関するご注意 AssetStore以外のゲームジャムに使用できるアセットについて紹介しています。 ゲームジャムは最悪プログラマ5とか笑えるチーム構成になる事が「稀によくある」ので、この手の情報は知っとくと色々と助かります。 ゲームジャムに使える! いろんな素材サイトとライセンスに関するご注意 from Yasuyuki Kamata www.slideshare.net ゲームジャムでのチーム製作における大事なこと

    Global Game Jam2016の前に発表されたゲームジャム向け資料まとめ - テラシュールブログ
    peroon
    peroon 2016/01/27
  • 【Unity】Unityでトランジションを使用した綺麗な場面転換(uGUI対応版) - テラシュールブログ

    以前に紹介した「場面転換」をよりスムーズな感じで行う処理ですが、uGUIに対応させるついでにUI単位で削除出来るようにしました。 UnityでuGUIのトランジション。パターンはマスク画像(白黒画像)を使用。トランジションするUIの下にあるUIも一緒に消える pic.twitter.com/YmJPSmAowy — 椿 (@tsubaki_t1) 2015, 10月 28 新しいFade Cameraは、ここからダウンロードできます。 サンプルはここからダウンロードできます。 目次 目次 新しいFade Camera 普通のトランジション設定 UIトランジション設定 スクリプトによる制御 関連 新しいFade Camera 今回のバージョンから、uGUIを基として動作するようになっています。 「最前面でuGUIのImageがエフェクトをかけて場面転換する」理屈です。 これの応用で、「テキ

    【Unity】Unityでトランジションを使用した綺麗な場面転換(uGUI対応版) - テラシュールブログ
    peroon
    peroon 2015/11/04
  • UnityのSpriteとパーティクルとかモデルの描画順番について - テラシュールブログ

    Unityのスプライトの描画順は「SortingLayer、Order In Layer、Z値」の順番で設定します。 このSortingLayerですが、実はLineRendererやParticleRenderer、Trail RendererといったSpriteRenderer以外にも適応されます。正しくは透明やブレンドを利用するレンダラーはSorting LayerがDefaultに設定されており、その描画順に影響を受けます。 そのため、Defaultより前のSortingLayerが指定されたスプライトがある場合、例えZ値的に手前にあったとしても奥に描画されます。 下の画像はスフィアを表示したMeshRendererにTransparentのシェーダーを付与して描画した結果です。球のZ値の方が手前に描画されているのですが、描画順はSortingLayerの順番に従って描画されていま

    UnityのSpriteとパーティクルとかモデルの描画順番について - テラシュールブログ
    peroon
    peroon 2015/09/14
    Particleに付けた
  • Unityの2DやuGUIのパフォーマンス最適化についての7つのTips - テラシュールブログ

    最適化というか、改善する話です。 モバイル向けに作った時に妙に遅かった場合、この辺りの要因が絡んでいるケースが多い印象です。この辺りは作る際に確認しながら作ると、後々痛みが少なくて良いかなと思います。 目次 目次 プロファイラで確認する エディタ上で動かすプロファイラの注意点 メソッド毎の負荷について DrawMeshを抑える バッチングされない謎の理由 バッチングしやすくする為には フィルレートに気をつける よくあるフィルレートで死ぬパターン フィルレート対策 uGUIにおけるフィルレート対策 Unity 2Dにおけるフィルレート対策 解像度を下げる ゲーム画面は低解像度、UIは高解像度 バッチについて注意すべき事 フォントの扱いについて テクスチャ更新時のスパイク 2つの対策 UIを動かす(変形させる)コストについて 物理演算について その他… VSYNCについて Tweenとか Pi

    peroon
    peroon 2015/07/08
  • テラシュールブログ

    ECSは現状正直な所、物量が必要な部分をECSで試して大まかな部分は既存のMonoBehaviourやUnityEngine系のコンポーネントを使うのがベターな回答です。今回はECSとGameObjectを連携させる手法についてを紹介します。 検証バージョン:Unity 2019.3、Entities 0.3.0 preview 4 Hybrid ECS GameObjectとEntityの同期 同期のサンプルコード GameObjectもしくはEntityの破棄について クラスを管理する「Managed」なComponentData ISharedComponentDataとの違い おまけ 関連 Hybrid ECS ConvertToEntityはGameObjectをEntityへ変換してくれるコンポーネントですが、ConvertAndInjectGameObjectを使用すると変換

    テラシュールブログ
    peroon
    peroon 2015/06/18
    “画面端にUI配置といった事はやめた方良い気がします。理由は簡単で画面端のUIを見ると酔います” VRではUIの作り方が違うのかー
  • 【Unity】Unity 5.1で追加された機能で個人的に気になった部分まとめ - テラシュールブログ

    Unity 5.1で多くの機能が追加されました。 blogs.unity3d.com 個人的に気になった部分を簡単にまとめてみようと思います。 unity3d.com 新しいマルチプレイシステム 今までのNetworkViewやRaknetといったマルチプレイヤーシステムに代わり、新しいネットワークシステムのUnity Multiplayer(通称UNET)に一新されました。 Unity - Services - Multiplayer それに伴い、UnityEngine.NetworkngのAPIが追加されました。使い方については今回の次にでも書こうと思います。 http://docs.unity3d.com/ScriptReference/30_search.html?q=UnityEngine.Networking ついでに過去のネットワーク用API(RPC等)が非推奨になりました。

    【Unity】Unity 5.1で追加された機能で個人的に気になった部分まとめ - テラシュールブログ
    peroon
    peroon 2015/06/12
    obj(1),obj(2),obj(3) ><
  • UnityのCoroutine(コルーチン)でできる事のメモ - テラシュールブログ

    目次 目次 n秒後に何かする コルーチンの停止 コルーチンの一時停止 コルーチンの完了を待ち合わせる コルーチンの結果を受け取る 進行状況が表現可能な 待機 その他Tips 参考 n秒後に何かする コルーチンは、時間を絡めた処理を実装するのに便利です。例えば以下のように記述すると、以下の様なフローが記述出来ます。 オブジェクトをクリックした際、色を「赤」へ変更 0.5秒待つ 対象のオブジェクトの色を「緑」に戻す gist.github.com yield return null;を使用すると次のフレームまで、yield return new WaitForSeconds(秒数);を使用すると指定秒停止します。 コルーチンとして実行できる処理は、戻り値がIEnumeratorのメソッドのみです。 ちなみにStartCoroutine_Autoなるメソッドが有りますが、これはStartCoro

    UnityのCoroutine(コルーチン)でできる事のメモ - テラシュールブログ
    peroon
    peroon 2015/04/06
    “複数のコルーチンを待ち合わせたい場合”
  • Unityで「ダメージやハッキングを食らった時に画面に走るノイズ」を表現する - テラシュールブログ

    画面にノイズエフェクトを走らせ、 所謂「不明なユニットが接続されました」ごっこをします。 これは自分の中では結構お気に入りのエフェクトなのですが、どうやらGlitchFXと言うらしいです。これをゲームのシーンに入れてみます。 GlitchFXの導入 導入は簡単でパッケージを入れるだけでOKです。 まずはGlitchFX for Unity を導入します。 keijiro/GlitchFx · GitHubよりGlitchFx.unitypackageを入手します。ココ 入手したパッケージをプロジェクトにインポートします。 下の画面のようになります。 GlitchFX の 使い方 使い方は他のイメージエフェクトと同様にカメラにGlitchFxをアタッチするだけです。 Glitchを使いたいシーンを用意します。 MainCamera(or Glitchしたいカメラ)を選択します。 Add Co

    Unityで「ダメージやハッキングを食らった時に画面に走るノイズ」を表現する - テラシュールブログ
    peroon
    peroon 2015/03/23
  • 特定ルートを巡回したりする方法[Unity] - テラシュールブログ

    ゲームを作成している内に、村人や敵兵を特定のルート巡廻させたり、障害物を特定ルートで動かしたり、レーシングゲームでカートを周回させたり等々、そういったギミックを作りたくなります。 この「Unityで特定のルートを巡回する」方法は、パっと思いつく限り、以下の3つの方法が考えられます。 一つがAnimationで巡回アニメーションを作成してしまう方法、二つ目がTweenで時間指定でオブジェクトを移動させてしまう方法です。この二つは非常に簡単に巡回システムを構築することが出来ます。そして3つ目が、Navmeshを利用した巡回です。 アニメーションが汎用的ならばAnimation、汎用的で無いならTween、地形が複雑ならNavmeshを選択すると良さそうです。 アニメーションを使用した巡回 アニメーションを使用した巡回は巡回の中でもっともシンプルです。たとえば、特定のオブジェクトの周りを巡回する

    特定ルートを巡回したりする方法[Unity] - テラシュールブログ
    peroon
    peroon 2015/03/06
    “レーシングゲームでカートを周回させたり”
  • 【Unity】冬道や地下鉄ステージのメイキングムービー【スピードレベルデザイン】 - テラシュールブログ

    あまりにもステージを作るのが楽しそうだったので、メモしておきます。 道中を作るムービー Speed Level Design: Winter Road [ Unity 5 ] - YouTube 地下鉄を作るムービー Speed Level design - Metrò [Unity 3D] - YouTube アジア風の城まわりを作るムービー Speed Level Design: Asian bridge [ Unity 5 ] - YouTube 手順 まず、Terrainで凹凸を作成 凹凸の上とか壁に岩を配置 「岩のテクスチャ」っぽいので隙間を塗る Terrainと岩の間を馴染ませる用途と思われます。 石を配置したり草をTerrainで配置したり 背景にも木を配置したり カラコレっぽいのでカメラの色を調整 パーティクルで「雪煙」を表現

    【Unity】冬道や地下鉄ステージのメイキングムービー【スピードレベルデザイン】 - テラシュールブログ
    peroon
    peroon 2015/03/01
    Speed Level Designっていうのかー
  • Unityで、Editor シーン上にプレハブとしてオブジェクトを配置する - テラシュールブログ

    プレハブとしてオブジェクトを作成するには、以下のようにコードを記述します。 #if UNITY_EDITOR var tile = UnityEditor.PrefabUtility.InstantiatePrefab(prefab.gameObject) as GameObject; #else var tile = Instantiate(prefab.gameObject) as GameObject; #endif 要するに、InstantatePrefabを使用すると、インスタンス化ではなくプレハブとしてエディタに配置します。この方法ならば、プレハブとしての機能を活用出来るので、配置したオブジェクトの一括変更やパラメータの調整を楽に行うことが出来ます。ただしこれはEditor専用機能なので、実行時向けにInstantiateを記述しておくと吉です。 この方法を上手く使用すると、起

    Unityで、Editor シーン上にプレハブとしてオブジェクトを配置する - テラシュールブログ
    peroon
    peroon 2015/02/26
    prefabの調整に使用
  • UnityのuGUIで「UIのアニメーション制御」 - テラシュールブログ

    目次 目次 UnityのuGUIで「UIのアニメーション制御」 uGUIでアニメーション アニメーションの作成手順 画面の準備 AnimatorとAnimationClip作成 キーフレームの登録 AnimationControllerの設定 AnimationControllerをスクリプトで制御する 感想 ライセンス 関連情報 UnityのuGUIで「UIのアニメーション制御」 UnityのアニメーションシステムのMecanimは、2Dで見た場合は複雑な上に面倒なので使い勝手が少し悪いですが、まあ使えなくはないです。むしろ凝ったUI表現を組もうと思った時、意外と使えるかもしれません。 特にUI全体を動かすようなアニメーションの場合、各アイテムの動きを合わせやすいAnimatorはちょっとだけ便利かもしれません。 ・・・単純なUI操作の場合、Tween使ったほうが楽だと思いますが。Ani

    UnityのuGUIで「UIのアニメーション制御」 - テラシュールブログ
    peroon
    peroon 2015/02/12
  • 逆引き、UnityのuGUIのレイアウトトレーニング(uGUI RectTransform入門その2) - テラシュールブログ

    RectTransformの座標指定についてです。 内容は以前に書いた入門の焼き直し+αです。理屈については大体書いてるので、そっちを参考にしてくれると助かります。 UnityのuGUIのレイアウト調整機能について解説してみる(RectTransform入門) - テラシュールブログ 目次 目次 親RectTransformのサイズを変えても位置を固定したい場合 レイアウト固定したまま親のサイズに合わせる イメージのアス比を固定したまま拡大縮小 Imageをスプライト来のサイズに設定したい場合 親のサイズに合わせて引き伸ばすが余白も欲しい 高さの異なる画像を並べたい場合 スクリプトからRectTransformの位置を動かしたい 回転の中心点をずらしたい 子のRectTransformのサイズで親の大きさを変えたい モバイル端末で動かすと画面が超小さい場合 アニメーションで画面端から画面

    逆引き、UnityのuGUIのレイアウトトレーニング(uGUI RectTransform入門その2) - テラシュールブログ
    peroon
    peroon 2015/02/08