テラシュールブログ

旧テラシュールウェアブログUnity記事。主にUnityのTipsやAR・VR、ニコニコ動画についてのメモを残します。

3D

【Unity】VR向け?のリストビュー List View Framework

少し面白いアセットを見かけたのでメモ。 VR向けなList View Framework リストビュー、しかしuGUIでは無い 要素は使い回すタイプ 使い方はまた今度 関連 VR向けなList View Framework List View Frameworkは、リストビューを構築するのに便利なアセットです…

【Unity】シーンの一括展開を行うSceneSet

Unity 5.5からシーンの一括展開を行う「エディタ機能の」SceneSetが追加されました。 SceneSet SceneSetの設定 SceneSetの作成 感想 関連 SceneSet SceneSetは、シーンの展開を一括で行うエディタの機能です。 例えば複数のシーンを幾つかの組み合わせで開く…

【Unity】Unity 5.5からオブジェクト選択がアウトライン方式になった

Unity 5.5からオブジェクトの選択方式が「アウトライン」になりました。以前は選択中の情報はワイヤー表現でしたが、アウトラインになったことで複雑なシーンでも選択しやすくなったんじゃないかなと思います。 アウトラインの色を変える アウトラインからワ…

【Unity】別AssetBundleへ分割したモデルが、分離されず元シーンに残ってるケースについて

AssetBundleにて依存先と依存元を分割すれば、ロード時間やアセットのメモリ使用量等を上手く節約出来ます。 ただ、このアセットの分割でえすが分割されないケースがあります。 AssetBundleを分割する AssetBundleが分割されないケース BatchingStaticしたメ…

【Unity】Animatorで動かすオブジェクトをスクリプトでも動かす際の注意

少し面白い挙動について調査したので、メモ。 (前提)モデルにスクリプトで回転を加える (前提)さらに色を変えるのみのアニメーションを加える (問題)回転を設定したアニメーションを加えると動かなくなる 位置が変化するアニメーションが設定されてい…

【Unity】Navmeshで取得した経路をApplyRootMotionで移動させる手っ取り早い方法

今回はNavmeshとApplyRootMotionを組み合わせて動かす手っ取り早い方法についてです。 ApplyRootMotionとNavmesh NavmeshAgentが設定されたオブジェクトの移動を止める 終了距離が近づいてきたら、動かないアニメーションに切り替える 要するに 関連 なお、…

【Unity】目的地へ辿り着くための矢印を表示する

今回は、ゲームで道に迷った(哲学的な意味ではない)際の目安となる、目的地への道順を示す矢印の表示についてです。 ゲーム進行の矢印 方向を示す3つの方法 ゴールに至る方向だけを示すパターン 中間点で方向を示すパターン 経路を探索して方向を得るパタ…

【Unity】ライト毎に作る影の解像度を設定する

Unity 5.4からライト毎に影の解像度を設定出来るようになりました。 影の解像度設定 関連 影の解像度設定 Unity 5.4から、ライト毎に影の解像度を設定することが出来るようになりました。 GetComponent<Light> ().shadowCustomResolution = 解像度; これで影の解像</light>…

【Unity】物理演算で動かすオブジェクトが壁を貫通する問題と対策

キング・クリムゾン! 『キング・クリムゾン』の能力では、この世の時間は消し飛び・・・・・・そして全ての人間は、この時間の中で動いた足音を覚えていないッ! 当たり判定を弾が貫通する 対策1(補完回数を増やす) 対策2(Collision Detectionを使う) Collis…

【Unity】Matcapテクスチャを動的に作ってみる実験

Matcapなんてバカ正直にPhotoShopで球体塗らんでもええんやで(・ω・)適当に球置いてライトばかすか置いてSS撮ったら完成やで pic.twitter.com/mAoXbl2GTy — ntny (@nD_ntny) 2016年7月1日 成る程、そんな手が…!? あれ、Unity内で出来るなら動的に云々出来…

【Unity】パーティクルにモデルを使いたい

今回はパーティクルにモデルを使用する方法と、モデルを使用した際「色」を設定出来るシェーダーについてです。 パーティクルをモデルで表現する パーティクルに色を設定したい パーティクルの色を設定するには パーティクルにメッシュを使用する問題点 参考…

【Unity】Matcap、事前に用意した綺麗な光表現を利用する

今回はMatcapについて紹介しようと思います。 Matcapを利用した材質変化。思ってたよりソレッポイ絵が出来てビックリ。 pic.twitter.com/F5swLI5YXG — 椿 (@tsubaki_t1) 2016年6月10日 手前からゴーストユニティちゃん、トゥーンユニティちゃん、クリスタル…

