Persistent Echo 2 Demo Content [lots of images]

Last semester we were each assigned a semestral project in our OpenGL course (at fi.muni.cz) to “create a standalone OpenGL application featuring an animated robot that rearranges the letters of your name into an anagram”.

I had previous experience with DX7 and early OpenGL (say 1.x) building Persistent Echo 1, so I decided to refresh my knowledge and do a second iteration of the engine.

At the end of the semester it had a fixed-function core written in C++, a logic backend using Python and a plenty of helper functions and classes around it. I’ve started coding rather early and blind, so a number of design decisions got back at me later in the development.

http://lh6.ggpht.com/_y6TAzwoe4fA/SqpttoDhreI/AAAAAAAAAFc/dESIOv_UkXQ/s800/02%20-%20conveyor.png

http://lh3.ggpht.com/_y6TAzwoe4fA/SqptuGX44AI/AAAAAAAAAFg/tioJOwx4fYQ/s800/03%20-%20room.png

A 5 by 5 m workshop room with a CNC machine in the middle and a pair of conveyor belts running from the CNC to holes in the walls. A stream of prefabs would roll from one of the belts to the CNC, the CNC would carve a letter on it and a mechanized arm would arrange them into an anagram as per the reqs.

http://lh3.ggpht.com/_y6TAzwoe4fA/Sqptuj1utnI/AAAAAAAAAFk/MjpgjLJ0kKQ/s800/04%20-%20assy.png

I was reshaping the CNC stand and accidentally made a couple of bars that looked like handrails. And that’s where the design idea changed. From now on, I was building something that many compared to a rock stage.

http://lh5.ggpht.com/_y6TAzwoe4fA/SqptvFneRFI/AAAAAAAAAFo/CcQiTV44pfk/s800/05%20-%20attachment.png

Truss structure that was supposed to hold giant screens and lighting pods above workers’ heads.

http://lh5.ggpht.com/_y6TAzwoe4fA/SqpuLjvM-MI/AAAAAAAAAHA/RdrZvaidDoI/s800/07%20-%20vents.png

http://lh6.ggpht.com/_y6TAzwoe4fA/SqpuMiTlOsI/AAAAAAAAAHI/arNePRGOH1I/s800/09%20-%20arm-wire.png

http://lh3.ggpht.com/_y6TAzwoe4fA/SqpuNC-49QI/AAAAAAAAAHM/ex38CEI6EEk/s800/10%20-%20arm-wire2.png

http://lh4.ggpht.com/_y6TAzwoe4fA/SqpuNr7vdbI/AAAAAAAAAHQ/-P-Ar_XPiyk/s800/11%20-%20arm-deployed.png

I’ve managed to stuff that truss into pretty much everything on the set. It looks good, but it eats VBOs for breakfast. It took a while to get the engine’s performance back up.

http://lh6.ggpht.com/_y6TAzwoe4fA/SqpuQjgtNgI/AAAAAAAAAHk/tfZq0dzlVNk/s800/16%20-%20bars.png

This hovering crane was supposed to construct the stairs only seconds before the user stepped on them. It was later scrapped due to time constrains.

http://lh6.ggpht.com/_y6TAzwoe4fA/SqpuSEZDHMI/AAAAAAAAAHs/PeK3zeedt44/s800/18%20-%20joint-1.png

http://lh3.ggpht.com/_y6TAzwoe4fA/SqpuStZOyrI/AAAAAAAAAHw/wjjt0YOjnb8/s800/19%20-%20joint-2.png

http://www.youtube.com/watch?v=0EzcwIXuqtY

Servos of the mechanized arm.

http://lh6.ggpht.com/_y6TAzwoe4fA/SqpuURwaB-I/AAAAAAAAAH4/yqR_NW0Nq8U/s800/21%20-%20letter.png

First texture. The letter itself is a decal on a base texture.

http://lh3.ggpht.com/_y6TAzwoe4fA/SqpuYL10s8I/AAAAAAAAAII/BeO_9AHmk8c/s800/26%20-%20hot.png

http://lh6.ggpht.com/_y6TAzwoe4fA/SqpuZhzZHzI/AAAAAAAAAIM/FqIyh6sypcw/s800/27%20-%20crane.png

http://lh4.ggpht.com/_y6TAzwoe4fA/Sqpua6-eIDI/AAAAAAAAAIU/52y-QSHwvk4/s800/29%20-%20ground%20plan.png

A ground plan of the set.

http://lh5.ggpht.com/_y6TAzwoe4fA/SqqDbXTpILI/AAAAAAAAALE/bty_N8Kg4tU/s800/30%20-%20textures.png

