NoUserOrg

Reto Spoerri : Game Design : Zürich

ProgrammingCodeSnippletsCombine2NormalmapsInto1

Filed in: Resources.ProgrammingCodeSnippletsCombine2NormalmapsInto1 · Modified on : Fri, 31 Jul 09

import sys

from pandac.PandaModules import *

if len(sys.argv) < 4:
  print "usage: %s image1.jpg image2.jpg output.jpg" % sys.argv[0]
  sys.exit()

imgName1 = sys.argv[1]
img1 = PNMImage()
img1.read(Filename(imgName1))
img1SizeX = img1.getXSize()
img1SizeY = img1.getYSize()

imgName2 = sys.argv[2]
img2 = PNMImage()
img2.read(Filename(imgName2))
img2SizeX = img2.getXSize()
img2SizeY = img2.getYSize()

if not ((img1SizeX == img2SizeX) and (img1SizeY == img2SizeY)):
  print "Images not of equal pixel size"
  sys.exit()

img3 = PNMImage(img1SizeX, img1SizeY)

for x in img1SizeX:
  for y in img1SizeY:
    r1 = img1.getRedVal(x,y)
    g1 = img1.getGreenVal(x,y)
    b1 = img1.getBlueVal(x,y)
    a1 = img1.getAlphaVal(x,y)

    r2 = img2.getRedVal(x,y)
    g2 = img2.getGreenVal(x,y)
    b2 = img2.getBlueVal(x,y)
    a2 = img2.getAlphaVal(x,y)

    r3 = (r1-128) + (r2-128) + 128
    g3 = (g1-128) + (g2-128) + 128
    b3 =  b1 - (256-b2)
    a3 = int( (a1+a2) / 2.0 )

    img3.setRedVal(x,y,r3)
    img3.setGreenVal(x,y,g3)
    img3.setBlueVal(x,y,b3)
    img3.setAlphaVal(x,y,a3)

img3.write(sys.argv[3])