公式SDK(1.0.0)に実装されました!!公式を使いましょう!!
先まとめ
現SDKでは一台目のパラメータしか読まないので
2台目以降はレンチキュラーが正常に作動しないので
コードに若干手を入れました。
前提環境(デメリット)
・LookingGlassを複数台所有していること
・SDKのアップデートを待っていられない人向け(そのうち実装される)
・複数台映せるグラボパワーがあるPC環境
メリット
・縦に並べるとキャラクターの半身以上を大きく映せる
・LookingGlassは縦方向は一視点だが2台並べると”なんか”気にならない
・横に並べるとキャラの移動がなんか新鮮
技術的お話
現状の仕様
・LookingGlassのEEPROMからそれぞれ固有のレンチキュラーのパラメータを読んで
立体視用に変換している。それぞれパラメータはバラバラ。
・現在のコードでは”一台目”のパラメータしか読んでいない。
(中略)
private static int rw(中略)
{
(中略)
hid_device_info enumerate = (hid_device_info)Marshal.PtrToStructure(ptr, typeof(hid_device_info));
string epath = enumerate.path;
//ここから追加
for (int k = 0;k < TargetDisplay; k++)
{
hid_device_info enumerate_Multi = (hid_device_info)Marshal.PtrToStructure(enumerate.next, typeof(hid_device_info));
epath = enumerate_Multi.path;
}
//ここまで追加
IntPtr handle = HIDapi.hid_open_path(epath/*enumerate.path*/);//epathを読むように変更
・hid_device_info enumerateがEEPROMのアドレスを持っているので2台目以降の時は
enumerate.nextで次のアドレスを引っ張って来て情報を取得するように変更。(next==0で最後フラグ)
2台目以降フラグはunityのTargetDisply番号を渡すようにしました。(ここは設計次第)
※unityでマルチディスプレイを行うときは『Display.display[X].Activate();』が必要です。
最後に
・公式SDKで複数台対応されるのが待ちきれない人用です。
・LookingGlassを複数台持っていて、かつ複数台に描画できるPCを持っている人用です。
・複数台で縦に並べて好きなキャラクターをドアップで見たい人用です。
おまけ
LookingGlassのパラメータはコードをイジらずともインスペクターから
いじれます。こちら