テラシュールブログ

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

Unity

【Unity】CinemachineのVirtual Camera切替をコントロールする

今回はCinemachineのVirtual Camera間の切替時間をコントロールします。 #Cinemachine でカメラの切替 pic.twitter.com/aipJxHRTJF — 椿 (@tsubaki_t1) 2018年4月3日 カメラの切替とCinemachine カメラを切り替える カメラの切り替わる時間を制御する カメラ…

【Unity】Unity 2018のEntity Component System(通称ECS)について(2)

Entity Component System(通称ECS)のUnityでの使い方について書いていきます。今回の内容は、Unityの提供するECS APIの基本的な使い方、少しの応用、並列化までです。 UnityのGameObject/Componentとの連携、あと実際の使い方的なものは含みません。正直な…

【Unity】Unity 2018のEntity Component System(通称ECS)について(1)

今回はC# Job Systemと並びよく紹介されるEntity Component System…通称ECSについてです。実行可能なビルドと簡単ではないプロジェクトが公開されているので、ついでに紹介していきます。 ただ経験的に、UnityのECSの「データ指向設計」と「ECS」と「Unityの…

【Unity】UnityのC#側のソースコードがオープンに

UnityのC#コードが公開されてました。 Unityのソースコードが公開 今まではilSpy等逆アセンブリで公開されていたものが無断で公開されていましたが、キチンとオープンになったみたいです。 公開範囲はエディターとプレイヤーの範囲ですがC#のみで、C++で記述…

【Unity】PostProcessingStack v2を使ってみる

今回はPost Processing Stackの新バージョンである、Post Processing Stack v2を使ってみます。 今回はBloomを使用します。何故Bloomかって?私が好きだからです。 Post Processing Stack V2 Post Processing Stackの導入 カメラの設定 エフェクトを設定する…

【Unity】C# Job Systemを自分なりに解説してみる

今回はUnity 2018.1の目玉機能であるC# Job Systemについて紹介します。 C# Job Systemは並列処理である 並列処理と非同期処理(バックグラウンド処理)の異なる立ち位置 要素を並列して処理する C# Job Systemの特徴 実際に使ってみた まずはRaycastCommand…

【Unity】特別なコードをあまり書かずに "別シーン内のオブジェクト" へアクセスするアイディア

Unityで別オブジェクトの情報を取得したり操作する上で、最も簡単な方法はInspectorに露出して参照先をセットすることです。 ただ、このアプローチはシーンを分割する事になると厄介です。UnityのSceneは別のSceneのオブジェクトに対してアクセス出来ないの…

【Unity】動的に増やすGameObjectは別にPrefabでなくとも良い

オブジェクトの参照をセットする際の一番Unity的なアプローチは、Inspectorに露出してセットする事です。 ただ動的なオブジェクトとなるとInspectorは使いにくい所があります。この辺り、実際に正しい所もあるのですが、そうじゃない所もあります。 動的に増…

【Unity】影の表現を軽量化するアイディア

今回は影の表現を軽量化するTipsについてです。 影はキャラクターの立ち位置を明確にして存在感を出します。影により地面とキャラクターの距離感が判断出来たり、影により周囲の空間を把握しやすくする等です。 ただし影の表現は負荷としてはそれなりに高い…

【Unity】出来るだけ簡単に会話シーンっぽい何かを作る ~とりあえず文字とキャラが変わるまで~

ふと思いました。 ゲームジャムや簡単なゲームでノベルゲームのようなシステムは必須だよね。でも作るの面倒くさいし、導入も場合によっては面倒くさい。 なので、出来る限りUnityをプレーンなままでノベルゲーム…どころか文字表示での案内するだけの超絶簡…

【Unity】Unityで機械学習する「ML-Agent」を色々と試して得た知見とか

去年の9月頃、Unityで機械学習を行う ML-Agent(ver 0.01)が公開されました。 このライブラリを使用すると、Unity上で作成したゲームで機械学習によるAIを実行したり出来そうです。 最近このML-Agentを使用して色々と試していたのですが、ある程度形になっ…

【Unity】Animationのカーブ対象とオブジェクト名が不一致でMissingが起こした際に何とかする手軽な方法

今回はちょっとしたTipsです。 Unityでアニメーションを作成した際、AnimationClipに登録したボーン構造と、GameObjectの名前が一致してない場合、AnimationClipにMissing!と表示され動作しなくなります。 Avaterのようなリターゲットの仕組みを使っているな…

【Unity】キャラクターから見て対象への角度を「-180~180度」の範囲で求める

対象への角度を「-180~180度」の範囲で求めてみます。 アニメーションで右向き・左向きに曲がるといった際、どちら方向に曲がれば良いのかを求めたいときに使えます。 目次 角度を求める それは何をやっているの? せっかくなので(Root Motionで)向きを変…

【Unity】Particle SystemにLODを適応してみる

何となく思いついて、LODをパーティクルに適応したところ、出来てしまいました。何の役に立つのかと思ってみましたが、これが思いの外有効そうです。 例えば複数の演出で成り立っているパーティクルの場合、距離に応じて演出を追加していくのもアリかもしれ…

【Unity】Terrainの負荷やらDrawCallやらを下げるポイント

Terrainは名前の通り地形を作る機能です。ちゃんと作れば、こんな感じのステージが作れます。…地面があり、草木が茂り、地面には段差がある。 パっと見、使い方は微妙な感じですが、メイキングは参考になります。 www.youtube.com さて、これを夢見て初期設…

【Unity】パーティクルをGPU Instancingで描画してみる & 対応シェーダーを自作してみる

