Codename:Airforce1

Airforce1

The idea

The Airforce1 Proof of Concept has been developed by Aurélien Laval (@AurelienLaval) and Jean-Luc Antoine (me).
Basically, I wanted build an innovation based on Salesforce platform. Salesforce is already providing lots of innovations 3 times a year, through the Spring, Summer and Winter releases; we can use this to build on top new innovations. You just need to be creative and to find an idea.
In France, we have ideas (and taxes :( ). The idea is very simple : how to attract customers to your office when you have a B2C business ? The more they come to your shop, the more you can engage, interact, sell... That is why you absolutely need to manage the IRL-UX (In Real Life User Experience). If your office is not attractive, people will be reluctant to step into it. You need to be open, to be modern, to remove barriers.
To my opinion, as a customer, I prefer going to a shop which is modern, great appearance, and where I can interact with sales people to explain my needs. I dislike having them behind a screen, where I cannot see what they do, and when I speak to them they answer in the direction of their screen. Sometimes you don't see them behind their screens.
Stop this! Let remove the screens! Having the content displayed in front of me would be better. We already saw films like Star Wars or Minority Report, displaying content in the air, like an interactive hologram. This is the future, this is great, it makes me dreaming. I'm conviced that Films are not inspired by the future - future is inspired by films.
holographic display

Let's build the future

Let's identify how we could build something to display a virtual holographic screen. Your car has probably such technology with the head-up display: a picture is appearing through the windscreen because of reflection. To prepare a similar device, we need to understand some physics.
A transparent surface catches the projected content (computer screen) and reflect the light to the user eyes. The subject rendered is perceived as being behind the transparent surface.
path style="opacity:1;fill:url(#linearGradient5201);fill-opacity:1;stroke-width:1.21147823;stroke-miterlimit:4;stroke-opacity:1;display:inline;filter:url(#filter36353)" d="M 321.07143,226.15809 L 325.7385,548.30357 C 325.76271,573.77672 274.86102,589.69127 212.14286,589.69127 C 149.4247,589.69127 97.987297,569.31244 98.011506,543.75 L 98.035714,542.85714 L 89.076505,224.83412" sodipodi:nodetypes="ccsccc" /> Screen or projector Perceived location 90° 45° Glass
The longer distance between the projector and the reflecting surface, the farther the rendered subject seems to be.
If the eyes are not at the same height as the transparent surface, the transparent surface must have a different angle and the projector rendering should compensate the distortion.
path style="opacity:1;fill:url(#linearGradient5201);fill-opacity:1;stroke-width:1.21147823;stroke-miterlimit:4;stroke-opacity:1;display:inline;filter:url(#filter36353)" d="M 321.07143,226.15809 L 325.7385,548.30357 C 325.76271,573.77672 274.86102,589.69127 212.14286,589.69127 C 149.4247,589.69127 97.987297,569.31244 98.011506,543.75 L 98.035714,542.85714 L 89.076505,224.83412" sodipodi:nodetypes="ccsccc" /> Screen or projector Perceived location 120° 30° Glass
As the result is floating in the air, based on a light source, black color will be interpreted as transparent ( there is no black light! ). Best rendering requires high contrast projector (lots of lumens) and not much ambient light.
A dark background in front of the user can be a benefit for the user experience
path id="path4224" style="opacity:1;fill:url(#linearGradient5201);fill-opacity:1;stroke-width:1.21147823;stroke-miterlimit:4;stroke-opacity:1;display:inline;filter:url(#filter36353)" d="M 321.07143,226.15809 L 325.7385,548.30357 C 325.76271,573.77672 274.86102,589.69127 212.14286,589.69127 C 149.4247,589.69127 97.987297,569.31244 98.011506,543.75 L 98.035714,542.85714 L 89.076505,224.83412" sodipodi:nodetypes="ccsccc" /> Dark Background

Tips to increase the user experience

Hiding the projector will increase the Wow effect:
path id="path4224" style="opacity:1;fill:url(#linearGradient5201);fill-opacity:1;stroke-width:1.21147823;stroke-miterlimit:4;stroke-opacity:1;display:inline;filter:url(#filter36353)" d="M 321.07143,226.15809 L 325.7385,548.30357 C 325.76271,573.77672 274.86102,589.69127 212.14286,589.69127 C 149.4247,589.69127 97.987297,569.31244 98.011506,543.75 L 98.035714,542.85714 L 89.076505,224.83412" sodipodi:nodetypes="ccsccc" />
Picture can be rendered from above
path id="path4224" style="opacity:1;fill:url(#linearGradient5201);fill-opacity:1;stroke-width:1.21147823;stroke-miterlimit:4;stroke-opacity:1;display:inline;filter:url(#filter36353)" d="M 321.07143,226.15809 L 325.7385,548.30357 C 325.76271,573.77672 274.86102,589.69127 212.14286,589.69127 C 149.4247,589.69127 97.987297,569.31244 98.011506,543.75 L 98.035714,542.85714 L 89.076505,224.83412" sodipodi:nodetypes="ccsccc" />
To avoid refraction and ghosting effect, use a slim surface
The bigger the screen is, the bigger can be the hologram

Double display

You can use 2 transparent surfaces to display 2 different pictures from the same projector or screen. Each person will see something different. For instance, the sales person could see selling tips added to the content.
path id="path4224" style="opacity:1;fill:url(#linearGradient5201);fill-opacity:1;stroke:url(#linearGradient36335);stroke-width:1.21147823;stroke-miterlimit:4;stroke-opacity:1;display:inline;filter:url(#filter36353)" d="M 321.07143,226.15809 L 325.7385,548.30357 C 325.76271,573.77672 274.86102,589.69127 212.14286,589.69127 C 149.4247,589.69127 97.987297,569.31244 98.011506,543.75 L 98.035714,542.85714 L 89.076505,224.83412" sodipodi:nodetypes="ccsccc" />backgroundimage/svg+xmlimage/svg+xml

The code

We use Salesforce console to host our code in a custom console component, in a Visualforce page. A custom controller will retrieve data that is rendered on client side as charts. For the demo we are using Google Charts. The custom console component must be poped out in a separate window, moved to the secondary screen (acting as a projector) and then displayed in full screen (just pressing F11 from the browser).
We display Salesforce data, that will react in real-time on lots of events:
  • When the user is changing his working context (switching from one tab to another). For this purpose we leverage the Console api (integration.js)
  • When the data being displayed is changing. We need to configure the console push notifications, based on the streaming api; the page is notified each time the data that we monitor is changed.
  • When the user is touching the graphic in the air (see Minority Report); for this purpose we have developed a custom motion detection system, leveraging the webcam

Airforce1

 
© 2018 Jean-Luc Antoine, All Rights Reserved