flipCode - Tech File - Conor Stokes [an error occurred while processing this directive]
Conor Stokes
(aka DirtyPunk)
Click the name for some bio info

E-Mail: cstokes@crytek.com

   03/28/2000, The Fine Art Of

Well, the bumper column update is pretty much done, and shall soon be off into the hands of Kurt. This is my first techfile update from the lab at uni by the way, in the soon to be infamous "Wasted time before my lecture". But, I thought since I've done all I can do there, and seems I still have 1.5 hours to go etc, etc, I would update here.

Work in the industry, as I've discovered is tough, and not all beating defensless old ladies. Deadlines can be very hard to meet, and often require super human effort. Its a nice learning experience however, and I like what I'm doing most of the time. I like working on an engine, and would be still doing it if I was un-employed.

Firstly before I go off on my big tangent, I wanna talk mainly about lightmap texture coordinate generation. In generating lightmaps, you need to have the 3d X,Y and Z value for each UV coordinate, and you have to finish mapping the UV coordinates to the edges. If you restrict yourself to triangles, rectangular grid bezier surfaces or quads, this is much less of a problem. However, in an N edges polygon, this is less simple.

There are two different solutions I've used to obtain this information in the past, and I was thinking that many people often go in the less optimal direction. The typical way of doing this seems to be to choose the axis closest to the plane of the polygon, shoot rays through the verts, take the 2d bounding box on the axis, then shoot rays from the uniform grid on the axis plane in the direction of the axis plane normal through the object. This is a less than optimal solution, as more lumels on the map are wasted than they should be.

A better solution as I see it is to rotate the plane to be axis aligned. This can be done easily using the plane normal, and a vector perpindicular to it. If we take the 2d bounding box in this axis of the polygon, we have a simple light mapped area. However, the 2nd vector perpindicular to the plane normal is very important. The 2d bounding box's orientation is decided by this. What I see is that this vector could be rotated, and refined so that we can find near the tightest fit 2d bounding box. This can give us higher lumel density (more efficient, better light quality for the same amount of memory), for the same size lightmap for very little cost.

Anyway, now on with a little rant about something I've found my mind repeating.

I think that possibly after I've finished working, I'm considering an open source 3d engine with a more generic research touch. Just before my work at CryTek, I considered what I called an "EngineX" project, where a fully functional base engine, that was totally pluggable & expandable. The idea would be to open source the engine, and allow people to do research, and add their own modules. The license would've been flexible enough to allow for both commercial use and keeping some code private, but also allow for open source contributions, and protection of them.

For instance, totally 3rd party modules would be the property of the authours and no restrictions would be placed on them. The author may choose to add them to the open source project, by placing them there with the liscense in the source. However, modified code of the actual engine/open sourced modules would require code release.

The engine would have come from the Claustrophobic Irony base, but expanded for much more flexibility and generic use.

The actual purpose of the Engine wouldn't have been for commercial use though, but for research. Visibility algorithms, lighting algorithms, curved surface algorithms and rendering algorithms for example would have been fully put into the engine in a way they could be modified easily, and plugged in and out at will.

I'm saying this now, as I think it is time something like this came about, and right now I don't have the time. Crystal Space is a nice project, but serves a very different purpose. The purpose of Crystal Space is more to provide an open source engine with a complete feature base for use by anyone on all platforms.

This engine would be a research base so people could perform research without having to write a full engine and they would also have a set base for comparison, possibly with new algorithms written into other modules. This would also give people who want to keep up with the latest algorithms a chance to see them in action, and see the code behind them.

There could be commercial projects based on the engine such as for prototyping, hardware R&D/demos, viability testing, private funded research etc. Games could be done on the engine, but the slant of what is being done puts it more on the plane of research.

Anyway, I'll guess I'll say toodles now, and leave you with this all important mini-rant message. Any place which apply to policy of using un-softened single ply sand paper style toilet paper should be boycotted, due to their crime against humanity.

Conor "DirtyPunk" Stokes

  • 12/29/2000 - Techfile From Somewhere Different
  • 10/10/2000 - Some Fun, And A Cameo Appearance
  • 08/10/2000 - Déjà vu - And I've Done It Before
  • 07/08/2000 - Various Loose Ends To Hang
  • 05/15/2000 - The Way To Hit A Ball With A Bat. Or Not
  • 03/28/2000 - The Fine Art Of
  • 02/13/2000 - A Life Time of Learning, Teaching and Eating M&Ms
  • 12/09/1999 - Strangeness And Wondering If You Are Taking Innovation A Tad Too Far
  • 11/12/1999 - How to Break Exam Tension? Update Your Techfile
  • 09/14/1999 - Lots of Ramblings, personal things and comments on why SNFU
  • 08/23/1999 - Trials and Tribulations of Being Cerebrally Defunct
  • 07/29/1999 - Quick Update about Stuff and Things
  • 07/25/1999 - I'm Back Baby
  • 07/01/1999 - Is it so? Or am I just a Psycho Babbling Mental Hobo, who's Brain has No Home?
  • 06/25/1999 - Another Couple of Things
  • 06/17/1999 - I Am A Naughty Little Boy ;( But I Have A Way To Make Up
  • 06/16/1999 - What the hell? A new data structure for visibility? I don't know, I haven't heard of it.
  • 06/05/1999 - A Little Right Brained
  • 05/12/1999 - A Couple O Things
  • 05/08/1999 - Pre Computable Nice Visibility Sets
  • 05/04/1999 - More on Volumetrics
  • 04/30/1999 - Generic Update
  • 04/27/1999 - Spherical Volumetric Rendering (Mapping)
  • 04/25/1999 - Fractal Curves, Emulation Of Nature
  • 04/25/1999 - Claustrophobic Irony Level Loading and Manufacture
  • 04/24/1999 - Visibility Ramblings
  • 04/21/1999 - Why Software Rendering Is Not Dead
  • 04/17/1999 - Optimizing For Specific 3D Hardware

  • This document may not be reproduced in any way without explicit permission from the author and flipCode. All Rights Reserved. Best viewed at a high resolution. The views expressed in this document are the views of the author and NOT neccesarily of anyone else associated with flipCode.

    [an error occurred while processing this directive]