http://lh5.ggpht.com/_y6TAzwoe4fA/Sqpulty0mCI/AAAAAAAAAIg/I7tz5sOlvLY/s800/32%20-%20aware%20of%20the%20future.png

http://lh6.ggpht.com/_y6TAzwoe4fA/Sqpujhq1o6I/AAAAAAAAAIc/TQNa4ymnYs4/s800/33%20-%20coding.png

The robotic arm has an AI that responds to grab ant put calls, so all I need to tell it is object names.

A custom file format and exporter was developed.

http://lh4.ggpht.com/_y6TAzwoe4fA/SqpumhqXPxI/AAAAAAAAAIk/SdlWCNwiekg/s800/34%20-%20persistence.png

First in-engine render. You can see seriously crooked normals on the truss, those were manually fixed later.

There were some serious issues with the scenegraph and relative positions of linked objects.

http://lh6.ggpht.com/_y6TAzwoe4fA/Sqpun8hYwHI/AAAAAAAAAIo/R4Ga3fKmWYw/s800/36%20-%20trees%20fixed.png

This is how it looked after a fix was committed.

http://lh5.ggpht.com/_y6TAzwoe4fA/SqpuvJgGMDI/AAAAAAAAAJI/O2nGqfvpo9E/s800/44%20-%20servo%20cap.png

http://lh3.ggpht.com/_y6TAzwoe4fA/SqpuwzXZfCI/AAAAAAAAAJM/1sAKXsaxN40/s800/45%20-%20vertigo.png

http://lh4.ggpht.com/_y6TAzwoe4fA/Sqpu3k1LbXI/AAAAAAAAAJc/--fVf2lsUTs/s800/52%20-%20novej%20displej.png

AWARE Intergral Assembly mounting a new display unit :]

http://lh5.ggpht.com/_y6TAzwoe4fA/Sqpu6CWeq2I/AAAAAAAAAJk/gk161AeQOYE/s800/53%20-%20infty.png

http://lh6.ggpht.com/_y6TAzwoe4fA/Sqpu-9f01sI/AAAAAAAAAJo/qR0XZ0i848c/s800/54%20-%20halo.png

http://lh4.ggpht.com/_y6TAzwoe4fA/Sqpu_dCcq7I/AAAAAAAAAJs/SauTQ2eyOus/s800/55%20-%20emissivity.png

At first the scene, a logistics port on a tall skyscraper in the Inner City, was supposed to be flooded with white fog (the primary color of the AWARE corporation) with bridges stretching to infinity.

http://lh5.ggpht.com/_y6TAzwoe4fA/Sqpu1yf7yUI/AAAAAAAAAJU/YJRCDR1OXB4/s800/47%20-%20fog.png

That was swapped for a dark, more dystopian look.

http://lh4.ggpht.com/_y6TAzwoe4fA/SqpvF6l22xI/AAAAAAAAAJw/2h1wbjyGmgI/s800/59%20-%20Work%20Harder.png

And ultimately replaced by a night scene, complete with a star-filled skybox and a glowing urban horizon.

http://lh4.ggpht.com/_y6TAzwoe4fA/SqpvJ7cmnWI/AAAAAAAAAJ4/C1_mSanOOxg/s800/61%20-%20Sorry%2C%20couldn%27t%20resist.png

http://lh6.ggpht.com/_y6TAzwoe4fA/SqpvKjFt9wI/AAAAAAAAAJ8/3cppF1sw6aM/s800/60%20-%20My%20God%2C%20it%27s%20full%20of%20stars....png

http://lh3.ggpht.com/_y6TAzwoe4fA/SqpvTTertkI/AAAAAAAAAKA/Y8NtDH3_fm0/s800/64%20-%20The%20Inner%20City.png

http://lh4.ggpht.com/_y6TAzwoe4fA/SqpvXyaGLaI/AAAAAAAAAKE/xblM4CrcMC4/s800/62%20-%20Open%20Crate.png

http://lh6.ggpht.com/_y6TAzwoe4fA/Sqpva7jMusI/AAAAAAAAAKI/ralkY_ZAKPc/s800/63%20-%20Unloading.png

The final animation starts in one of the trusses that hold the upper assembly in place. The camera slowly creeps along a cable and drops out to view the activity below.

First crane movement.

Demo of the crane operating. Its target positions are specified using Empty objects.

wow, this looks good.
echo, i had that name, ahh well youl do better than me.

This is a video of the finished thing.

the camera animation could of been smoother.
some sound would be good to, great anyway!!!

Sound wasn’t in the requirements and the environment in which it was presented wouldn’t allow it anyway (waay too noisy, even for a lecture hall), but I agree on the camera. The interpolator algorithm was originally supposed to support quadratic interpolation with both rotation and translation, but I’ve only managed to implement it for translation. Rotation got it linear :]