Erik's blog

http://twitter.com/#!/erikjmoller

WebGL 101 video

,

Four score and seven days ago I set out to record a little video of some simple WebGL samples I had made. Originally I made the samples just to have a little introductory WebGL get-together at work, but when I had written them I figured "I might just as well whip a movie together for people outside of the office". It turned out to be a massive undertaking (for being a hobby project) with writing, recording and editing. I'm glad I didn't realize just how much work it would be or I probably would never have started it. I have edited movies before... minute long teasers and trailers... not feature film length videos like this one turned out to be.

In the end I'm pretty happy with the result. No one likes to listen to their own voice of course and I'm no exception, and there are a couple of typos in the code, lots of places where I stumble on words and if I would've done it all over again I could probably have done the presentation a lot better. That said, I think it turned out nice and I really do hope it'll be a good resource and complement to other sites like learningwebgl.com and MDN for people wanting to start playing around with WebGL.

The sample sources produced in the video is available on github

Here are all the video chapters for your convenience:
Intro 01 02 03 04 05 06 07 08 Matrix 09 10 11 12 13 14 Credits

The video is available in 1080p so just increase the rez a bit if it looks fuzzy.

Chris Mills has written up an excellent article about the first few steps of the video and it's available at dev.opera.com for those that prefer to read at their own pace.

I'd like to thank the people who helped out in one way or the other. PeterP for lending me the mac mini to do video editing on and for giving me feedback on the video. TimJ for giving me feedback on the video intro and his help on Odin. Other ppl helping out with Odin was also Mage and Sebastian. Thanks also to the three interns Ingemar, Marcus and Alex for their work on Emberwind HTML5
Lastly, thanks to Anna, Annika and Linus for putting up with my "I'm just going to edit for half an hour before bed".

Feedback and suggestions are very welcome as are pull requestst on github. I doubt I'll be making any updates to the current video... I'm pretty sick of it at the moment... but would probably be open to making a 201 if there's enough interest.

Enjoy!

SVG is awesome, but not the toolsTalking to Opera engineers - what the heck is a core-integration-point?

Comments

Eli Mitchellcyberstream Thursday, March 1, 2012 12:22:48 AM

Wow, you put a lot of work into this! Thanks for this useful resource.

Алексей Иванов Викторовичalexwindhope Monday, March 5, 2012 6:16:34 PM

Thank you so much, i love you dude bigsmile

johnpmayer Sunday, March 11, 2012 2:44:40 AM

This was awesome, and is finally gave me the kick I needed for a project. I had a question about the mesh file format: how is vertex data encoded? There seems to be a lot of duplication in mech-cube and yellow-cube, why are there 72 entries in vertexPositions? Could there be only 8*3=24?

I'm interested since I'm trying to do some work with regular polyhedra by generating the vertices on-the-fly, but can't seem to figure out the json 'file format'. I imagine this comes from opengl, but I'm starting with WebGL!

edit: looks like the details are in the vertex normals, each vertex on the cube is actually used by faces in three distinct planes, so each vertex needs to exist three times, but with a different normal vector each time. cool stuff!

Erik Mölleremoller Sunday, March 11, 2012 9:51:03 PM

Hey John. Sorry I'm still att SXSW so I'm a bit slow on replies. Yes you got it right. If you want to have a flat shaded cube then you need three versions of the vertex for each corner, each one having a normal pointing in the direction of the face it's belonging to.

Now if you want to make it more efficient you should actually have an interleaved vertex array...but worry about that when you have your stuff running and only if you really need the performance... it's better to keep it simple when you start out and actually get something running smile

Feel free to post questions here if you are running into issues... goes for everyone reading my rantings on the interwebz. I'm always glad to help!

Write a comment

New comments have been disabled for this post.