テラシュールブログ

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

【Unity】カメラが壁を貫通しないようにする

今回はCinemachineの機能の一つで、カメラが壁を貫通しないようにする方法についてです。 なんとなく微妙なカメラリグ カメラが壁を貫通しなくする 壁に遮られたら違う視点に切り替える 関連 なんとなく微妙なカメラリグ Unity初心者が作ったゲームで、素人…

【Unity】GDC 2018のセッション動画

GDCの時期に行われたセッションの動画が公開されました。 だいたい30個位です。 ECS(データ志向の説明も)やC# Job System、Pro BuilderやCinemachine、機械学習やらAR VR、その他諸々色々な内容が紹介されています。 www.youtube.com 一覧見ても分かりにく…

【Unity】Cinemachineでカメラに映る被写体のサイズをコントロールする

今回はCinemachineでカメラの被写体サイズをコントロールするのをやってみます。 被写体のサイズ 被写体の大きさをコントロールする 被写体の大きさを求める FOVを固定する場合 FOVが変化する場合 関連 被写体のサイズ カメラでキャラクターを撮影する時には…

【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の被写界深度のピントを動的に変更する

今回は被写界深度(Depth of Field)…ピントがあっていないモノがボケる表現についてです。 この被写界深度、何処にフォーカスを当てるのかが重要なポイントの一つなのですが、ImageEffect(Cinematic Image Effectや通常のImageEffect)と異なりPostProcess…

【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】ProBuilderで超適当に超適当なステージを作る

ProBuilderが無料になりました。 blogs.unity3d.com せっかくなので、ProBuilderを使用して超適当なステージを超適当に作ってみます。超適当なので、超適当です。超適当してください。 ProBuilderのインポート 超適当なステージを作る 部屋のレイアウトを決…

【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という機能 どんなときに使えるのか 実際に使用してみる 簡単なステー…