Cinema Seat Preview Experiment

An experimental demo where a 3D perspective preview is shown for a selected seat in a cinema room.

Maybe you are familiar with those ticket booking systems where, at some point during the purchase flow, you have to choose a seat. This is usually done when selling tickets for games, movies, flights or concerts. Wouldn’t it be cool to have some kind of “realistic” preview of the seat, i.e. see the stage or screen from the perspective of the space you chose? Of course it would 🙂 This is the kind of question that resulted into a new experiment which we’d like to share with you today.

Attention: Some of the techniques we are using are very experimental and won’t work in all browsers. Support for transform-style: preserve-3d is necessary for this demo.

So the idea is to show some kind of cinema room where we can choose seats from a seating plan. When choosing a seat, we’ll move to the respective position in the room and allow the user to see the real view from the chosen place. There is also a button in the center of the page that allows to unlock the rotation of the viewer, something that is quite important for a realistic view considering that we can rotate and tilt our heads.

The trailer that we use in the demo is from Sintel, an animated movie by The Blender Foundation. It is licensed under Creative Commons Attribution 3.0.

Tiny break: 📬 Want to stay up to date with frontend and trends in web design? Subscribe and get our Collective newsletter twice a tweek.

Initially, we show a trailer box with the info of the movie and the option to choose the seats:

CinemaSeatPreviewExperiment_01

When we choose to select the seats, we’ll move the view to the back of the cinema room and show the seating plan:

CinemaSeatPreviewExperiment_02

Once a seat is clicked, the view moves to the respective position:

CinemaSeatPreviewExperiment_03

The little icon in the center of the screen allows for unlocking the view, i.e. allowing for the viewer to move around. This resembles the free movements of the head that are important for a realistic view.

At any point we can play the trailer and see how the screen is being perceived from that specific place.

Unfortunately, IE does not support transform-style: preserve-3d which breaks nested 3D elements. So this demo won’t work in the versions that don’t support it.

Browser Support:
  • ChromeSupported
  • FirefoxSupported
  • Internet ExplorerNot supported
  • SafariSupported
  • OperaSupported

We hope you enjoy this experiment and find it inspiring!

Check out the version by Sebastian Troć where the real seats are also colored: SebastianTroc/SeatPreview

Manoela Ilic

Manoela is the main tinkerer at Codrops. With a background in coding and passion for all things design, she creates web experiments and keeps frontend professionals informed about the latest trends.

Stay in the loop: Get your dose of frontend twice a week

Fresh news, inspo, code demos, and UI animations—zero fluff, all quality. Make your Mondays and Thursdays creative!

Feedback 135

Comments are closed.
  1. I am…wow…just…wow! I tend to stare at your things for hours and think to myself that this is amazing. Short of breath again…wow!

  2. Hi,

    Great Job this is amazing. I have a question in this plugin.when I call the zoomout function with a button after selecting a seat then im clicking the 180 view, it will jump to that seat’s view instead of room’s view as how it is in start.how can I fix it?

  3. I Have No Word For U Mary Lou….!!! Ur All Code Is Amazing…!!! Great Thank U…!!!

  4. Awesome ! It almost fits the needs of my company. Your work is really going to help me 🙂

  5. WOW This system is one of the most “futury” stuff i have seen in the internet. Very impressive.

  6. Can you please tell which languages are basic to understand the code? Or you can tell which material will help me to make such a animation? I want to make my FYP as a cinema ticket reservation system

  7. Did anyone find a workaround for IE? I really love this and would like to use it! Any help is appreciated.