e.blog

主にUnity/UE周りのことについてまとめていきます

iOSのARKitを使ってVRのポジトラをやってみた

概要 ずっと気になっていたARKit。やっと触ることができたので、ひとまず、空間認識して色々触ったあと、VRのポジトラに流用するのをやってみたのでまとめておきます。 AR自体がポジトラしてモデルなんかを表示できるので、これをVRモードのカメラの位置に転…

視錐台とAABBとの交差判定

概要 とあるオブジェクトが「カメラに映る対象か」というのを知りたいケースはあると思います。 また、通常のカメラだけでなく、「視界」を表した視錐台を定義してその中にオブジェクトが含まれるか、というのもあるとありがたい機能でしょう。 (例えば敵AI…

ComputeShaderを触ってみる その2 ~バッファ・テクスチャ編~

概要 前回の記事(ComputeShaderを触ってみる その1 ~スレッド編~)で、Compute Shaderのスレッドの概念について書きました。 edom18.hateblo.jp 今回は、Compute Shaderを実際に使って、少し意味のある計算をしてみたいと思います。 意味のある計算をさせ…

シンプルなBehavior Treeを実装してみる

概要 今回は、AIの中でも比較的スタンダードな、「Behavior Tree」について書きたいと思います。 (内容は、いろいろな記事を拾い読みしながら、自分の解釈で実装したものになるので、多少の誤解や間違いがあるかもしれません) 実装したサンプルはGithubで…

Daydream開発はじめたのでメモ

概要 開発環境の整備 adbをWi-Fi経由で実行する コントローラを使う コントローラの状態を知る Buttons GvrEventSystemを使う ハマったこと Single Passレンダリングを利用すると色味がおかしくなる Daydreamコントローラの感度が悪い Playerにコライダを設…

八分木(モートンオーダー)を使ってエリアを分割して処理負荷を軽減する

概要 今回の記事に関しては以下の記事をほぼそのまま参考にさせてもらっています。 実装自体はUnityで行い、コードもC#で作りましたがベースとなる理論は記事をそのまま参考にさせていただきました。 マルペケさんの記事には毎度本当にお世話になっています…

SkinnedMeshとBoneWeightについてメモ

概要 とある実装をしていて、アニメーション周りをわりと触ったのでそのメモです。 具体的には、メッシュカットを利用してメッシュを分断したあと、分断したメッシュもボーンアニメーションさせたくて実装したメモです。 実際に切断してアニメーションさせた…

UNETを使ってネットワーク間で処理を同期する

概要 前に使っていたNetworkViewを使った処理はdeprecatedになり、新しく UNET という仕組みが登場しました。 今回はこれを使っていくにあたって色々新しい概念が出てくるのでそれをまとめておこうと思います。 用語整理 UNETを使う上で、(慣れるまでは)色…

uGUIのEventSystemを理解する

概要 Unity4.6から導入されたEventSystem。 調べてみると色々と学びがあるのでメモとして残しておきます。 (若干、今さら感がありますが) まず最初に大事な概念として、このシステムはいくつかのクラスが密接に連携しながらイベントを処理していく形になっ…

ComputeShaderを触ってみる その1 ~スレッド編~

概要 並列化可能な、膨大な数の計算を行う場合はCompute Shaderの出番です。 今回はこの「Compute Shader」を触ってみたのでそのメモです。 Compute Shaderの最小単位 Compute Shaderを利用する場合、まずは.computeファイルを作成します。 そして作成したCo…

HTC Viveの埋め込みカメラの映像をテクスチャとして取得・表示する

概要 HTC Viveのヘッドマウントディスプレイには、フロントカメラが埋め込まれています。 このカメラは、メニュー表示時にカメラを起動し外の状況を確認したり、ゲーム画面自体にオーバーレイで周りの状況を表示して、HMDを脱がなくても色々とできるように、…

UnityでPivotを指定して同一スケーリングを行うスクリプト

概要 Unityでは標準ではスケールのPivot位置を変更することができません。 とはいえそうした要望はきっと多いと思います。 実際にググって見ると、モデリングツールで変更しろ、だとか、Empty Objectを作って子にしてからスケーリングしろ、だとか、色々な情…

異空間から転送されてきたように演出するマスクシェーダ

概要 今作っているコンテンツで、なにもない空間からオブジェクトが転送されてきたような演出をしたいと思い、そのために色々シェーダを書いたのでそのメモです。 以下の画像を見てもらうとどういう効果かイメージしやすいと思います。 今回はこれを実装する…

Photonを使ってネットワーク同期させる

概要 今作っているコンテンツはネットワークの同期を行って遊ぶゲームを想定していて、プラットフォームにPhotonを選びました。 ネットワーク同期をする場合、サーバ・クライアント型のものとP2P型のものとがあり、PhotonはP2P型のものになります。 UNETもPh…

VR内でつかんだオブジェクトをイメージ通りに投げる

概要 今回の記事は、この記事を熟読して実装したものになります。 www.gamasutra.com 今作っているVRコンテンツは、「VRコンテンツ内で誰しもが共通してやることは、掴んだものは必ず投げる」というところに着目して、「VRで投げる」をコンセプトに開発を進…

MenuItemでVR Supportedを切り替える

概要 やってることはただのMenuItemのEditorスクリプトですが。 UNETなどネットワーク対応のコンテンツを作っていると、複数のエディタを立ち上げてネットワーク経由でのやり取りをデバッグしたくなることが多々あります。 (ちなみに、同一プロジェクトを複…

VR空間内をデバッグできるようにマウスで移動する

概要 VR開発をしていると、HMDをかぶるのが意外と手間になります。 そこで、マウスで位置や回転を制御できると便利です。 ということで、カメラに適用しておくとさっと動かせるスクリプトを残しておきます。 こんな感じ↓ using UnityEngine; using System.Co…

VRモードをオフにして起動するバッチファイルを作る

概要 VRコンテンツのネットワーク対応をしていると、ビルドしてexeファイルとエディタのふたつでデバッグするときがあるんですが、VRモードを双方ともオンにしているとあとから起動したほうが終了されてしまいます。 (HMDはひとつのアプリでしか使えない) …

カスタムエディタを使ってシーン内にハンドルを表示する

概要 スクリプトをアタッチして、インスペクタからVector3型の値を操作する、というケースはままあるでしょう。 インスペクタから設定する場合、XYZそれぞれの値を手入力で入力して設定していくことになりますが、位置の調整だったり、回転だったり、といっ…

Standard Assetsの「GlassStainedBumpDistort」シェーダを覗いてみた

概要 「Standard Assets」に含まれている「GlassStainedBumpDistort」を覗いてみました。 どういうシェーダかというと、以下のように、オブジェクトの背面を歪ませる効果を実現するものです。 準備するのは歪ませるための法線を持たせたBumpMap用のテクスチ…

ゴール駆動型エージェントの実装(実装編)

概要 「ゴール駆動型エージェントの実装(概念編)」の続編です。 こちらでは、前回書いた概念を元に、実際にサンプルプロジェクトで実装した内容を解説していこうと思います。 ※ 前回も書きましたが、あくまで書籍を読んで実際に自分が実装したものの解説で…

ゴール駆動型エージェントの実装(概念編)

概要 Unityだけに関わらず、ゲームやそれに類するコンテンツを制作する際に必要となるのが「AI」の存在です。 格闘ゲームやシミュレーションの対戦相手のような明確な相手ではなくとも、例えばちょっとした敵が出現するコンテンツなどでも、AIで操作されたキ…

NavMeshAgentの挙動を手動でアップデートする

概要 NavMeshを使うことで、Unityでは簡単に目的までのパス(経路)を計算することができます。 docs.unity3d.com 経路探索して移動させたいオブジェクトに「NavMeshAgent」をアタッチし、「Window > Navigation」メニューで表示されるナビゲーション設定に…

ShaderLabについてメモ

もっぱらQiitaで記事を書いていましたが、そろそろUnityの話題に絞ったブログを作りたくなったので、過去に少しだけ使っていたこのブログをまっさらにしました。 今後のUnityの記事はここにまとめていこうと思います。 ということで、第一回目はメモとして残…