Unity 2018.1では、Instancing関係の機能が大幅に使い勝手良くなりました。 特にメッシュパーティクルの描画はCPUバッチングではなくGPU Instancingで行えるようになり、幾つかのケースでパフォーマンスが大幅に向上する事があります。 Unity 2018.1 でパー…

【Unity】Assembly Definition Filesという神機能

今回は地味ですが神機能なAssembly Definition Filesについて紹介します。この機能は地味ですが、Unity開発の上で発生してる問題を(意図せず)かなり解決してくれるので、Unity 2017.3以降を使う人は是非覚えておいた方が良いかもしれません。 物自体は、C#…

【Unity】dynamic voxel-based global illuminationを実現する SEGI

今回はUnityでdynamic voxel-based global illuminationを実現する、SEGIというアセットを試してみました。 github.com 今回試したSEGIは、他のものと同様に事前ベイク無しにGIを実現出来るみたいです。 実際に適当に試したのがコチラ。全てのオブジェクトは…

【Unity】"家具を動かせる" 部屋(ステージ)の見栄えを、出来る限り良い感じにする

綺麗なグラフィックを実現するのは8割以上はモデルとマテリアルのクォリティですが、〆としてライティングやポストプロセスも重要な要素の一つです。 ただし、場合によってはライティングのベイクを利用できないといったケースも存在するかもしれません。例…

【Unity】複数のオブジェクトの位置を元にオブジェクトを動かす、○○○Constraint系というオモシロ機能

Unity 2018で、Aim Constraint、Parent Constraint、Position Constraint、Rotatoin Constraint、Scale Constraintの5つのConstraint戦隊が登場しました。 この機能は、複数のオブジェクトの大きさや位置、向きを元に自身の位置を調整する機能です。 この機…

【Unity】AssetGraphTool、ノーコーディングで 「指定フォルダにインポートしたアセットの設定を、指定した内容に自動更新する」 機能を作る

AssetGraphToolは大量のアセット群を制御するのに向いているエディター拡張です。ノードベースで編集が出来るので、スクリプトを触らない人にも使いやすくなっています。 今回はAssetGraphToolを使用して設定の変更を自動化します。具体的には、特定のフォル…

【Unity】コンポーネントやアセットの設定をファイルに保存・他オブジェクトに反映できる「Preset」

Presetは簡単に言えば「コンポーネントやオブジェクトの設定をアセットとして保持し、コンポーネントに簡単に反映出来る」めちゃくちゃ強力な機能です。 今回は、Unity開発に置けるワークフローの中核を担えるかもしれないこの新機能を紹介します。 【Unity…

【Unity】”テクスチャの差し替え” で切り替わるスプライトアニメーションを作成する手順

今回はテクスチャーを切り替えてアニメーションを切り替える方法についてです。 上の画像のようにスプライトやAnimationClip、OverrideAnimationControllerを用意せずともキャラクターを差し替えることが出来ます。 目次 Unityのスプライトアニメーション テ…

【Unity】検索で見つかる 古いUnityマニュアルを、最新ページに切り替える

今回は簡単な(しかし最近よく使う)Tipsです。 見つかったマニュアルが古い マニュアルを最新にするTips 見つかったマニュアルが古い GoogleでUnityのマニュアルを検索した際、見つかるマニュアルが古いケースが多々あります。例えば自分の場合、Transform…

【Unity】Occlusion Portalについて

モデルが非表示になっている部分をスキップすることで3D空間を効率的に描画するOcclusion Cullingという機能の機能の一つ、Occlusion Portalsという機能についてです。 Occlusion Portalsという機能 どんなときに使えるのか 実際に使用してみる 簡単なステー…

【Unity】NavMeshSurfaceを使ってゲーム再生中にNavMeshをベイクする方法

今回は動的にNavMeshをベイクするNavMeshSurfaceについてです。 動的にNavMeshをベイクする 高レベルのコンポーネントを入手する NavMeshSurfaceを利用した動的なNavMeshのベイク まずは使ってみる NavMesh Surfaceのセット NavMeshSurface.Bakeの呼出 応用 …

【Unity】良い感じに見える(屋内向け)ライティングの設定手順

UnityTipsにライティングの設定手順があったので、実際に試してみました。 Last Man Sittingのライティング設定 手順 ステップ1 - とりあえず配置 - ステップ2 - ポイントライトを置く - ステップ3 - Reflection Probeを追加 - ステップ4-Directional Li…

【Unity】IExposedPropertyTableを使った、アセット↔シーン間連携

今回はPlayableDirectorで使用しているIExposedPropertyTableを利用してみます。 正直言えば使える機能では無いように思いますが、この実装からTimelineのResolver運用周りを見直すことが出来たら幸いです。 IExposedPropertyTableはアセットからシーン内の…

【Unity】Animatorをもっと楽に使いたい私の為の、再生中のAnimationControllerと追加AnimationClipをクロスフェードする方法

今回は再生中のAnimationControllerに、別のアニメーションを流し込む方法を見つけたので、こちらにメモします。 AnimationControllerという機能 AnimationControllerは突発的なアニメーションを挟むと複雑化する そうだ、Playable APIを使おう Playable API…

【Unity】ユニティちゃんシェーダーを使うと変な模様や色が出るケース

ちょっとヒットしたのでメモ。 スカートに変な色が… ユニティちゃんシェーダーパッチの適応 単純にデプスバッファの精度が足りない スカートに変な色が… ユニティちゃんをインポートすると、体の一部や服の一部が予想していた色とは違う色になる事があります…