利用者:Vladius/SummerOfCode2006/Volumetric Rendering Proposal

提供: wiki
移動先: 案内検索

Summer of Code 2006: Volumetric Rendering Proposal

IMPLEMENTING VOLUMETRIC RENDERING FOR BLENDER

Synopsis:

Volumetric rendering is the process of visualizing three dimensional data sets.I would like to implement slice-based rendering of volumes, defined by the volume function like "Fragment getFragment(x,y,z)" where "Fragment" is a data structure containing fields like red, green and blue color channels, alpha channel, normal vector, etc; x, y, z denotes a point in 3D space(local or global). Slice method approximates the volume by projecting volume function on sequential planes. Planes are camera-oriented, meaning their normals always points toward the camera. Slice technic is good for rendering volumes that describe cloud-like objects: explosions, nebulas, smoke. getFragment function allows high variation of possibilities including constructing specific shapes with boolean operations. For example, one cloud can "mask out" another cloud.

Blender currently has no volumetric rendering. Effects like explosions can be produced with particles, but when camera moves around, it is clearly visible that explosion is created from "parts" that behave unnaturally.

Deliverables:

New object type "Volume" will be implemented. This type will have position and dimensions. Also it will have parameters that adjust rendering quality, like quantity of slices, and possibly some other sampling parameters. New pass for sliced volumetric rendering will be implemented and seemlessly integrated. "getFragment(x,y,z)" will be implemented for 3D textures.

Implementation Details:

New blender's rendering process allows for easy integration of new rendering passes. renderVolume function will be implemented to write into RenderPart. Resulting part will be combined by blender's rendering engine.