テラシュールブログ

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

3D

【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】パーティクルにモデルを使いたい

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

【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」のロマン

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