読者です 読者をやめる 読者になる 読者になる

テラシュールブログ

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

【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は環境マップのキューブマップを元に環境光を設定してくれる仕…

【Unity】モデルより奥にあるスプライトやUIをモデルより手前に表示させる

モデルよりUIやスプライトの方を手前に配置したい時があります。例えば、ダメージエフェクトであったり、その他諸々であったり。 これを実現するもっともシンプルな方法は、カメラをもう一台用意して追記する事です。Layerを分ける必要が出ますが、後から追…

【Unity】リアルタイムライトがstaticなオブジェクトに対し、妙に強く反映される問題の解決法

Unity4からUnity5に移行した場合や、他のケースにおいて、realtimeのpointlightが妙に明るくなる事があります。特にMobile向けに開発している場合、これが発症するケースがあるかもしれません。 下の画像では、地面がstaticな場合と非staticな場合の比較です…

【Unity】ライトマップを頂点カラーに焼く

今回はライトマップを作成するのではなく、ライトの輝度を頂点カラーにベイクして使用するアプローチについて紹介します。 下の画像は綺麗に影が表現できていると思いますが、実際はAlbedo用のテクスチャしか利用していません。モデルのAOや地面に映り込む影…

【Unity】Unity 4向けのステルスアクション、Stealth を Unity 5 に持ってくる

今は昔、Unity のチュートリアル界にメタルギアソリッドのオマージュ的なステルスゲームのチュートリアルがあったそうな。 メタルギアオマージュなステルスゲームのサンプル Unity Projects 01: Stealth - テラシュールブログtsubakit1.hateblo.jp このチュ…

【Unity】Unity5のリアルタイムGI と LightProbe

光の当たっていない箇所は本来は暗くなるのですが、Unity5よりGI(グローバルイルミネーション)効果が導入され、拡散反射光も光の計算に取り入れられるようになりました。 GI有りとGI無しの動作はこんな感じです。GI有は光が反射し奥まで照らしていますが、…

Unity上でMMDモデルを独自アニメーションで走らせる

MMDモデルをRoot移動の無い、独自のモーションで走らせる方法についてです。この記事は以前に書いたUnity内でMMDモデルを自由に走らせる手軽な方法 の続き的な位置づけです。 目次 目次 MMDモデルおよびモーションの登録 RootMotionとアニメーション スクリ…

【Unity】Animatorのモーション切り替えが即座に行われないときの対処

Animatorのアニメーションをパラメータを使用して変更した時、アニメーションが即切り替わらない事があります。 たとえば上のGIF画像では、走り始めはキャラクターが滑っており、停止時にダッシュが継続してしまっています。 このケースは、アニメーション切…

【Unity】カメラの向きを参考に移動方向を決める

今回はキャラクターの向いてる方向やワールド座標ではなく、カメラが向いている方向にを元にキャラクターの移動するべき方向を決める方法について紹介します。 上の画面の場合、赤い球体までキャラクター(クエリちゃん)を動かしたい場合のスティック操作は…

障害物を動的に追加してルートを更新する #Unity

Navmeshで作成した移動ルートに障害物を追加し、別のルートを通るようにする方法を紹介します。この方法を使用すると、例えば下のような動きが可能になります。 通せんぼ pic.twitter.com/Y40BemdXA2 — 椿 (@tsubaki_t1) 2015, 7月 2 やり方 やり方…といって…

【Unity】Unity 5 で「光モノ系」を表現するあれこれ

今回は所謂「光りもの」の作り方について紹介します。Unity 4まではProでないと使用できなかったせいで光りものを使っている人が少なかったのですが、Unity 5 (personal)になりその辺りが自由に使えるようになったので、どんどん使っていきたい所です(但し…

【Unity】Unity 5.1でGear VR向けアプリを作る方法

Unity 5.1p1 でGear VR向けアプリを作る方法についてのメモです。 目次 目次 Gear VR対応アプリの作り方 自分のデバイスで動かせるようにする VRになるカメラ UIの設定について 関連 Gear VR対応アプリの作り方 メニュー>Editor>PlayerでPlayerSettingsを開…

【Unity 5】UnityがSketchup(skp)に対応したので椅子とか家とかディズニーランドとか色々読んでみる

Unity 5.1よりSketchupフォーマットにネイティブで対応し、FBXへ変換せずともUnityエディタでロード出来るようになりました。 またSketchupのフォーマットは他のFBXモデルと異なり、Generate Back FaceやMerge Coplanar facesといった設定が追加されており、…

シーンの読込時に"ライティングが無効になる/色が変になる"不具合の対処法

Unity5.0.2現在、シーンを読み込んだ際にライティングが無効になる感じのバグが確認されています。この現象は、どうやらMacかつライティングのベイク設定がContinuous Baking(5.1よりauto)の場合に発生するみたいです。 対策としては、Continuous Bakingの…

Unity5とSSRで床の反射を表現する、kode80SSR

kode80SSRは、Unity5上でスクリーンスペースリフレクションを行うオープンソースのアセットです。 kode80 - Screen Space Reflections in Unity 5 www.youtube.com SSRは一度レンダリングした結果を元に反射を描画する方法です。描画結果を再利用するので、…

Unity5でライトを焼く

Unity5よりライティングの方式がEnlightenへ代わり、ライティングのベースがRutime GIを始めとしたランタイムなライティングへシフトしました。 しかし実際問題ライティングは非常に高い負荷を持っており、特にモバイルデバイスやGear VR、Oculus Riftといっ…

UnityでGear VR用アプリを作るなら知っておきたいデバッグ方法

当初Gear VRでデバッグする方法が分からず地獄を見ました。なので、デバッグする方法について紹介します。 Gear VRに刺さずにアプリを起動する Wifi経由でADBを取得する デバッグ用のUIを表示する スクリプトデバッグする 再生中のゲーム画面をPCで確認する …

Unityに配置したモデルをアニメーション向けに最適化する

Unityでアニメーションを行うモデルを配置した際、パーツ次第で結構深い階層を持つことになります。実はUnityは深い階層を持つのは高いコストになるらしく、これを避けるのが望ましくあります。 下の図はハロゥインユニティちゃんのみのシーンですが、展開す…

Unity5の太陽をコントロールする

何故か唐突にフレアがマイブーム pic.twitter.com/fnYL0v8iJa — 椿 (@tsubaki_t1) 2015, 4月 22 唐突に何故かフレアがマイブームになりました。 実際は唐突と言うか、リパブリックでフレアを使いまくっていたためなのですが、実際使ってみたところ、案外面白…