【Unity】GPU Instancingで遊ぶ

Unity 5.4から搭載されるGPU Instancingで遊んでみます。 docs.unity3d.com GPU Instancingは、複数の「同一メッシュ」かつ「同一マテリアル」なオブジェクトがあった場合に、GPU側で一括で描画してくれる技術みたいです。 扱いにかなりクセがありますが、上…

【Unity】StandardShaderをAssetbundleに格納した際にNormalやAlphaが動作しない問題の回避方法

AssetBundleにシェーダーを格納し常にロードしておく事で、シェーダーのコンパイルやGPU転送コスト、それにシェーダーのメモリ消費を回避出来ます。特にシェーダーのコンパイル・GPU転送等は地味に馬鹿にならないコストを要求するので、出来れば積極的に排除…

【Unity】引き伸ばしてもテクスチャが伸びないキューブを作る MasterCube

UnityのCubeを引き伸ばしても、テクスチャが引き伸ばされずにしき詰めてくれるアセットを見かけたので、メモします。 Master Cube Cubeを引き伸ばしてもテクスチャが伸びなくする CubeのUVを面毎に調整する メッシュを結合して単一のメッシュにする 感想 Mas…

【Unity】GPUベースでパーティクルを行うKvant/Spray

UnityでGPUベースのパーティクルを行う話です。 GPUパーティクル GPUベースでパーティクルを行うKvant/Spray v2 導入 使い方 関連 GPUパーティクル UnityのParticle System、通称「Shuriken」は現在CPUベースで動作しています。Unity 5.4では殆どの処理をメ…

【Unity】Cinematic Image EffectsのBloomの使い方

以前紹介したCinematic Image Effectsですが、新しくBloomが追加されてました(追加されたのはだいぶ前ですが)。今回はその使い方についてメモします。なお、Cinematic Image Effectsは内容がちょくちょく変化するので、UIが変化してるかもしれません。その…

【Unity】AnimationControllerがプロジェクトを散らかさない設計についての模索とサンプル

Animatorの運用方法について、5つのアプローチを試しに試作してみました。 サンプルプロジェクト Style1:各ステートマシンにて制御 Style2:ステートマシンのアニメーションを上書き Style3:AnimatorOverrideControllerを「シーンにシリアライズ」 このサ…

【Unity】同じモデルなのに片方だけベイクした影が汚い場合の対処法

【問題】上の画像には赤い2本の棒がある。これらは同じメッシュを使用している。これらの棒に影をベイクした際、左の赤い棒にかかる影はハッキリしているが右の棒にかかる影はボケている。このこの違いが発生する理由を記入欄にry。 【答】左の棒はスケー…

【Unity】Unity Collaborate(Beta)を試してみる

Unity Collaborateのベータが始まったので、試しに使ってみました。 プロジェクトをチームで共有するUnity Collaborate プロジェクトの共有方法(最初) プロジェクトの共有方法(参加者) ファイルをサーバーへパブリッシュ(コミット) プロジェクトを最新…

【Unity】ユニティちゃんを転がすゲーム、UnityChanBallRollはどのように作られていたのか

新人ブートキャンプに使われたユニティちゃんを転がすゲーム、UnitychanBallRollについて解析してみます。 このゲームは、Roll a ballの発展形っぽい感じで「キャラクターがステージ上に配置されているアイテムを回収しながら、ゴールへ向かう」といった内容…

【Unity】Lightprobeの影響をモデルやパーティクルの一部に限定する、LightprobeProxyVolumeを使ってみる

今回はUnity 5.4(オープンベータ中)の新しい新しい機能LightprobeProxyVolumeについて、少し分かりにくいなと思ったので色々と確認を兼ねてメモします。 間接光(GI)と動的なオブジェクトとLightprobe Lightprobeと大きなメッシュ LightprobeProxyVolume …

【Unity】ライティングを理解するためにコーネルボックスを作って遊ぶ

コーネルボックスをご存知でしょうか? なにやらライティング関連のデモによく出てくるアレです。つまり、コレです。 ちょっと週末にライティングについて色々と聞いたので、今回はコーネルボックスを作ったりして、ライティングについて色々と試してみよう…

【Unity】星空を作ってみんとす

ふと重いて星空を作ってみんとす 機能試しに作ってみた星空です本当にありがとうございました。 作り方 空を暗くする 星空を作るためにパーティクルを作る パーティクルが半球ドーム状に作られるようにする 星空の星の数を決める 関連 作り方 今回使うパーテ…

【Unity】【uGUI】Screenの座標とWorld(3D)座標の変換について

