Understanding quaternions

Quaternion are a very useful tool in 3D, but also one that is unintuitive and difficult to get a natural feeling about. The talk Jim Van Verth, of EssentialMath, gave earlier at GDC2013 explains some facts about quaternions and how they work, by looking back at their discovery: Understand Quaternions.

Update: on a side note, here is a trick for faster quaternion – vector multiplication.

How to use light to make better demos?

This is the third day at Revision, and my contribution this year is the talk I gave yesterday. Unlike last year, this seminar is not technical at all but focused on the design aspect and, to some extent, how it relates to the technical one. The context is demomaking, but many ideas are still valid in other media.

There were some issues with the recording unfortunately, which means some elements are missing (you will notice some blanks at the beginning). In particular after 5mn, there is an important point which was completely cut out. The text was:

Throwing a new technique at whatever you’re doing is not going to make it any better. It’s only going to change what you can achieve. There are two sides of image creation: the technical one and the artistic one. Different techniques allow to do different things, and the more techniques you master, the better you understand what you can and cannot do with them, and how to do it. Technique becomes a tool that changes how you can express yourself.

Here are the slides with notes (~5MB), or a low quality version (~1MB).

For more demoscene related talks, here is the full list of seminars at Revision 2013.

FaceWorks demonstration at GTC

Geeks3D mentioned this keynote at the GPU Technology Conference, where NVIDIA’s CEO shows their technology called FaceWorks. After talking about the uncanny valley and avatar rendering uses, came the live demonstration, which seriously raises the bar in terms of face rendering and animation.

The quality is incredible, the gap from photo realism is getting very narrow, and some expressions are really convincing. The transitions and frozen expressions feel weird though, so I am wondering how it would look running freely for a moment, with all the rapid subtle moves we show even when staying idle. The avatar as a mean of communication is certainly very appealing. It would be interesting to see if when facing this rendering, we would react to the expressions displayed.

The demo itself starts after 8 minutes.

Talking about light at Revision, 2

Last year I gave a talk at Revision in which I summed up some of the things I had been gathering on light shading.

This year too I will be attending Revision, in Saarbrücken, Germany, and will give a talk about light again. I will present some of the new stuff I learned. This time the topic is going to be focused on the use of light from a design perspective, in particular in the context of demo-making. It will also be an opportunity to improve on the things I wasn’t happy with regarding the performance: hopefully a better diction, flow and construction.

The talk is scheduled for Saturday, March 30th, at 12:00: “How to use light to make better demos?”. Please come and don’t bring tomatoes. :)

Also make sure to have a look to the complete list of talks, there is a lot of exciting stuff scheduled.

Tokyo Demo Fest 2013

This is a long due post, but I have been busy recently and couldn’t take the time to write a proper party report. Later being better than later, here are a few words about the third edition of the Japanese demoparty, Tokyo Demo Fest, which took place in the center of Tokyo a month ago.

Jade, by Offwhite, winner of the graphics competition at Tokyo Demo Fest 2013

This party is still very young. When the first edition was launched, it was a one day only event, had under 50 visitors, and I understand it took place in what seemed to be a meeting room they rented. The demoscene culture is something very little heard about in Japan, so kudos to these enthusiasts for organizing it. I wasn’t part of the team yet, and joined them a few months later, with the hope I could bring a European point of view and some of the experience from organizing Prologin for eight years (a French thing, most likely you’ve never heard of it; anyway it has a few points in common with demoparty).

The next edition was organized in a club in Akihabara which, while being way too narrow and not suited for coding sessions, certainly allowed to have a better party feeling than a cold meeting room. Around 80 visitors attended.

Sinus meets square

Étude des fluides, by Caty Olive, as part of the exhibition for the Mois du numérique

Then we went onward to the 2013 edition, with more experience and more expectations. And for some reason, many things went very well. The invitation intro, released at Function, won the PC 64k Intro Competition. Various sponsors supported us, including last minutes ones, securing us both on money and equipment. We met with the Institut français de Tokyo (a public funded cultural institution) and agreed on organizing the party in their buildings, as part of their event “Le mois du numérique” (“The Digital Month”, which had Éric Chahi as a guest star by the way). Suddenly, Tokyo Demo Fest had grown up from a nascent demoparty wannabe, to a full featured demoparty, with a warm party place wide enough for over a hundred visitors, seats and tables, real equipment (audio, video, light, network…) and other fancy stuff like an actual theater room for projections and seminars.

Demoshow at Tokyo Demo Fest 2013

Demoshow in the theater at Tokyo Demo Fest 2013

But then there was one problem left that wouldn’t be a matter of infrastructure: the mood. Would the audience participate? Would we have a real party? From my European point of view, it seems to me that Japanese people have a very hard time being spontaneous, and I understand it is somehow considered inappropriate in the Japanese society to openly show your emotions. They would watch a competition staying quiet and silent, only to give a contrived applause at the end, light years away from what we may experience in Europe, with people shouting and whistling on every bit they like. How to get this to work here was the big question, and the Japanese organizers who had attended other demoparties and experienced this uplifting feeling of being part of a crowd enjoying the event, were wondering too.

Party hall at Tokyo Demo Fest 2013

Party hall at Tokyo Demo Fest 2013

Well, I don’t know what happened. I don’t know if it’s a matter of reaching a critical mass, the opening icebreaker talk by Kioku (the lead organizer), the party place, the productions, or because we had many western visitors who by their behavior became the sparkle that would ignite the fire, but the atmosphere we had was a complete blast. That was it: Tokyo Demo Fest was now a solid demoparty, a mix of Japanese and European spirit that worked. I invite you to read this party report by Setsuko Hyodo for a more in-depth description.

Group shot at Tokyo Demo Fest 2013

Group photo with Mickey from Israel (far left), Eddie Lee (right) and Chibi-tech (far right)

Finally, on top of the cupcake, was the cherry. If you ever attended a small demoparty, you probably know the level of the releases is not going to be outstanding. Let’s face it, as fun as competitions are in such parties, you can consider yourself very lucky if you get anything, say, worth watching for people who did not attend. So how lucky exactly are we supposed to consider ourselves when we had for example a demo like Artifacts by IllogicTree (winner of the demo competition, and given how it was received outside the party, it is a good bet to say it is going to be one of the best demos of 2013), an artwork like Jade by Offwhite or a music video like ATOM – Galaxy Man by In-Sect?

Simple fragment shader based wireframe display

On his blog, Florian Boesch introduces to a clever technique to render wireframe polygons using fragment shading, along with a live demo. The full explanation is presented in this paper. For convex polygons, just add as an attribute (or compute in the geometry shader?) the distance between the vertex and the other edges, and use the minimum distance in the fragment shader. Simple, easy to implement, and a nice anti-aliased result. (the paper also presents a second technique for non-convex polygons).

Making the subtle obvious, follow-up

A couple of months ago I was posting here about this SIGGRAPH publication on amplification of details in a video. Yesterday the New York Times put online a story as well as a video on the topic, with explanations from the authors and some new examples.