e.blog

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

2017-01-01から1年間の記事一覧

ランタイムでAvatarを生成してアニメーションに利用する

今日の記事は、UnityのAdvent Calendarの9日目の記事です。 qiita.com 概要 VR開発をしていると、キャタクター(アバター)を表現する方法として頭と手だけの簡易的アバターか、通常のキャラクターモデルを用いたアバターの2種類から選ぶことになります。 そ…

ARKitで撮影した映像を(疑似)IBLとして利用する

今日の記事は、ARKitのAdvent Calendarの2日目の記事です。 qiita.com 概要 今回は、ARKitで平面検出を行っている映像データを使って、(疑似)IBLをしてみたいと思います。 ちなみに、ARKitをUnityで使う際の実装については前の記事で少し書いたので、ARKit…

UnityでThreadを使って処理を分割する

概要 Unityではスレッドを使うことが想定されていません。 というのも、いわゆる「Unity API」と呼ばれる様々なUnityの機能が、メインスレッド以外からは呼び出せない仕様となっているからです。 UIはメインスレッドからのみ操作できるというのと似ています…

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…