HUDのように、UIをキャラクターの上に表示する方法について、少し悩んだのでメモします。 World SpaceとScreen Spaceについて World座標をUIの座標へ変換する World Space を Screen Space Overlayへ World Space を Screen Space Cameraへ World SpaceをWor…

【Unity】SphereCastやBoxcastで、球や箱のあたり判定が通過できるか判断する

今回はRaycast以外の判定、SphereCastやBoxcastについてです。 足場に微妙に乗ってる時とRaycast BoxCastとSphereCast BoxCastとSphereCastの死角 関連 足場に微妙に乗ってる時とRaycast ゲームを作っていると、接地判定や落下判定のために「太い線判定」を…

【Unity】3D空間にUIをメッシュのように表示する

uGUIを使用して3D空間上にUIを使用するアプローチとその注意点についてです。 3D空間にUIを配置 間接光の影響を受けられない 描画順 感想 関連 3D空間にUIを配置 CanvasのRender modeをWorld Spaceに変更すると、UIをワールドスペースつまり3D空間上に配置す…

【Unity】3Dゲームに使うカメラワークの用語と、その設定について

今回はカメラワークについてメモします。内容は3Dゲームをおもしろくする技術を参考にしつつメモして行きます。内容に誤りがあるかもしれないので、ツッコミ大歓迎です。模写ではなく面白そうな部分を抽出してUnityで再現してるだけなので、詳しく知りたい人…

【Unity】マルチシーン編集する際に知っておきたい、複数のシーンに跨ったライトマップを操作した時の挙動について

今回はマルチシーン編集(Multi Scene Editing - MSE)による複数シーン編集とライトマップについてです。 Unity 5.3より複数のシーンを同時に編集可能になりました。これにより広大なシーンを複数のシーンに分割し段階的に構築する事や、屋根や壁といった編…

【Unity】戦車が撃ち合うゲーム「Tanks!」はどのように作られてるのか

ふと思いついて、Unityの「Tanks!」の中身を解析してみます。 ゲームの内容は、1対1で戦車が出て撃ち合い、先にHPを全損させた方が勝ち…といった感じです。 パンツぁーフォー。 ステージの構造 各コンポーネントの役割 ゲームシステム側の話 GameManager Ca…

【Unity】キャラクターやギミックが見える位置になったらオブジェクトを生成する

シーンに全てのオブジェクトやギミックを追加し一気に読み込むと、実際に操作可能になるまでに時間がかかります。そこで、ステージやキャラクターといった「遊びに必要な要素」は先に読込み、それ以外のNPCや遠方のモデルは追加で読み込むアプローチが思いつ…

【Unity】CullingGroupで視界内にある座標から敵を生成しないようにする

CullingGroupの使用例で、敵がプレイヤーの視界内にある場合は生成しないアプローチについてです。視界内から常に敵が生成されるのであれば、敵の出現ポイントを見極められてしまったり、最悪置き撃ちされてスコアを稼がれてしまいます。それを防ぎます。 使…

【Unity】CullingGroupについて

CullingGroupとは オブジェクトが実際に見えている場合のみ処理を行う Renderer.isVisible オブジェクトとの相対距離で処理を切り替える サンプル CullingGroupとは CullingGroupは、見えないオブジェクトや遠いキャラクターのギミックに対して制御を行うた…

【Unity】リアルタイムGIの影響範囲を表現するClusteringとLit Clusteringについて

