はつねの日記

Kinect, Windows 10 UWP, Windows Azure, IoT, 電子工作

Sony ELF-SR1のSDKを眺めてみよう

前回→空間再現ディスプレイSONY ELF-SR1を触ってみた - はつねの日記
ELFちゃんこと、ELF-SR1のSDKをUnityにいれて、[Edit]-[Project Setting]-[Spatial Reallity Display]で「Run Without SR Display」をチェックすると実機がなくてもUnity Editor上で動作を確認できます。
f:id:hatsune_a:20201103111647p:plain
ただし、このチェックをしたままだと実機を接続した環境でEXEを起動しても動作しません。ビルドするときは必ずチェックを外しましょう
それでは、このチェックをONにして実機がなくても分かるSDK附属プレハブツアーを始めてみましょう。

SRDisplayManager

まずは何はなくても必要だとおもわれるSRDisplayMangerの中をみてみましょう。
f:id:hatsune_a:20201103114008p:plain
SRDisplayManagerプレハブの構造は次のようになっています。
SRDisplayManager
┗WatchAnchor
  ┗WatchCamera
 ┗LeftEyeAnchor
 ┗RightEyeAnchor
SRDisplayManagerの重要なプロパティとしては、「SRD View Space Scale」があります。初期値は1ですがサンプルなどでは100にしていますので、100にしておきましょう。

WatchAnchor

WatchAnchorの中にWatchCameraがあります。通常、Unityの世界ではCamera=視点位置となりますので、このプレハブをHierarchyに入れることで、WatchAnchorの座標がELF-SR1が検出した見ている人の視点位置に自動的に合うということです。
WatchAnchor座標の初期位置は、(x,y,x)=(0,0.2,-0.3)となります。通常、1Unity=1mみたいに考えますので、Unity Editor上での表示は正面より20cm上、筺体面より30cm離れたところからみたときと考えて、配置するオブジェクトの大きさなどをきめていくとよいでしょう。
また、Rotationがx=20ですので、20度下をみている感じでしょうか。

この20度というのは重要な数値で、テキストを表示するようなときもEditor上ではRotete=20で値をあわせておくと実機で見ても正面に正対した形でテキストが表示されているように見えます。

WatchCamera

WatchCameraには[Clipping Planes]プロパティがあります。[Near]が0.01、[Far]が1000となっています。
Unity Editor上では白い視野がこのプロパティの影響をうけます。この距離の時に描画されると考えるといいでしょう。
試しにNear=10、Far=15にしたときにはどうなるかを確認したのが次の図となります。
f:id:hatsune_a:20201103115933p:plain
上のNear=10、Far=15では視野が角錐台で表示され、図右下のCameraPreviewで正方体が映し出されていないのがわかります。
下のNear=0.01、Far=1000では四角推のように視野が表示され、図右下のCameraPreviewでも正方体が映し出されています。
f:id:hatsune_a:20201103120132p:plain
この視野距離を調整することで遠くにいると見えず、近づいてみると見えるような演出も可能になります。

WatchCameraをみてみるとちょっと気になることに「Audio Listener」コンポーネントが含まれています。これはUnityの標準コンポーネントで、ようはここから音が聞こえるような感じになります。
docs.unity3d.com
ELF-SR1にはスピーカーはついていないので、PCと接続したワイヤレスイヤフォンを装着しておくとスピーカーがついているので視点位置に合わせた音が再生されるのでしょう(視点位置にあわせてかは未検証)。

LeftEyeAnchor、RightEyeAnchro

この二つは左右それぞれの目の位置だと思うので、IPD(瞳孔間距離)あたりをとれるようになっているのかと思いましたが、WatchAnchor側もふくめてそれらしくプロパティはありませんでした。

SRDisplayBox

まずは、SRDisplayBoxです。これは、ELF-SR1の筐体そのものをとなります。
f:id:hatsune_a:20201103112828p:plain
これを配置することで、設置したオブジェクトが実物のELF-SR1の形にあった感じに表示されるようになります。たとえば、筺体にめり込んだような表示も可能です。
f:id:hatsune_a:20201103121845p:plain

