All Projects → roxanneluo → Pepper S Cone Unity

roxanneluo / Pepper S Cone Unity

Licence: bsd-3-clause
Pepper's Cone

Labels

Projects that are alternatives of or similar to Pepper S Cone Unity

Serial7segmentdisplay
Example code and board files for the Serial 7 Segment Display.
Stars: ✭ 81 (-16.49%)
Mutual labels:  display
Simulator
A ROS/ROS2 Multi-robot Simulator for Autonomous Vehicles
Stars: ✭ 1,260 (+1198.97%)
Mutual labels:  3d
Freecad
This is the official source code of FreeCAD, a free and opensource multiplatform 3D parametric modeler. Issues are managed on our own bug tracker at https://www.freecadweb.org/tracker
Stars: ✭ 10,366 (+10586.6%)
Mutual labels:  3d
Fornos
GPU Texture Baking Tool
Stars: ✭ 82 (-15.46%)
Mutual labels:  3d
Helixjs
A Javascript 3D game engine.
Stars: ✭ 84 (-13.4%)
Mutual labels:  3d
Declaracad
A declarative 3D modeling application built using Open Cascade and python
Stars: ✭ 89 (-8.25%)
Mutual labels:  3d
Ar Pizza Slicer
5 different shapes!
Stars: ✭ 80 (-17.53%)
Mutual labels:  3d
Mini3d
3D Software Renderer in 700 Lines !!
Stars: ✭ 1,320 (+1260.82%)
Mutual labels:  3d
Brats17
Patch-based 3D U-Net for brain tumor segmentation
Stars: ✭ 85 (-12.37%)
Mutual labels:  3d
Nunustudio
Web powered cross-platform 3D, WebXR game engine.
Stars: ✭ 1,302 (+1242.27%)
Mutual labels:  3d
Starviewer
Starviewer, a cross-platform open source medical imaging software
Stars: ✭ 83 (-14.43%)
Mutual labels:  3d
Three Forcegraph
Force-directed graph as a ThreeJS 3d object
Stars: ✭ 84 (-13.4%)
Mutual labels:  3d
3dhop
3D Heritage Online Presenter
Stars: ✭ 89 (-8.25%)
Mutual labels:  3d
Openmesheffect
A low-overhead mesh-processing plug-in API for cross-software procedural effects
Stars: ✭ 82 (-15.46%)
Mutual labels:  3d
Stellar Webpack
A little experiment
Stars: ✭ 91 (-6.19%)
Mutual labels:  3d
Rotate 3d
3D Rotation image along specific axes
Stars: ✭ 81 (-16.49%)
Mutual labels:  3d
Doom Nano
A 3d raycast engine for Arduino
Stars: ✭ 86 (-11.34%)
Mutual labels:  3d
Spatial Collision Datastructures
Benchmark of various spatial data structures for collision detection.
Stars: ✭ 96 (-1.03%)
Mutual labels:  3d
Altium Library
Altium Library with 4000 components, IPC compliant footprints, 3D step model
Stars: ✭ 92 (-5.15%)
Mutual labels:  3d
Connected Components 3d
Connected components on multilabel 3D & 2D images. Handles 26, 18, and 6 connected variants.
Stars: ✭ 90 (-7.22%)
Mutual labels:  3d

Pepper's Cone: An Inexpensive Do-It-Yourself 3D Display

Tiger with Pepper's Cone

This repo contains the Unity project to display 3D objects given calibrated distortion map. More information see our paper and video.

How to DIY Your Own Pepper's Cone

  1. Build a cone following the instructions below.
  2. Get a tablet with gyroscope. Here we use 12.9'' iPad Pro.
  3. Distortion calibration. The distortion map in the repo is calibrated when placing the 45-degree cone you just built on a 12.9'' iPad Pro. While this distortion map "roughly" works for other setup, for best accuracy, please follow our paper to do the distortion calibration. (Skip this if you use my calibrated scenario.)
  4. If you want to try the binocular version of Pepper's Cone, please prepare a pair of red-cyan anaglyph glasses like this or this.
  5. Download Unity. Build and run the demo scenes in Unity following the Demo section.