Unity 5.3よりシーンビューの項目に新しく「Clustering」と「Lit Clustering」が追加されました。 「Clustering」と「Lit Clustering」はPrecumputed Realtime GIの解像度や影響範囲を表現するために使用する項目です。UnityのリアルタイムGI(Global illumi…

【Unity】LOD(Level of Detail-距離に応じたハイポリ/ローポリの切替)をキャラクターで使用する方法

Level of Detailをキャラクター・・・と言うかアニメーションを持つキャラクターに対して使用する方法についてです。 LOD(Level of Detail) キャラクターとLOD 一つのAnimatorでLOD やり方 関連 LOD(Level of Detail) Level of Detailは距離に応じて描画…

【Unity】戦車!飛行機!直立2足歩行!!三段変形するロボ「Transforming Robot」のロマン

人型巨大ロボ、それは夢。たとえ戦車より被弾面積多くて、機動力無くて、燃費が悪くて、火力も低くて、操作性が悪くて、構造が複雑で、だから故障率高くメンテナンス性悪そうで、稼働率低くても、ロマンがあるので何の問題もありません。そこに変形機構なる…

【Unity】シネマティックイメージエフェクトを試してみる(1.0.1)

Unity 5.3で導入予定だったCinematic Image Effects(シネマティックイメージエフェクト)を試しに使ってみます。 シネマティックイメージエフェクトの導入 シネマティックイメージエフェクトの利用 スクリーンスペースなリフレクションの利用 トーンマッピ…

【Unity】パーティクルで雨を降らせてみんとす

ふと思いつきて雨などをつくってみんとす。 作ってみる まずパーティクルを作成し、下を向けます。雪完成。 初期値だとコーン状に放射なので、Shape(出現範囲)をBox(箱)状に変更し、平べったくします。広い範囲に雪が降ります。 雨は細長いものなので、R…

【Unity】特定のモデルにのみImageEffectがかからないようにする

今回は特定のモデルにのみImageEffectがかからないようにするアプローチについてです。例えば上のように、他のユニティちゃんはGrayscaleがかかっているのに特定のモデルにはGrayscaleがかからない…といった表現に使えます。 なおForwardレンダリングのみ動…

【Unity】ライトマップのベイク時間を短時間で終わらせる

最近、Unityの割と大きめでリアルな感じのデモが幾つかきました。例えばThe Courtyard(上画像)とか、The Blacksmith: Environments(下画像)等です。 で、広範囲かつリアルなのは良いのですが、この手の大きなデモ・大きなステージはライトマップのビルド…

【Unity】動的にキャラクターの衣装を差し替える

動的にキャラクターの衣装…というかメッシュをを差し替える方法について紹介します。 Unityで動的な衣装切り替え pic.twitter.com/b2BfLsxUCt — 椿 (@tsubaki_t1) 2015, 10月 23 目次 目次 キャラクターのMeshを差し替える マテリアルの登録順番による問題 B…

【Unity】オブジェクトの大きさを一括で変更する

オブジェクトのサイズを一括で変更します。 これは「ゲームのサイズを適正なサイズに設定する」事に特に効果があります。 Unityのボックスの1は1mとして扱われています。このため、物理演算を2dチックなゲームに組み込むと動きが「ふわっと」や「モッサリ」…

【Unity】Navmesh(経路探索)でRaycastを行う

Raycastを使用すると送信元と送信先のオブジェクト間で障害物があるかを判断する事が出来ます。 これは例えば「銃弾が壁に接触したか判断する」「敵の視界から自身が映っていないか判定する」「地面の上に乗っているか判断する」「画面をタップした際にどの…

【Unity】Ambient Occlusionを設定

物の接地感を出すのにAmbient Occlusion(AO)を使うのは中々に有効です。その設定方法が少しわかりにくかったのでメモしておきます。 Ambient Occlusion Unity - マニュアル: Screen Space Ambient Occlusion曰く、 互いに接近している折り目、穴、地表を暗…

【Unity】背景をSkyboxで描画する

背景のモデルを全部Skyboxで描画してしまうアプローチについてです。 「遠距離にあるモデル=小さく・大量に描画」な訳ですが、もし背景が動かない場合は非常に勿体ないような印象を受けます。というのも ライトマップ焼くときに背景は別で焼ける(手前の微…

【Unity】影とキャラクターで異なるアニメーションさせる方法

影とモデルで異なるアニメーションを行わせる方法について紹介します。 この影とモデルが異なるアニメーションを行うギミックは単純です。「影を描画するだけのモデル」と「影を描画しないモデル」の二つを用意し、各々に異なるアニメーションさせれば良い訳…

【Unity】目やパーツの一部を光らせる

モデルを用意するとき、目や体の一部のパーツを光らせたい事があります。例えばロボの目は光っているべきですし、ロボっ娘の回りには無駄に光るパーツが付いてたり浮いてたりします。 それが別パーツであればEmissionをとりあえず上げてれば良いのですが、別…

【Unity】モデルを透明にする (2)

今回はよりアニメ寄りというか、正しくないが見た目の良い透明の表現について色々とやっていきます。 前回のエントリー(単純に透明マテリアルを設定する方法)はこちら。 tsubakit1.hateblo.jp 目次 目次 透明なオブジェクト Depthバッファへの書き込み Dep…

【Unity】モデルを透明にする (1)

Unity 5のStandardShaderの透明には2種類の透明があります。 一つはガラス的な透明(Transparent)。つまり、材質的に透明になります。 もう一つはフェード(Fade)、透明になると幽霊のように存在が消えます。 この設定はStandard ShaderのRendering Modeで…

環境マップとIBLとReflectionProbeについて少し整理

目次 目次 はじめに 環境光を全天球画像から設定する 環境マップとSkybox ReflectionProbe 関連 はじめに Unity 5で変わった分かりやすい変更点の一つが、IBLとReflectionProbeの導入です。 IBLは環境マップのキューブマップを元に環境光を設定してくれる仕…