FaceTrackStateMonitor

ファイストラッキングができなくなったときに自動的に警告表示を行うためのプレハブです。前回も記したように次のような条件で簡単にフェイストラッキングができなくなりますのでこの表示は配置しておいた方がいいでしょう。

  • マスクをつけている
  • つばのある帽子をかぶっている(つばを後ろにすればOK)
  • 眉に髪がかかっている
  • 眼帯をしている
AppStateController

アプリを終了するために操作を表示するためのプレハブです。UnityアプリはESCキーで終了できるのですが、Unityアプリの終了の仕方を知らないと戸惑いますので、表示があってもいいと思いますが、通常は、見ている人が終わらせる必要はないので、このプレハブの配置は不要だと思います。
ただし、便利だと思ったのが、このプレハブの[App Exit Key]で終了するためのキーを変更して、表示も例えば「Press Space to exit the app」のように割り当てたキーにしてくれるのは便利だと思います。
これ、Unityアプリの終わらせ方をしらないお偉いさんとかに見せて「これ、どうやって終わらせるんだ!キーは代えられないのか」とか言われて付け足したとかあるんでしょうか。開発側だと気づけない心遣いかもしれないと思いました。

3Dオブジェクトなど

SR1に表示する3DオブジェクトはUnityの3Dオブジェクトになります。
unity-chan.com
f:id:hatsune_a:20201103133529p:plain

Unity Editor上で確認が出来たらビルド(その前に「Run Without SR Display」のチェックを外して)しましょう。
あとは、ELF-SR1の筐体を購入するだけで、嫁をいつでも3Dで目の前に召喚することができるようになります。
pur.store.sony.jp

それでは、ELF-SR1楽しんでくださいね!

空間再現ディスプレイSONY ELF-SR1を触ってみた

ホロラボにELF-SR1が届いたので早速触ってみました。

ハードウエアセットアップ

f:id:hatsune_a:20201102144035p:plain
f:id:hatsune_a:20201102144209p:plain
f:id:hatsune_a:20201102144139p:plain
PCとはUSBとHDMIでの接続です。PCからは3840x2160のディスプレイに見えます。
ただし推奨スペック特にディスプレイ出力の要求仕様は高めです。
OS: Windows 10 x64
CPU: Intel i5-9600以上(6 core以上)
メモリ: 8GB以上
HDMI出力: 4K60P対応 x 1
USB: USB 3.2 x 1
不安な場合はUnityちゃんが60fpsで動かを確認しましょう。
unity-chan.com

ソフトウェアセットアップ

SDKダウンロード

SR1に必要なSDKやマニュアルはSONYの公式サイトからダウンロードします。
www.sony.net
SDKとしては下記があります。
SR Display Runtime Installer
SR Display Plugin for Unity:Unity 2018.4, 2019.4, 2020.1向け
SR Display Plugin for Unreal Engine 4:4.24, 4.25向け
SR Display Template for Unreal Engine 4
Unreal用にはテンプレートも配布されているんですね。

Unityで表示させてみる

LTSであるUnity 2018.4.28f1を使って試してみました。

プロジェクト作成

新規にUnityプロジェクトを作成します。

SR Display UnityPluginをインポート

[Assets]-[Import Package]-[Custom Package]メニューで「srdisplay-unity-plugin.unitypackage」をインポートします。

アプリ作成

f:id:hatsune_a:20201102150428p:plain
プレハブにいろいろ配置します。
もし、実機がなくてUnity上で確認したいときは、[Edit]-[Project Setting]-[Spatial Reallity Display]で「Run Without SR Display」をチェックします。
f:id:hatsune_a:20201102173342p:plain
ただし、このチェックを付けたまま、SR1をつないで動かそうとしても動かないんで、実機体験時にEXEファイルを作ってコピーするようなときは、かならずチェックを外してビルドしましょう。
わすれるとせっかく実機確認できるチャンスを棒にふっていまいます。
上手く動くと視線一に合わせて表示がかわってくれます。
f:id:hatsune_a:20201102173116p:plain
youtu.be

