スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

UnityでTimeクラスもどきを作る

UnityのTimeクラスはどのクラスからでもフレーム番号や時間を取得できるのがとても便利です。
同じことをしようとしたらどのように実装すればよいか試しに実装してみました。

以下の2つに気を付けて実装してみました。
・シングルトンを使用する
・puclic static変数で値にアクセスさせる

Counter.cs


using System.Collections;
using System.Collections.Generic;
using UnityEngine;
// 概要
// 毎フレームカウントアップする
// フレーム番号にどのクラスからでもアクセス可能
// シングルトンでこのコンポーネントは1つしかインスタンスが作成できない
public class Counter : MonoBehaviour {
public static Counter instance;
public static int frame = 0;
void Awake()
{
if (instance == null)
{
instance = this;
DontDestroyOnLoad(gameObject);
}
else
{
Destroy(this);
}
}

void Update () {
frame++;
}
}


useCounter.cs


using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class useCounter : MonoBehaviour {
// Update is called once per frame
void Update ()
{
Debug.Log(Counter.frame);
}
}


スポンサーサイト

HoloLens Holographic Remotingの利用方法

はじめに

Holographic RemotingはPCでレンダリングしたデータをWi-fiでHoloLensに転送する機能です。これを利用することで、HoloLensのCPU、GPUなどの性能に縛られて実現できなかったこともできるようになります。また、PC上で動かすことができれば、KinectやViveのコントローラーなど、周辺機器やセンサーを利用することもできるかもしれません。
今回はUnityでHolographic Remotingを利用する方法について書きました。これによりUnity EditorのプレビューがHoloLensで表示できるようになります。エディター上でオブジェクトを動かすことで、目の前の(HoloLensで表示した)オブジェクトが自由に動かせるので楽しいです。

参考
Holographic Remoting Playerドキュメント
Microsoft HoloLens(現在利用できない)

参考動画:こんな感じのことができるようになります

Holographic Remotingを使ってみる


用意するもの

  • PC(Windows 10 Anniversary Update, GPU:GeForce GTX 970 or AMD Radeon R9 290以上)
  • Unity 5.5.0b4 (64-bit)
  • HoloLens Development Edition
  • HoloTookkit-Unity(必須ではない)
  • Wi-fi環境(HoloLensとPCは同じネットワークにいる必要があります)

HoloLens側の準備

ストアからHolographic Remoting Playerをダウンロードして立ちあげます。
立ち上げると以下のような画面が表示されます。この場合「192.168.0.1」がHoloLensのIPアドレスです。
後でPCと接続するのに使用します。
HolographicRemotingPlayer.png


PC側の準備

  1. Unity 5.5.0b4 (64-bit)を起動して新規プロジェクトを作成します
  2. HoloTookit-Unityをインポートします(AssetsフォルダにHoloTookkit-UnityのAssetsフォルダをコピー)
  3. Build Settingsを開いてWindows Storeを選択し、「UnitySetup-Metro-Support-for-Editor-5.5.0b4.exe」をDownloadしてインストールします
  4. Unityのプロジェクト、シーンをHoloLens用の設定にします(HoloToolkit-Configure-Apply HoloLens Project SettingsとApply HoloLens Scene Settingsをクリック)
  5. HoloToolkit.png
  6. 実行時の確認用に適当なオブジェクトをシーンに追加します
  7. Player SettingsでVirtual Reality Supportedにチェックを入れ、Windows Holographicが追加されていることを確認します
  8. Holographic Simulation and Remotingウインドウを開きます(Window-Holographic Simulation and Remotingをクリック)
  9. Holographic Simulation and Remoting1
  10. Remote Deviceを選択します
  11. Holographic Simulation and Remoting3
  12. HoloLensのIPアドレスを入力してConnectをクリックします
  13. Holographic Simulation and Remoting4
  14. Unity Editorのプレイボタンをクリックすると、HoloLensにオブジェクトが表示されます!

トラブルシューティング


・"You must ve running Windows buikd 14318 or later to use simulation or remoting"とエラーが出る。
 Windows 10のAnniversary Updateが適用されていません。Windows Updateを行ってください。Updateには結構時間がかかります。

おわりに


Holographic Remotingを使用すると、Unity Editorで変更した結果をリアルタイムにHoloLensの表示に反映することができます。これまでは、アプリを変更するたびにビルドして転送しなければならなかったのですが、その手間がなくなるため、HoloLens用のアプリ開発がぐっとやりやすくなったように感じます。PC上でしか実行できないようなセンサーやデータが使用できるようになれば用途もさらに広がると思います。デメリットとしてはWi-fiを経由でデータをやり取りすることになるため、少し遅延が発生してしまうことだと思います。とはいえ、これを使うことによる開発のしやすさは大きなメリットでしょう。HoloLens開発者の皆様はぜひ一度試してみることをお勧めします。

Unityのシェーダーで距離画像を取得する

はじめに

特殊な用途かもしれませんがUnityで距離画像を取得したい時があると思います。デプスマップではなく距離マップです。デプスだとオブジェクトの前後関係が判定できるものの、物理的な距離を使いたい場合にはやや問題があります。デプスから距離に変換することも可能ですが、なかなか自分で計算するのは面倒です。(実際はLinear01Depthマクロを使えば求められるのは置いといて。)ここで求める距離はカメラの位置(視点)からの距離ではなく、カメラ座標系におけるZ座標のことです。


距離マップを取得するサンプルのUnity Packageは以下からダウンロードできます。
ファイル名をDistanceCamera.unitypackageに変更してインポートしてください。
ダウンロード


後で説明記事を追記します。たぶん。
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。