Raytracing project

Outcome
Nice Visuals!!! Produce high quality outputs of parts within the Freecad document and provide a very simple interface with presets to allow quick initialisation for rendering and previews.

The user interface should allow more complex situations to be created and possibly previewed such as changing and modifying lights and positions. However, the aim is to not provide a full featured render suite.

Purpose and principles
This project is to update the current render module [Raytracing_Module] that currently uses povray, a biased renderer which gives satisfactory results and allow more modern renderers such as Lux Render, Yafaray, Indigo renderers to be used.

Also to provide a generic interface to allow multiple render back-ends to be used to visualise Features within FreeCad.Providing a more generic programming interface will allow render plugins to be created more easily.

The interface will allow both open source and proprietary external renderers to be used by generating a compatible scene file and launching a separate process in the background. The output can then be previewed inside Freecad directly by opening the temporary output file (if available).

Each renderer will be a plugin into a generic interface and provide compatible materials and rendering modes.

Presets
A library of material 'must' be created for each render plugin along with presets. Material properties can be changed. Scene presets should allow users with inexperience with Rendering to produce nice visuals in little time.

Current State
The generic inteface is currently being created and to test the integration Lux render, an unbiased renderer will be first implemented. Current work is being completed by mrlukeparry on his render branch Github Render Branch.

Currently it is possible to render objects to Lux Render:



Featured is a part that was creating using PartDesign/Sketcher then rendered using the new render workbench being developed in Lux Render. Lux Render allows nice effects such as DOF to be created to improve realism.

Organising

 * Create the Abstraction to provide the interface between renderers


 * Implement an interface for describing generic materials and collecting these


 * Implement an interface for describing render presets


 * Implement a feature to store all this information permanently


 * Create a workbench environment for displaying the output


 * Create workbench tools for changing render properties


 * Create workbench tools for browsing, changing and applying materials to part features