The assembly process is also shown in the video.

Build a Cone

Here I'll show you how to build the cone itself. If you just want to run the demo app, jump to the Demo section.

  1. Download the template of a 45-degree cone. More cone templates are available here.
  2. Buy clear 0.01-inch polycarbonate sheets or even thinner. Feel free to use other transparent thin plastic sheets. PETG and many other materials also work.
  3. Cut the plastic sheet using the template. Cut through all red curves and cut half-way through for the blue ones. You can
    • print out the template as a poster since it's much larger than A4 paper, and cut your plastic sheet manually.
    • Or let a laser cutter cut it according to the template. Nowadays there are many makerspaces in the neighbourhood like UW's Makerspace and Metrix Create Space where laser cutters are available and cheap to use. Note that although using a laser cutter is more convenient and accurate, some laser cutter doesn't support cutting sheets of certain plastic material. Be careful!
  4. Tape the openning of the cone at the bottom and put a nickel for statblization during rotation. Alternatively, you can put a sucker pad in the opening.

cone template sucker pad

Demo

In the paper we described two Pepper's Cone setups:

  • a glass-free setup where distortion is only calibrated towards the center of the two eyes, see Assets/Scenes/MonoPeppersConeMini.unity,
  • and a binocular setup where you need to wear you need to wear red-cyan anaglyph glasses, see Assets/Scenes/StereoPeppersConeMini.unity. With this one you can see true stereo depth.

To test it in the Unity Editor, open the scene, hit play and hold ctrl key while moving the mouse around. You will see how the 3D model is pre-distorted when being rotated around as in this video.

Build and run the corresponding scene on the tablet, place the cone and the nickel at the center of the rings, and enjoy your 3D "hologram" at home :) (P.S. you need to use Mac to deploy onto an iOS device.)

The scenes here are the minimal setup required to show 3D objects in Pepepr's Cone. To add your own 3D models, add your models as child gameobjects of ModelController like those cylinders there. You can also add sound to boost realism.

UI Description

There are two main scenes in MonoPeppersConeMini and StereoPeppersConeMini:

  • calibration scene,
  • and model scene.

Press CalibOrModel to switch between the calibration and the model scene. At the model scene, press Next Model to switch between different 3D models.

Calibration Scene

  • Concentric rings. You should put the cone at the center.
  • Cylinder. Pepper's Cone works the best when you place your head at the calibrated position while it still works when your head is roughly centered. You can use the cyclinder in the scene to calibrate your head position. The cylinder will be reflected by the cone surface and then by the tablet screen again. Close one eye to see the reflection of the cylinder on the tablet screen. When the reflection you see with either eye is symmetric about the original displayed cylinder image, your head is centered and at the calibrated position.
  • reset. When the rotation estimation is off or towards undesired orientation, press reset.

Notes about GoogleVR SDK

I use GoogleVR SDK 1.10 to get low-drift low-latency rotation estimation. I can't use the latest 1.110.0 version because for now they don't open API to enable only rotation estimation without stereo rendering. Please let me know if you find that new GoogleVR SDK supports that.

Currently, all GoogleVR related files are in Assets/GoogleVR and Assets/Plugins. Only these folders, the gameobject RotationManager and the script Assets/Scripts/RotationManager.cs need to be changed for upgrading GVR.

Citation

@inproceedings{luo2017pepper,
  title={Pepper's Cone: An Inexpensive Do-It-Yourself 3D Display},
  author={Luo, Xuan and Lawrence, Jason and Seitz, Steven M},
  booktitle={Proceedings of the 30th Annual ACM Symposium on User Interface Software and Technology},
  pages={623--633},
  year={2017},
  organization={ACM}
}

Contact

If you have any questions, please email Xuan Luo at [email protected].

License

BSD

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].