The Lightflow Rendering Interface

The Lightflow Rendering Interface is an object oriented programming interface to synthetic rendering, which provides a common environment and description language to treat light distribution in three dimensional spaces.
A major advantage of the system is that it has been made looking for complete extensibility since its creation, providing the user with simple and flexible extension mechanisms, which allow, among the others, procedural definition of: surface and volumetric patterns and materials, new parametric surface types, general lighting systems, camera lenses and output redirection.
The interface is made up by a set of language independent classes and procedures that allow to define three dimensional scenes, so that an actual interface implementation may be easily used both as an output device by external programs and as a separate rendering tool by single individuals.
Currently, two versions of the Lightflow Rendering Interface are freely available for non commercial uses: the Client Side C++ API, and a limited Python wrapping that allows easy scene construction via scripting (see the News section).

	  
#include < Lightflow.h >

int main (int argc, char* argv[])
{
    LfLocalSceneProxy* scene = new LfLocalSceneProxy();
    LfArgList list;

    list.Reset();
    list << "position" << LfPoint(5.0, -5.0,  4.0);
    list << "color"    << LfColor(1.0,  1.0,  1.0)*3e2;
    scene->LightOn(  scene->NewLight( "point", list ) );


    list.Reset();
    list << "ka" << LfColor( 0.0, 0.0, 0.5 );
    list << "kc" << LfColor( 1.0, 0.5, 0.5 );
    list << "kd" << 0.5;
    list << "km" << 0.1;
    LfInt plastic = scene->NewMaterial( "standard", list );


    scene->MaterialBegin( plastic );

    list.Reset();
    list << "radius" << 1.0;
    scene->AddObject( scene->NewObject( "sphere", list ) );

    scene->MaterialEnd();


    list.Reset();
    list << "file" << "ball1.txt";
    LfInt saver = scene->NewImager( "saver", list );


    scene->ImagerBegin( saver );

    list.Reset();
    list << "eye" << LfPoint(0.0, -4.0,  0.0);
    list << "aim" << LfPoint(0.0,  0.0,  0.0);
    LfInt camera = scene->NewCamera( "pinhole", list );

    scene->ImagerEnd();


    scene->Render( camera, 400, 300 );

    delete scene;
}
	    
	  

All the images present in this document were created and rendered with the Lightflow Rendering Tools by Jacopo Pantaleoni, and they can be redistributed only with the following copyright notice:
Rendered with the Lightflow Rendering Tools.
Copyright 1998-2000, by Jacopo Pantaleoni. All rights reserved.