なお、

  • マスクをつけている
  • つばのある帽子をかぶっている(つばを後ろにすればOK)
  • 眉に髪がかかっている
  • 眼帯をしている

と視線位置を認識してくれないので、長髪の人をおでこが出るようにツバを後ろにした帽子をかぶるなどしましょう。

今後の発展

これだけ立体にみえるとマウスで動かすのが寂しくなってきますので、LeapMotionなどをつけて、指先で動かせるようにしたりするといいかもしれないです。

PLEN Cubeで遊ぼう!

クラウドファンディングで投資していたPLEN Roboticss社のPLEN Cubeが届きました。
plenrobotics.com
ちょっとというかすっかり忘れてました。

初期設定しよう

USB micro-B端⼦の電源ケーブルを接続して少し放置してから電源ボタンを押すと1分くらいして起動します。
最初はhotspotモードになっているのでPLEN Cubeが出しているSSIDに対して手元のスマホからWi-Fi接続しましょう。
Wi-Fi接続するときにパスワードが必要なのですが製品パッケージにはどこにも書かれていません。
↓からクラウドファンディング版のマニュアルが参照できるので、そこにかかれている「plencube」とパスワードを入れましょう。
https://plenrobotics.com/manual/PLENCube_manual_CF_JP-v4.pdf
それから、10.42.0.1にブラウザで接続すれば、PLEN Cube自体の管理画面につながります。
ここで、自宅Wi-Fiなど無線アクセスポイントへの接続情報(SSIDやパスワード)を設定して再起動すれば初期設定は完了です。

さあ動かそう

PLEN Cube自体が自分が割り当てられたIPアドレスをしゃべてくれるので、それをメモします。
そして、そのアドレスにブラウザから接続してあげればいろいろ設定ができるようになります。
まずはメールアドレスとパスワードでレジストリですね。

残念、うごかない

さてさていろいろ遊ぼうと思ったのですが、カメラやその他は問題なく動いているのですが、肝心の動作が「うぃーん」とそれらしい音がするだけで動いてくれません。
初期不良かな?とおもったら。

動いた!

背面の電源ボタンでなんどか再起動してみたら、うごきました!

何ができるのかいろいろ試してみましょう。
まずは、YesとNoの返事をしてもらいました。PLEN Cubeのフィードバックは音声ではなくてモーションです。
なんとなくYesとNoがわかりますよね。
youtu.be

IFTTTと連携する

ifttt.com
IFTTTと連携できるようですが、現状は写真撮ったらメールでみたいなものだけかな?
ここがいろいろできると遊べそうですね。

おやすみ

終了は「おやすみ」と一言いえばOK
元のキューブに戻ってくれます。

ATEMスイッチャー8.5.2 が素晴らしい

[EN]ATEM switcher 8.5.2 is great!

www.blackmagicdesign.com
The ATEM switcher 8.5.2 update is now here.
One thing to note about this update is that you can now change the brightness of the buttons.
This is handy.
youtu.be

In some cases, there may be a firmware update, so boot from ATEM Setup.
Also, update when you have time to spare.

[JP]ATEMスイッチャー8.5.2 が素晴らしい

www.blackmagicdesign.com
ATEM スイッチャー 8.5.2のアップデートが来ました。
このアップデートで注目したいのは、ボタンの明るさが変更できるようになったこと。
これは便利ですね。
youtu.be

場合によっては、ファームウェアのアップデートもありますので、ATEM Setupから起動しましょう。
また、時間の余裕のあるときにアップデートしましょう。
f:id:hatsune_a:20201031071735p:plain

車載Wi-Fiルータ DCT-WR100D がよさそう


