Blender 2006 google夏日代码建议(2)
体绘制的建议。Volumetric Rendering Proposal
IMPLEMENTING VOLUMETRIC RENDERING FOR BLENDER
在 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.
在自然环境和计算模型中,许多对象和现象只能用三维数据场表示,对象体不是用几何曲面和曲线表示的三维实体,而是以体素为基本造型单元。例如人体里面就十分复杂,如果仅仅用几何表示各器官的表面,不可能完整显示人体的内部信息。体绘制(Volume Rendering)的目的就在于提供一种基于体素的绘制技术,它有别于传统的基于面的绘制技术,能显示出对象体的丰富的内部细节。体绘制直接研究光线穿过三维体数据场时的变化,得到最终的绘制结果,所以体绘制也被称为直接体绘制。体绘制与传统面绘制的区别见图2-8。从结果图象质量上讲,体绘制优于面绘制,但从交互性能和算法效率上讲,至少在目前的硬件平台上,面绘制优于体绘制,这是因为面绘制是采用的传统的图形学绘制算法,现有的交互算法和图形硬件和图形加速技术能充分发挥作用。
Blender 现在的爆炸效果是用粒子来模拟的,在改变了摄象机位置以后,会感觉不太真实。
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.
在blender当中实现一类“体”的物体类型。有位置和尺寸。当然也有渲染质量控制的参数。采样和3d的纹理的实现也可以无缝的衔接。
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.
实现细节:
需要新的渲染流程,和新的前置渲染引擎实现。
中文的关于体绘制的科普:http://www.cgn.net.cn/wsdj/z7.htm


0 Comments:
Post a Comment
<< Home