news    |    features    |    todo    |    gallery    |    download    |    legalese

This is the l2rib home page. l2rib is a utility written by Julian Fong for converting LDraw models for use in a RenderMan compliant renderer. In other words, it reads .DAT files, and writes RIB files which can then be rendered by renderers such as PhotoRealistic RenderMan.



01/24/05 - Version 1.0 is now released for Linux and Windows.

  • There is now much better support for color. l2rib now requires a ldconfig.ldr with appropriate 0 !COLOUR commands. The !COLOUR command has almost been entirely implemented (including the MATERIAL extension, which is useful for injecting arbitrary shader definitions). Also, complement Color 24 is now properly handled (specified directly via the EDGE part of the !COLOUR command) instead of being deduced wrongly (via usage of the user attribute l2ribEdgeColor).
  • Cached RIB files are now immune to problems with the -lines flag (via usage of the user attribute l2ribLines). Because of the usage of user options and attributes, cached RIB files should now never need to be regenerated unless the underlying .DAT file has changed.
  • Several bounding box issues have been addressed. Models should now always be properly centered at the origin. MPD files are now properly bounded, using a multipass solution.
  • Visibility flags have been updated (to PRMan 11.0 standards) and improved. Lines are now never visible in shadow maps or during raytracing. A new -raytrace flag has been added. Raytraced lights now work again (requires the renderer supports "raytrace" passed to the default "shadowdistant" light).
  • A new -studlogo flag selectively enables or disables the generation of displaced studs on bricks.

03/17/04 - Windows build for version 0.9 is up.

03/11/04 - Version 0.9 is now released for Linux (a Windows build will be along soon). This new release adds support for MPD files, optional lines (command 5), and more prebuilt RIB files, resulting in smoother appearances for many parts (particularly conic sections).



  • draws tris (command 3) and quads (command 4)
  • draws lines (both command 2 and command 5 optional lines; requires renderer that supports RiProcedural DSO primitives and RiCurves)
  • supports (actually, requires) color definitions (via 0 !COLOUR command), by default read from ldconfig.ldr
  • generates highly optimized and bounded RIB for efficient occlusion culling (requires the renderer implement DelayedReadArchive RiProcedural correctly); raytracing and shadow map passes contain proper visibility and disabled shaders for fast rendering
  • all subparts are cached for speed of future invocation (requires renderer implements user attributes and options correctly)
  • detects and substitutes prebuilt RIB chunks to support higher level geometry. The provided substitutions replace conic sections with RiCylinders, RiSpheres, and RiTori; round edges with bezier RiCurves; disc cutouts with trimmed RiNuPatches
  • allows specification of camera orientation, light source position/intensity/color/shadow generation type, background color, quality settings
  • automatically writes out RIB for rendering depth map shadows


Todo and bugs

This software is under active development as time permits. If you have bugs or feature requests, please feel free to submit them to the author (contact information here).

Here's a short list of things that would be nice to support in future releases.

  • Support subdivision surfaces!
  • The prebuilt RIB files currently don't have the equivalents for optional lines (command 5), mainly because it's a little hard to imagine how to clip a cubic curve properly
  • allow specification of spotlights instead of distant lights (and thus avoid the "flat" badly lit look)
  • support the backface culling (BFC) extension (this shouldn't speed up any decent renderer much - but see below)
  • support more 3rd party directives in command 0
  • automatically smooth normals. (NB: I tried this once before the BFC directive was added, and some parts looked a lot better, but for the most part they looked worse due to triangles and quads not specified with consistent orientation. With the BFC directive this will be more workable.)
  • automatic reflection mapping (particularly for shiny floors)
  • maybe some sort of automatic bumpy texture. This really should just be a simple displacement shader.
  • motion blur/animation directive (some sort of "0 l2rib motionblur" command.) Since part inclusion uses a full matrix, it should be easy to just tack a second matrix after the part inclusion to specify the end of shutter position. NB: RIB is not an animation language, and I'm not trying to make .DAT files one either.



Click on the thumbnails below for a larger picture plus description. I am always looking for better pictures to display here, so if you've used l2rib to generate something pretty please do feel free to submit them!

Car occlusion render Car indirect diffuse render Blockade runner render



l2rib's current release is 1.0.0. Please visit the l2rib page at SourceForge for all file downloads.



The RenderMan® Interface Procedures and RIB Protocol are: Copyright 1988, 1989, Pixar. All rights reserved. RenderMan® is a registered trademark of Pixar.

Lego® is a registered trademark of the Lego Group.

SourceForge.net Logo