この製品、「docomo in Car Connect」というクルマ専用の通信プランなので、走行中と信号待ちの間だけみWi-Fiサービスが利用可能という制限がある代わりに、docomoLTE網(下り最大150Mbps、上り最大50Mbps)が、1日500円、1年間12,000円で定額使いたい放題という製品です。

スマホをカーナビ代わりにしていたり、Amzon Music流しっぱなしにしていたりする使い方にはいいかも!
あと、後部座席とかで家族が動画みたいなんてときにも!

Azure PortalのDiagnose and solve problems機能がすごい!

Azure PortalでSignalR Serviceの設定を色々みていたときに、ほんのちょっとの興味から[Diagnose and solve problems]をクリックしたらすごかった。

f:id:hatsune_a:20201027090909p:plain
選択式ではありますがUIがChatbotなんです。なにこれすごい(語彙www)。
ちなみにジーニーさんというらしいですよ。
ちょっとやりとりを翻訳してみましょう。

                                                                                  • -

[ジーニーさん]
こんにちは!Azure SignalRサービス診断のご紹介です。Azure SignalRサービス診断へようこそ! 私の名前はジーニーといいます。
ここでは、私がお手伝いできる可用性とパフォーマンスに関連した問題をいくつかご紹介します。あなたの問題を最もよく説明するタイルを選択してください。
[はつね]
診断設定チェックに興味がある
[ジーニーさん]
あなたのアプリを分析する間、少し時間をくださいこのタイルに関連する問題のために。検出器がロードされたら、ご自由にクリックして各トピックを調査してください。
・Connectivity log is enabled
・Messaging log is enabled

                                                                                  • -

これなら、チャットで!とかかかれているけど英語チャットとか無理!みたいなときも楽しく使えますね!

A virtual camera was added in OBS Studio v26.0.0.

この記事は「OBS Studio v26.0.0で仮想カメラが追加されました。 - はつねの日記」の英語翻訳となります。
This article is an English translation of "https://hatsune.hatenablog.jp/archive/2020/10/04".

OBS Studio is an open source software for open source live streaming and recording.
obsproject.com

Until now, a plugin like OSB Virtual-Cam was required to input the output screen created in OBS Studio (called the broadcast screen in OBS Studio) as a self-camera image of a remote conference system such as Teams. The plug-in adds a camera device named "OBS Camera" and allows you to specify it to be used as a self-camera image.

Although it is a very convenient function, there was a drawback that it was difficult to understand the operation and the state of operation, such as starting from the "Tools" menu because it is a plug-in.
However, in the V26.0.0 update, the function was implemented in OBS Studio, and you can now easily turn the virtual camera output on and off from the control menu.
f:id:hatsune_a:20201004061147p:plain

When you install OBS Studio V26.0.0, for example, the option "OBS Virtual Camera" will be added to the "Camera" in the "Show Device Settings" menu in Teams.
f:id:hatsune_a:20201004061401p:plain
Once this is added, simply click the "Start Virtual Camera" button on the OBS Studio side to output the OBS Studio broadcast screen as a camera image.

What's more, even when the virtual camera is not running, the OBS Studio mark is output together with the mark indicating that the camera is not broadcasting, so you can check that the video is coming even before the virtual camera is started in OBS Studio, so you can use it with great confidence.
f:id:hatsune_a:20201004062324p:plain

And importantly, when you exit OBS Studio, it stops the virtual camera before you exit.
f:id:hatsune_a:20201004062200p:plain
In the plugin, I've had problems with Teams getting stuck if I don't stop OBS Studio after the virtual camera has been terminated.
In OBS Studio (I don't know about the Mac version, but at least on Windows), OBS Studio doesn't detect the insertion and removal of external devices such as a USB camera (for example, the ATEM Mini with HDMI capture), so I often have to restart OBS Studio to update the device status when inserting and removing external devices.
This seems to get rid of things like rebooting without stopping the virtual camera and restarting Teams as well.

Since it's V26.0.0, it's the first in the V26 series, so maybe there are some bugs and degrades that haven't been crushed, but I think it's significant to start using V26 for this feature alone.