#! /usr/bin/env python from gimpfu import * import commands import glob import os import string import subprocess def getPrevPath(): path = '"C:\Program Files\Insane Bump' return path def getImgPath(): path = '' return path def getFilename(filename, suffix): filename = filename.replace(".", suffix + ".") return filename def saveLastOperation(image, filename): layer = pdb.gimp_image_get_active_layer(image) pdb.gimp_file_save(image, layer, filename, filename) def specularEdge(image, file_name, defin): drawable = pdb.gimp_image_get_active_layer(image) newlayer = pdb.gimp_layer_copy (drawable, 1) pdb.gimp_image_add_layer(image, newlayer, -1) pdb.gimp_image_set_active_layer(image, newlayer) pdb.gimp_desaturate(newlayer) drawable = pdb.gimp_image_get_active_layer(image) newlayer = pdb.gimp_layer_copy (drawable, 1) pdb.gimp_image_add_layer(image, newlayer, -1) pdb.gimp_image_set_active_layer(image, newlayer) pdb.gimp_desaturate(newlayer) pdb.plug_in_dog(image, newlayer, 1.0, 8.0, 1, 0) #pdb.plug_in_vinvert(image,newlayer) pdb.gimp_layer_set_mode(newlayer, 7) pdb.gimp_image_merge_down(image, newlayer, 0) drawable = pdb.gimp_image_get_active_layer(image) pdb.gimp_brightness_contrast(drawable, 0, 64) pdb.gimp_levels(drawable, 0, defin, 255, 1, 0, 255) pdb.gimp_file_save(image, drawable, getFilename(file_name, "_s"), getFilename(file_name, "_s")) pdb.gimp_edit_clear(drawable) def specularSmooth(image, file_name, defin): drawable = pdb.gimp_image_get_active_layer(image) newlayer = pdb.gimp_layer_copy (drawable, 1) pdb.gimp_image_add_layer(image, newlayer, -1) pdb.gimp_image_set_active_layer(image, newlayer) pdb.gimp_desaturate(newlayer) drawable = pdb.gimp_image_get_active_layer(image) newlayer = pdb.gimp_layer_copy (drawable, 1) pdb.gimp_image_add_layer(image, newlayer, -1) pdb.gimp_image_set_active_layer(image, newlayer) pdb.gimp_desaturate(newlayer) pdb.plug_in_dog(image, newlayer, 8.0, 1.0, 1, 0) #pdb.plug_in_vinvert(image,newlayer) pdb.gimp_layer_set_mode(newlayer, 7) pdb.gimp_image_merge_down(image, newlayer, 0) drawable = pdb.gimp_image_get_active_layer(image) pdb.gimp_brightness_contrast(drawable, 0, 64) pdb.gimp_levels(drawable, 0, defin, 255, 1, 0, 255) pdb.gimp_image_raise_layer_to_top(image, drawable) pdb.gimp_file_save(image, drawable, getFilename(file_name, "_s"), getFilename(file_name, "_s")) pdb.gimp_edit_clear(drawable) def removeShading(image): drawable = pdb.gimp_image_get_active_layer(image) newlayer = pdb.gimp_layer_copy (drawable, 1) pdb.gimp_image_add_layer(image, newlayer, -1) pdb.gimp_image_set_active_layer(image, newlayer) pdb.plug_in_gauss(image, newlayer, 20.0, 20.0, 0) pdb.plug_in_vinvert(image, newlayer) pdb.gimp_layer_set_mode(newlayer, 5) pdb.gimp_image_merge_visible_layers(image, 0) def blur(image, diffuse, width, height, passes, normal): desatdiffuse = pdb.gimp_layer_copy (diffuse, 1) pdb.gimp_image_add_layer(image, desatdiffuse, -1) pdb.gimp_image_set_active_layer(image, desatdiffuse) if normal == 0: pdb.gimp_desaturate(desatdiffuse) for i in range(passes): drawable = pdb.gimp_image_get_active_layer(image) newlayer = pdb.gimp_layer_copy (drawable, 1) pdb.gimp_image_add_layer(image, newlayer, -1) pdb.gimp_image_set_active_layer(image, newlayer) pdb.plug_in_gauss(image, newlayer, width * 0.05, height * 0.05, 0) pdb.gimp_layer_set_mode(newlayer, 5) pdb.gimp_image_merge_down(image, newlayer, 0) drawable = pdb.gimp_image_get_active_layer(image) if normal == 1: pdb.plug_in_normalmap(image, drawable, 0, 0.0, 1.0, 0, 0, 0, 8, 0, 0, 0, 0, 0.0, drawable) pdb.gimp_layer_set_mode(drawable, 5) pdb.gimp_image_merge_down(image, drawable, 0) def sharpen(image, diffuse, depth, filterSize, strength): sharpnormal = pdb.gimp_layer_copy (diffuse, 1) pdb.gimp_image_add_layer(image, sharpnormal, -1) pdb.gimp_image_set_active_layer(image, sharpnormal) pdb.plug_in_normalmap(image, sharpnormal, 0, 0.0, depth, filterSize, 0, 0, 0, 0, 0, 1, 0, 0.0, sharpnormal) #pdb.gimp_levels_stretch(sharpnormal) pdb.gimp_image_set_active_layer(image, sharpnormal) pdb.gimp_layer_set_mode(sharpnormal, 5) #pdb.gimp_file_save(image, sharpnormal, getFilename(file_name,"_hn"), getFilename(file_name,"_hn")) pdb.gimp_layer_set_opacity(sharpnormal, strength) pdb.gimp_image_raise_layer_to_top(image, sharpnormal) def shapeRecognise(image, normalmap, strength): blurnormal = pdb.gimp_layer_copy (normalmap, 1) pdb.gimp_image_add_layer(image, blurnormal, -1) pdb.gimp_image_set_active_layer(image, blurnormal) pdb.plug_in_gauss(image, blurnormal, 20, 20, 0) pdb.plug_in_colors_channel_mixer(image, blurnormal, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, -200.0) pdb.plug_in_normalmap(image, blurnormal, 0, 0.0, 1.0, 0, 0, 0, 8, 0, 0, 0, 0, 0.0, blurnormal) pdb.plug_in_colors_channel_mixer(image, blurnormal, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, -200.0) pdb.gimp_layer_set_mode(blurnormal, 5) pdb.gimp_layer_set_opacity(blurnormal, strength) def analyze(layer): highlights = pdb.gimp_histogram(layer, 0, 179, 256) midtones = pdb.gimp_histogram(layer, 0, 77, 178) shadows = pdb.gimp_histogram(layer, 0, 0, 76) f = open("/tmp/aidata.txt", "w") f.write(str(int(shadows[0])) + " " + str(int(shadows[1])) + " " + str(int(shadows[5] * 100)) + " ") f.write(str(int(midtones[0])) + " " + str(int(midtones[1])) + " " + str(int(midtones[5] * 100)) + " ") f.write(str(int(highlights[0])) + " " + str(int(highlights[1])) + " " + str(int(highlights[5] * 100)) + " ") def doBaseMap(image, diffuse, Depth, passes): for i in range(passes): newlayer = pdb.gimp_layer_copy (diffuse, 1) pdb.gimp_image_add_layer(image, newlayer, -1) pdb.gimp_image_set_active_layer(image, newlayer) ok = float(i + 1) * (i + 1) pdb.plug_in_gauss(image, newlayer, ok * 3, ok * 3, 0) pdb.plug_in_normalmap(image, newlayer, 5, 0.0, Depth * ok, 0, 0, 0, 0, 0, 0, 1, 0, 0.0, newlayer) if i > 0: #pdb.gimp_layer_set_opacity(newlayer,50-(i*10)) pdb.gimp_layer_set_mode(newlayer, 5) pdb.gimp_image_merge_down(image, newlayer, 0) newlayer = pdb.gimp_image_get_active_layer(image) pdb.plug_in_normalmap(image, newlayer, 0, 0.0, 1.0, 0, 0, 0, 8, 0, 0, 0, 0, 0.0, newlayer) drawable = pdb.gimp_image_get_active_layer(image) #newlayer=pdb.gimp_layer_copy (drawable, 1) #pdb.gimp_image_add_layer(image,newlayer,-1) #pdb.gimp_image_set_active_layer(image,newlayer) #pdb.gimp_levels_stretch(newlayer) #pdb.gimp_layer_set_opacity(newlayer,100) #pdb.gimp_layer_set_mode(newlayer,5) #pdb.gimp_image_merge_down(image,newlayer,0) def batchnr(img, layer, RemoveLighting, Reszie, Tile, newWidth, EdgeSpecular, defSpecular, Depth, LargeDetails, MediumDetails, SmallDetails, ShapeRecog, smoothstep, invh, ao, prev): file_name = pdb.gimp_image_get_filename(img) image = img size = pdb.gimp_image_width(image) if(Reszie): #upScale(getImgPath(),file_name,newWidth,size) hiresimg = pdb.gimp_image_resize(image, newWidth * size, newWidth * size, 0, 0) #hiresimg = pdb.gimp_file_load( getFilename(file_name,"_hd"), file_name) drawable = pdb.gimp_image_get_active_layer(hiresimg) noiselayer = pdb.gimp_layer_copy (drawable, 1) pdb.gimp_image_add_layer(hiresimg, noiselayer, -1) pdb.gimp_image_set_active_layer(hiresimg, noiselayer) pdb.plug_in_rgb_noise(hiresimg, noiselayer, 1, 1, 0.20, 0.20, 0.20, 0) #pdb.plug_in_blur(hiresimg,noiselayer) pdb.gimp_layer_set_mode(noiselayer, 14) pdb.gimp_image_merge_down(hiresimg, noiselayer, 0) image = hiresimg drawable = pdb.gimp_image_get_active_layer(image) ###########################analyze(drawable) if(RemoveLighting): removeShading(image) diffuse = pdb.gimp_image_get_active_layer(image) pdb.gimp_levels_stretch(diffuse) if(Tile): pdb.plug_in_make_seamless(image, diffuse) pdb.gimp_file_save(image, diffuse, getFilename(file_name, "_d"), getFilename(file_name, "_d")) #drawable = pdb.gimp_image_get_active_layer(image) #pdb.gimp_levels(drawable,0,64,128,1,0,255) wsize = pdb.gimp_image_width(image) hsize = pdb.gimp_image_width(image) blur(image, diffuse, wsize, hsize, LargeDetails, 0) normalmap = pdb.gimp_image_get_active_layer(image) if(smoothstep): pdb.plug_in_blur(image, normalmap) if(invh): pdb.plug_in_vinvert(image, normalmap) pdb.gimp_file_save(image, normalmap, getFilename(file_name, "_h"), getFilename(file_name, "_h")) #lfnormal=pdb.gimp_layer_copy (diffuse, 1) #pdb.gimp_image_add_layer(image,lfnormal,-1) #pdb.gimp_image_raise_layer_to_top(image,lfnormal) #pdb.plug_in_normalmap(image, lfnormal,8,0.0,Depth,0,0,0,0,0,0,0,0,0.0,normalmap) #blur(image,lfnormal,LargeDetails,1) #normalmap = pdb.gimp_image_get_active_layer(image) doBaseMap(image, diffuse, Depth, LargeDetails) normalmap = pdb.gimp_image_get_active_layer(image) pdb.gimp_file_save(image, normalmap, getFilename(file_name, "_ln"), getFilename(file_name, "_ln")) shapeRecognise(image, normalmap, ShapeRecog) if(smoothstep): normalmap = pdb.gimp_image_get_active_layer(image) pdb.plug_in_blur(image, normalmap) saveLastOperation(image, getFilename(file_name, "_sn")) sharpen(image, diffuse, Depth, 0, SmallDetails) normalmap = pdb.gimp_image_get_active_layer(image) pdb.plug_in_sharpen(image, normalmap, 20) saveLastOperation(image, getFilename(file_name, "_hn")) sharpen(image, diffuse, Depth, 6, MediumDetails) normalmap = pdb.gimp_image_get_active_layer(image) pdb.plug_in_blur(image, normalmap) saveLastOperation(image, getFilename(file_name, "_mn")) pdb.gimp_drawable_set_visible(diffuse, 0) pdb.gimp_image_merge_visible_layers(image, 0) drawable = pdb.gimp_image_get_active_layer(image) pdb.plug_in_normalmap(image, drawable, 0, 0.0, 1.0, 0, 0, 0, 8, 0, 0, 0, 0, 0.0, drawable) pdb.gimp_file_save(image, drawable, getFilename(file_name, "_n"), getFilename(file_name, "_n")) pdb.plug_in_colors_channel_mixer(image, drawable, 0.0, -200.0, 0.0, 0.0, 0.0, -200.0, 0.0, 0.0, 0.0, 1.0) pdb.gimp_desaturate(drawable) pdb.gimp_levels_stretch(drawable) pdb.gimp_file_save(image, drawable, getFilename(file_name, "_a"), getFilename(file_name, "_a")) pdb.gimp_drawable_set_visible(diffuse, 1) pdb.gimp_image_set_active_layer(image, diffuse) if(EdgeSpecular): specularEdge(image, file_name, defSpecular) if EdgeSpecular == False: specularSmooth(image, file_name, defSpecular) register( "InsaneBump", "", "", "", "", "", "/Filters/Map/Insane...", "", [ (PF_BOOL, "RemoveLighting", "Remove Lighting", FALSE), (PF_BOOL, "Reszie", "Upscale(HD)", FALSE), (PF_BOOL, "Tile", "Tile", TRUE), (PF_INT32, "newWidth", "New Width(Integer Times larger)", 2), (PF_BOOL, "EdgeSpecular", "Edge Enhaning Specular", TRUE), (PF_INT32, "defSpecular", "Specular Definition(0-255)", 64), (PF_FLOAT, "Depth", "Depth(+/-)", 20), (PF_INT32, "LargeDetails", "Large Detail Size", 3), (PF_INT32, "MediumDetails", "Medium Detail Intensity(%)", 50), (PF_INT32, "SmallDetails", "Small Detail Intensity(%)", 50), (PF_INT32, "ShapeRecog", "Shape Recognition(%)", 50), (PF_BOOL, "smoothstep", "Smooth Step", TRUE), (PF_BOOL, "invh", "Invert Height Map", False), (PF_INT32, "ao", "ao", 50), (PF_BOOL, "prev", "Preview", TRUE) ], [], batchnr ) main()