|
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
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!
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.
|