LoginSignup
4
2

More than 5 years have passed since last update.

LookingGlassの技術的複数運用について

Last updated at Posted at 2019-02-11
1 / 9

公式SDK(1.0.0)に実装されました!!公式を使いましょう!!

先まとめ

現SDKでは一台目のパラメータしか読まないので
2台目以降はレンチキュラーが正常に作動しないので
コードに若干手を入れました。


前提環境(デメリット)

・LookingGlassを複数台所有していること
・SDKのアップデートを待っていられない人向け(そのうち実装される)
・複数台映せるグラボパワーがあるPC環境


メリット

・縦に並べるとキャラクターの半身以上を大きく映せる
・LookingGlassは縦方向は一視点だが2台並べると”なんか”気にならない
・横に並べるとキャラの移動がなんか新鮮


技術的お話

現状の仕様

・LookingGlassのEEPROMからそれぞれ固有のレンチキュラーのパラメータを読んで
 立体視用に変換している。それぞれパラメータはバラバラ。
・現在のコードでは”一台目”のパラメータしか読んでいない。


EEPROMCalibration.cs(改造版)
(中略)
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のパラメータはコードをイジらずともインスペクターから
いじれます。こちら

4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2