[Bf-blender-cvs] CVS commit: blender/source/blender/blenkernel BKE_anim.h blender/source/blender/blenkernel/intern anim.c node.c node_composite.c blender/source/blender/render/extern/include RE_shader_ext.h blender/source/blender/render/intern/include render_types.h renderdatabase.h blender/source/blender/render/intern/source ...

Ton Roosendaal ton at blender.org
Mon Feb 6 23:11:50 CET 2006


ton (Ton Roosendaal) 2006/02/06 23:11:50 CET

  Modified files:
    blender/source/blender/blenkernel BKE_anim.h 
    blender/source/blender/blenkernel/intern anim.c node.c 
                                             node_composite.c 
    blender/source/blender/render/extern/include RE_shader_ext.h 
    blender/source/blender/render/intern/include render_types.h 
                                                 renderdatabase.h 
    blender/source/blender/render/intern/source convertblender.c 
                                                pipeline.c 
                                                rendercore.c 
                                                renderdatabase.c 
                                                zbuf.c 
    blender/source/blender/src drawnode.c editnode.c 
                               previewrender.c 
  
  Log:
  iImage based Vector Blur
  
  After a couple of experiments with variable blur filters, I tried
  a more interesting, and who knows... original approach. :)
  
  First watch results here:
  http://www.blender.org/bf/rt0001_0030.avi
  http://www.blender.org/bf/hand0001_0060.avi
  
  These are the steps in producing such results:
  
  - In preprocess, the speed vectors to previous and next frame are
    calculated. Speed vectors are screen-aligned and in pixel size.
  - while rendering, these vectors get calculated per sample, and
    accumulated in the vector buffer checking for "minimum speed".
    (on start the vector buffer is initialized on max speed).
  
  - After render:
  - The entire image, all pixels, then is converted to quad polygons.
  - Also the z value of the pixels is assigned to the polygons
  - The vertices for the quads use averaged speed vectors (of the 4
    corner faces), using a 'minimum but non-zero' speed rule.
  
    This minimal speed trick works very well to prevent 'tearing' apart
    when multiple faces move in different directions in a pixel, or to
    be able to separate moving pixels clearly from non-moving ones
  
  - So, now we have a sort of 'mask' of quad polygons. The previous steps
    guaranteed that this mask doesn't have antialias color info, and has
    speed vectors that ensure individual parts to move nicely without
    tearing effects. The Z allows multiple layers of moving masks.
  
  - Then, in temporal buffer, faces get tagged if they move or not
  - These tags then go to an anti-alias routine, which assigns alpha
    values to edge faces, based on the method we used in past to antialias
    bitmaps (still in our code, check the antialias.c in imbuf!)
  
  - finally, the tag buffer is used to tag which z values of the original
    image have to be included (to allow blur go behind stuff).
  
  - OK, now we're ready for accumulating! In a loop, all faces then get
    drawn (with zbuffer) with increasing influence of their speed vectors.
    The resulting image then is accumulated on top of the original with a
    decreasing weighting value.
  
  It sounds all quite complex... but the speed is still encouraging. Above
  images have 64 mblur steps, which takes about 1-3 seconds per frame.
  
  Usage notes:
  
  - Make sure the render-layer has passes 'Vector' and 'Z' on.
  - add in Compositor the VectorBlur node, and connect the image, Z and
    speed to the inputs.
  - The node allows to set amount of steps (10 steps = 10 forward, 10 back).
    and to set a maximum speed in pixels... to prevent extreme moving things
    to blur too wide.
  
  Revision  Changes    Path
  1.7       +2 -1      blender/source/blender/blenkernel/BKE_anim.h
    <http://projects.blender.org/viewcvs/viewcvs.cgi/blender/source/blender/blenkernel/BKE_anim.h.diff?r1=1.6&r2=1.7&cvsroot=bf-blender>
  1.33      +14 -13    blender/source/blender/blenkernel/intern/anim.c
    <http://projects.blender.org/viewcvs/viewcvs.cgi/blender/source/blender/blenkernel/intern/anim.c.diff?r1=1.32&r2=1.33&cvsroot=bf-blender>
  1.9       +4 -1      blender/source/blender/blenkernel/intern/node.c
    <http://projects.blender.org/viewcvs/viewcvs.cgi/blender/source/blender/blenkernel/intern/node.c.diff?r1=1.8&r2=1.9&cvsroot=bf-blender>
  1.10      +29 -26    blender/source/blender/blenkernel/intern/node_composite.c
    <http://projects.blender.org/viewcvs/viewcvs.cgi/blender/source/blender/blenkernel/intern/node_composite.c.diff?r1=1.9&r2=1.10&cvsroot=bf-blender>
  1.7       +3 -3      blender/source/blender/render/extern/include/RE_shader_ext.h
    <http://projects.blender.org/viewcvs/viewcvs.cgi/blender/source/blender/render/extern/include/RE_shader_ext.h.diff?r1=1.6&r2=1.7&cvsroot=bf-blender>
  1.3       +11 -2     blender/source/blender/render/intern/include/render_types.h
    <http://projects.blender.org/viewcvs/viewcvs.cgi/blender/source/blender/render/intern/include/render_types.h.diff?r1=1.2&r2=1.3&cvsroot=bf-blender>
  1.4       +3 -1      blender/source/blender/render/intern/include/renderdatabase.h
    <http://projects.blender.org/viewcvs/viewcvs.cgi/blender/source/blender/render/intern/include/renderdatabase.h.diff?r1=1.3&r2=1.4&cvsroot=bf-blender>
  1.8       +256 -155  blender/source/blender/render/intern/source/convertblender.c
    <http://projects.blender.org/viewcvs/viewcvs.cgi/blender/source/blender/render/intern/source/convertblender.c.diff?r1=1.7&r2=1.8&cvsroot=bf-blender>
  1.14      +13 -3     blender/source/blender/render/intern/source/pipeline.c
    <http://projects.blender.org/viewcvs/viewcvs.cgi/blender/source/blender/render/intern/source/pipeline.c.diff?r1=1.13&r2=1.14&cvsroot=bf-blender>
  1.138     +19 -8     blender/source/blender/render/intern/source/rendercore.c
    <http://projects.blender.org/viewcvs/viewcvs.cgi/blender/source/blender/render/intern/source/rendercore.c.diff?r1=1.137&r2=1.138&cvsroot=bf-blender>
  1.15      +24 -4     blender/source/blender/render/intern/source/renderdatabase.c
    <http://projects.blender.org/viewcvs/viewcvs.cgi/blender/source/blender/render/intern/source/renderdatabase.c.diff?r1=1.14&r2=1.15&cvsroot=bf-blender>
  1.43      +427 -1    blender/source/blender/render/intern/source/zbuf.c
    <http://projects.blender.org/viewcvs/viewcvs.cgi/blender/source/blender/render/intern/source/zbuf.c.diff?r1=1.42&r2=1.43&cvsroot=bf-blender>
  1.9       +20 -0     blender/source/blender/src/drawnode.c
    <http://projects.blender.org/viewcvs/viewcvs.cgi/blender/source/blender/src/drawnode.c.diff?r1=1.8&r2=1.9&cvsroot=bf-blender>
  1.10      +1 -0      blender/source/blender/src/editnode.c
    <http://projects.blender.org/viewcvs/viewcvs.cgi/blender/source/blender/src/editnode.c.diff?r1=1.9&r2=1.10&cvsroot=bf-blender>
  1.65      +4 -1      blender/source/blender/src/previewrender.c
    <http://projects.blender.org/viewcvs/viewcvs.cgi/blender/source/blender/src/previewrender.c.diff?r1=1.64&r2=1.65&cvsroot=bf-blender>



More information about the Bf-blender-cvs mailing list