Upgrade to Pro — share decks privately, control downloads, hide ads and more …

左側と右側で別のものが見えるようにしてみた

 左側と右側で別のものが見えるようにしてみた

第4回 Looking Glass 勉強会のLTで使った資料です。右から見ると通常のモデル、左からだと骨格が見えるというちょっと不思議な裸眼立体視をLooking Glassで試してみました。詳細はこちらのブログでも公開しています https://www.kabuku.co.jp/developers/hack_looking_glass

Be4b441abb2fdf03acb5bdfddba4b4f2?s=128

Kenichi Takahashi

February 10, 2020
Tweet

Transcript

  1. ࠨଆͱӈଆͰผͷ΋ͷ͕ ݟ͑ΔΑ͏ʹͯ͠Έͨ ୈճ-PPLJOH(MBTTษڧձ גࣜձࣾΧϒΫߴڮݑҰ

  2. ΧϒΫͷड෇ʹೖͬͯ͘Δͱʜ

  3. ΧϒΫͷड෇ʹೖͬͯ͘Δͱʜ

  4. ΧϒΫͷड෇ʹೖͬͯ͘Δͱʜ

  5. ΧϒΫͷड෇ʹೖͬͯ͘Δͱʜ

  6. ࡢ೥य़ʹ-PPLJOH(MBTTΛձࣾͰߪೖ w %ͷσʔλΛѻ͏ձࣾͳΜ͔ͩΒड෇ʹஔ͍͓ͯ͘ͱө͑ΔͷͰ͸ w ͱཧ༝Λ͚ͭͯ-BSHFߪೖͷ᜛ٞΛ௨ͯ͠΋Βͬͨ w ʢ%ͷσʔλ͕Ξοϓϩʔυ͞ΕΔͱଈ࣌ݟੵ΋ΓΛग़͢Α͏ͳ੡଄ۀ޲͚ αʔϏε΍ίϯγϡʔϚʔ޲͚αʔϏεΛ΍ͬͯ·͢ʣ

  7. Ͱ΋୯७ʹ%ϞσϧΛग़ͯ͠ճ͢ఔ౓Ͱ ͸ͭ·Βͳ͍͠ʜͱࢥ͍ͬͯͨͱ͜Ζ

  8. ώϯτ͸-PPL`JO#BTFCBMM w ώϯτΛٻΊͯୈճ-PPLJOH(MBTTϋο Χιϯͷ੒Ռలࣔձ΁ʢࡢ೥݄೔ʣ w ӈͱࠨͰҟͳΔࢹ఺ͷ΋ͷΛݟͤΔ͜ͱ͕ Ͱ͖Δͱ͸ʜ w ͦΜͳ͜ͱ΋Ͱ͖Δͷ͔ʂͱ͍͏িܸ IUUQTUXJUUFSDPNLFO@UBLBTUBUVT

  9. Ͳ͏΍͍ͬͯΔͷ͔ͨͣͶΔͱʜ w ʮ-PPLJOH(MBTTͷ6OJUZ༻4%,ʹखΛೖΕͨʯͱͷ͜ͱ w ͳΔ΄ͲʜͦΕͳΒࣗ෼ʹ΋Ͱ͖ͦ͏

  10. ݄຤ʹΑ͏΍࣮͘෺͕ಧ͍࣮ͯݧ w ΍Γ͔ͨͬͨͷ͸ෳ਺ͷࢹ఺ͱ͍͏ ΑΓ͸ෳ਺ͷϞσϧΛݟͤΔ͜ͱ w ӈ͸௨ৗͷϞσϧɺࠨ͸εέϧτ ϯͱ͔΍ΕͨΒ໘നͦ͏ʜ w ࣗ෼ͳΓͷํ๏Ͱ4%,಺ͷεΫϦ ϓτΛϋοΫͯ͠Έ·ͨ͠

    w ͜ΕΛݟͨಉ྅ͷײ૝ w ʮγϡϨʔσΟϯΨʔͷೣʁʯ IUUQTUXJUUFSDPNLFO@UBLBTUBUVT
  11. ࣮૷ํ๏ )PMP1MBZ

  12. -PPLJOH(MBTTͷཱମࢹͷ࢓૊Έ w ϑϨʔϜ͋ͨΓɺࠨӈͷํ޲ʹͷࢹ఺Ͱ ϨϯμϦϯά w ͦΕΛ࣮ߦ͍ͯ͠Δ৔ॴΛ୳͢

  13. -PPLJOH(MBTTΛ࢖͏ࡍͷγʔϯ w )PMPQMBZ 4DSJQU ίϯϙʔωϯτ͕૊Έࠐ ·Ε͍ͯΔ

  14. )PMPQMBZDTΛ։͘ͱ w "TTFUT)PMPQMBZ4DSJQUT)PMPQMBZDT w QVCMJDWPJE3FOEFS2VJMUͱ͍͏ϝιου͕ ͋Γɺࢹ఺਺ʢRVJMU4FUUJOHTOVN7JFXTʣ ෼ͷϧʔϓΛ͍ͯ͠ΔՕॴ͕͋Δ w ࠨӈํ޲ʹࢹ఺ΛͣΒ͠ͳ͕ΒϨϯμϦ ϯά

    㱺͜͜ʹखΛՃ͑Δ // render the views for (int i = 0; i < quiltSettings.numViews; i++) { if (i % ViewInterpolation != 0 && i != quiltSettings.numViews - 1) continue; // onViewRender if (onViewRender != null) onViewRender.Invoke(this, i); . . . // move the camera var viewMatrix = centerViewMatrix; var projMatrix = centerProjMatrix; float currentViewLerp = 0f; // if numviews is 1, take center view if (quiltSettings.numViews > 1) currentViewLerp = (float)i / (quiltSettings.numViews - 1) - 0.5f; viewMatrix.m03 += currentViewLerp * viewConeSweep; projMatrix.m02 += currentViewLerp * viewConeSweep * projModifier; cam.worldToCameraMatrix = viewMatrix; cam.projectionMatrix = projMatrix; // render and copy the quilt cam.Render(); // copy to quilt CopyViewToQuilt(i, viewRT, quiltRT); CopyViewToQuilt(i, viewRTDepth, quiltRTDepth); . . .
  15. )PMPQMBZDTʹखΛՃ͑Δ w ͭͷQVCMJDม਺Λ௥Ճ w ࠨӈผϞσϧදࣔͷ0/0'' w ࠨ໨༻ͷϞσϧͷ(BNF0CKFDU w ӈ໨༻ͷϞσϧͷ(BNF0CKFDU public

    class Holoplay : MonoBehaviour { // variables public bool splitView = false; public GameObject leftModel; public GameObject rightModel; . . .
  16. )PMPQMBZDTʹखΛՃ͑Δ w QVCMJDWPJE3FOEFS2VJMUϝιουʹॲཧ Λ௥Ճ w ࢹ఺਺෼ϧʔϓͷ w લ൒͸ӈ໨༻ϞσϧΛΞΫςΟϒʹ w ޙ൒͸ࠨ໨༻ϞσϧΛΞΫςΟϒʹ

    // render the views for (int i = 0; i < quiltSettings.numViews; i++) { if (i % ViewInterpolation != 0 && i != quiltSettings.numViews - 1) continue; // onViewRender if (onViewRender != null) onViewRender.Invoke(this, i); if (splitView) { if (i == 0) { leftModel.SetActive(false); rightModel.SetActive(true); } else if (i == quiltSettings.numViews / 2) { leftModel.SetActive(true); rightModel.SetActive(false); } } . .
  17. 6OJUZͷΤσΟλͰͷઃఆ w QVCMJDม਺Λ௥Ճͨ͜͠ͱͰ૿͑ͨઃఆ߲ ໨ w ࠨӈผϞσϧදࣔͷ0/0'' w ࠨ໨༻ͷϞσϧͷ(BNF0CKFDU w ӈ໨༻ͷϞσϧͷ(BNF0CKFDU

  18. 6OJUZͷΤσΟλͰͷઃఆ w γʔϯʹ̎ͭͷϞσϧΛ௥Ճ͓ͯ͘͠ w ࠨ༻ͷϞσϧ w ӈ༻ͷϞσϧ w ΠϯεϖΫλʔʹυϥοάˍυϩοϓ w

    ࠨ༻ͷϞσϧˠ-FGU.PEFM w ӈ༻ͷϞσϧˠ3JHIU.PEFM w 4QMJU7JFXΛ0/
  19. ݸ෼ͷࢹ఺Λӈ໨༻ͷϞσϧͰϨϯμϦϯά

  20. ׬੒ʂ

  21. ׬੒ʂ

  22. ׬੒ʂ

  23. ษڧձ౰೔ʹలࣔͨ͠΋ͷ

  24. ษڧձ౰೔ʹలࣔͨ͠΋ͷ

  25. ษڧձ౰೔ʹలࣔͨ͠΋ͷ ಈը͸ͪ͜ΒIUUQTUXJUUFSDPNLFO@UBLBTUBUVT

  26. ͞ΒͳΔৄࡉ͸ΧϒΫͷ%FWϒϩάͰʂ ΧϒΫͷιϑτ΢ΣΞΤϯδχΞϒϩά IUUQTXXXLBCVLVDPKQEFWFMPQFSTIBDL@MPPLJOH@HMBTT