読者です 読者をやめる 読者になる 読者になる

プログラミングで世界を変える

ゲームプログラミングと技術のこと

LPページを作る際のソーシャル設定のいろいろ

ソーシャル LP Web Twitter Debug

至近距離ガールVRというVRコンテンツのLPサイトを作り直したのですが、その際に行ったソーシャル設定の共有です。Twitter、Facebook、Google+を例に、以下の2点についての概略を説明します。

  • 投稿リンク(シェアリンク)
  • Open Graph Protocol

今回WordPress(WP)を使用していますが、初めての取っ掛かりとしては汎用的に使える内容になっています。

f:id:splas_boomerang:20170327023936p:plain

vr-locker.com

続きを読む

UnityでWindowsデスクトップアプリの仮想キーボードを呼び出すdll

Unity dll Windows プラグイン プログラミング モバイル キーボード

UnityでWindowsデスクトップアプリを作る際に、タブレットなどで必要になる仮想キーボードが表示されない問題がありました。そこでUnity上から仮想キーボードを呼び出すdllを作成しました。

ダウンロード

http://unubore.egoism.jp/techblog/distribution/WindowsTouchScreenKeyboard/UnityKeyboard.dll

使い方

Assets/Pluginsフォルダ以下にダウンロードしたdllをインポートします。

ちなみに複数のプラットフォームに対応する場合は、インスペクターかサブディレクトを用いて適用先を設定することも可能です。 docs.unity3d.com

あとはusingしてメソッドを呼び出せばokです。以下のスクリプトを参考にしてください。

このスクリプトをシーン上の適当なオブジェクトにアタッチすれば自動的にハンドリングされると思いますが、動作確認はしていません。 gist.github.com

続きを読む

Oculus RiftのルームスケールとKinect v2を同時に使用した時に困った話のメモ

Unity Kinect VR Oculus Rift CV1 ルームスケール Rift Sensor USB帯域

不正確な情報が多い記事なので、参考程度に留めてください。

問題の要約

現象

Kinect v2のフレームレートが著しく低下する現状が発生しました。

同時にOculus Rift側では3台のセンサーを用いてルームスケール機能を使用していました。

原因

恐らくUSB帯域不足による問題だと判明しました。

USBを接続するホストコントローラーには使用できる帯域に制限があるため、それを超えたデータ転送を行えないということらしいです(多分)。

参考: USB 2.0と3.0について知っておくべき10のポイント - page4 - builder by ZDNet Japan

以下の通り、RiftとKinectそれぞれで多くの帯域を使用するとのことでした。

If you connect three Oculus sensors—each sending and managing a ton of data locally—you can run into problems when they try to send more data than the USB host controller can handle.
(意訳) 3台のセンサーを繋いで制限以上のデータを送ろうとすると問題が発生しうる。

Oculus Roomscale: Balancing Bandwidth on USB | Oculus

Kinect for Windows v2 センサーは、USB コントローラーの USB3 帯域幅をかなり消費します。

Windows アプリが Kinect for Windows v2 センサーで機能しない

解決方法

  1. ホストコントローラーに接続するUSBを減らす
  2. ホストコントローラーを追加し、接続先を分散させる
  3. (Riftではなく) HTC Viveを使用する

以下でそれぞれについて説明します。

(1,2について) ホストコントローラーの種類

EHCI(Enhanced Host Controller Interface)がUSB 2.0対応、xHCI(Extensible Host Controller Interface)がUSB 3.0対応だそうです。

[デバイスマネージャー] > [ユニバーサルシリアルパスコントローラー]で確認すると、僕のPCにはxHCIが1つとEHCIが2つ接続されているようです。xHCIがEHCIの機能を内包しているかどうかが分からなかったのですが、少なくとも3.0に対応しているxHCIが1台なので、現状で接続先を分散させる対処は恐らくできません。

参考: USB ホスト コントローラー ‐ 通信用語の基礎知識

(3について) HTC Viveのルームスケール

Oculus Riftのルームスケールは、Rift本体から飛ばした赤外線を、周囲に設置したセンサーで認識することで実現しています。そのため、センサーが受け取った情報が取得するためにセンサーとPCを接続する必要があります。

対するHTC Viveですが、こちらはセンサーから飛ばした赤外線を本体で認識する仕組みになっています。この違いにより、Viveのセンサーに必要な接続は、電源供給のためのACアダプターのみとなります。そのため、今回のようなUSB帯域を圧迫するような問題は解決できると思います。

続きを読む

Unity+UniRxでUWP対応のWSA(Windows Store App)を開発するときの備忘録

Unity WSA .NET CORE プログラミング UniRx

はじめに

UnityではスタンドアロンのWindowsアプリの他に、WSA(Windows Store App)のビルドにも対応しています。今回ビルドをしてみてつまづいたことを備忘録として残します。Unity(v5.5.0b3)時点での情報です。

この記事の存在意義としては、点在するドキュメント(英語含む)が日本語で少しまとまってるところです。誰かの足がかりになると幸いです。

続きを読む