This adds an inpaint node to blender. In case, you don't know, inpainting does this: http://en.wikipedia.org/wiki/Inpainting It's use cases in blender are * wire removal * green screen background reconstruction The node isn't tile based (for fundamental reasons), but very fast, since it first builds a manhatten distance map and after that performs color convolution only on the edges. That's something, one should probably add also to the dilate node (in step mode) to make it perform a lot better for dilate iterations greater than 3. It will bring it's computing time from O(n^3) down to O(n^2). Take a look here for the details: http://ostermiller.org/dilate_and_erode.html )
131 lines
3.6 KiB
Python
131 lines
3.6 KiB
Python
#!/usr/bin/python
|
|
Import ('env')
|
|
import os
|
|
|
|
sources = env.Glob('intern/*.c')
|
|
sources.remove('intern' + os.sep + 'mask_rasterize.c')
|
|
sources.remove('intern' + os.sep + 'mask.c')
|
|
|
|
sources_mask = env.Glob('intern/mask*.c')
|
|
|
|
incs = '. #/intern/guardedalloc #/intern/memutil'
|
|
incs += ' ../blenlib ../blenfont ../makesdna ../windowmanager'
|
|
incs += ' ../render/extern/include #/intern/decimation/extern ../makesrna'
|
|
incs += ' ../imbuf ../ikplugin ../avi #/intern/elbeem/extern ../nodes ../modifiers'
|
|
incs += ' #/intern/iksolver/extern ../blenloader'
|
|
incs += ' #/extern/bullet2/src'
|
|
incs += ' #/intern/opennl/extern #/intern/bsp/extern'
|
|
incs += ' ../gpu #/extern/glew/include'
|
|
incs += ' ../bmesh'
|
|
incs += ' #/intern/smoke/extern'
|
|
incs += ' #/intern/mikktspace'
|
|
incs += ' #/intern/audaspace/intern'
|
|
incs += ' #/intern/ffmpeg'
|
|
incs += ' #/intern/raskter'
|
|
|
|
incs += ' ' + env['BF_OPENGL_INC']
|
|
incs += ' ' + env['BF_ZLIB_INC']
|
|
|
|
defs = [ 'GLEW_STATIC' ]
|
|
|
|
if env['WITH_BF_SMOKE']:
|
|
defs.append('WITH_SMOKE')
|
|
|
|
if env['WITH_BF_FRAMESERVER']:
|
|
defs.append('WITH_FRAMESERVER')
|
|
|
|
if env['WITH_BF_PYTHON']:
|
|
incs += ' ../python'
|
|
defs.append('WITH_PYTHON')
|
|
if env['BF_DEBUG']:
|
|
defs.append('DEBUG')
|
|
|
|
if env['WITH_BF_ELTOPO']:
|
|
incs += ' ../../../extern/eltopo'
|
|
defs.append('WITH_ELTOPO')
|
|
|
|
if env['WITH_BF_QUICKTIME']:
|
|
incs += ' ../quicktime'
|
|
|
|
if env['WITH_BF_SDL']:
|
|
incs += ' ' + env['BF_SDL_INC']
|
|
defs.append('WITH_SDL')
|
|
|
|
if env['WITH_BF_OPENEXR']:
|
|
defs.append('WITH_OPENEXR')
|
|
|
|
if env['WITH_BF_TIFF']:
|
|
defs.append('WITH_TIFF')
|
|
|
|
if env['WITH_BF_OPENJPEG']:
|
|
defs.append('WITH_OPENJPEG')
|
|
|
|
if env['WITH_BF_DDS']:
|
|
defs.append('WITH_DDS')
|
|
|
|
if env['WITH_BF_CINEON']:
|
|
defs.append('WITH_CINEON')
|
|
|
|
if env['WITH_BF_HDR']:
|
|
defs.append('WITH_HDR')
|
|
|
|
if env['WITH_BF_JACK']:
|
|
defs.append('WITH_JACK')
|
|
|
|
if env['WITH_BF_FFMPEG']:
|
|
defs.append('WITH_FFMPEG')
|
|
incs += ' ' + env['BF_FFMPEG_INC']
|
|
|
|
if env['WITH_BF_QUICKTIME']:
|
|
defs.append('WITH_QUICKTIME')
|
|
incs += ' ' + env['BF_QUICKTIME_INC']
|
|
|
|
if env['WITH_BF_BULLET']:
|
|
defs.append('USE_BULLET')
|
|
|
|
if env['OURPLATFORM'] == 'darwin':
|
|
if env['WITH_BF_OPENMP']:
|
|
defs.append('PARALLEL=1')
|
|
|
|
if env['WITH_BF_FLUID']:
|
|
defs.append('WITH_MOD_FLUID')
|
|
|
|
if env['WITH_BF_OCEANSIM']:
|
|
defs.append('WITH_OCEANSIM')
|
|
|
|
if env['WITH_BF_LZO']:
|
|
incs += ' #/extern/lzo/minilzo'
|
|
defs.append('WITH_LZO')
|
|
|
|
if env['WITH_BF_LZMA']:
|
|
incs += ' #/extern/lzma'
|
|
defs.append('WITH_LZMA')
|
|
|
|
if env['WITH_BF_GAMEENGINE']:
|
|
incs += ' #/extern/recastnavigation'
|
|
defs.append('WITH_GAMEENGINE')
|
|
else:
|
|
sources.remove('intern' + os.sep + 'navmesh_conversion.c')
|
|
|
|
if env['WITH_BF_LIBMV']:
|
|
incs += ' #/extern/libmv'
|
|
defs.append('WITH_LIBMV')
|
|
|
|
if env['WITH_BF_FFTW3']:
|
|
defs.append('FFTW3=1')
|
|
incs += ' ' + env['BF_FFTW3_INC']
|
|
|
|
if env['WITH_BF_INTERNATIONAL']:
|
|
defs.append('WITH_INTERNATIONAL')
|
|
|
|
if env['OURPLATFORM'] in ('win32-vc', 'win32-mingw', 'linuxcross', 'win64-vc', 'win64-mingw'):
|
|
incs += ' ' + env['BF_PTHREADS_INC']
|
|
|
|
|
|
if env['OURPLATFORM'] in ('win32-vc', 'win64-vc'):
|
|
env.BlenderLib ( libname = 'bf_blenkernel', sources = sources, includes = Split(incs), defines = defs, libtype=['core','player'], priority = [166,25]) #, cc_compileflags = env['CCFLAGS'].append('/WX') )
|
|
else:
|
|
env.BlenderLib ( libname = 'bf_blenkernel', sources = sources, includes = Split(incs), defines = defs, libtype=['core','player', 'player2'], priority = [166,25,0] )
|
|
|
|
env.BlenderLib ( libname = 'bf_blenkernel_mask', sources = sources_mask, includes = Split(incs), defines = defs, libtype=['core','player', 'player2'], priority = [200,25,0] )
|