Blog Content

Home – Blog Content

Part 3b (Practical): Python Imaging Library (Pillow)

We now need to write out our sRGB values to an image. We installed Pillow in the introduction, so import that now.

from PIL import Image

Below our sRGB conversion loop in the Generate() function

img = Image.new('RGB', (21,5), color = 'black')
pixels = img.load()
img.save('skin_LUT.png')
pixel_index = 0
for m in range(7):
    for x in range(3): # 0 - 32
        for y in range(5): # 0 - 32
            xCoord = x + (m * 3)
            yCoord = y
            pixels[xCoord, yCoord] = pixelsRGB[pixel_index]
            pixel_index = pixel_index + 1
img.save('skin_LUT.png')
return pixelsRGB

If you now run the code you should get this PNG output – its small, so I’ve zoomed in:

We obviously want more fidelity. We have two options: increase the samples (which is an exponential performance cost), or just use Photoshop to resize it. We’ll do the latter as its much faster, as gives us enough gradation.

To do this, we need to select each 1/3 of the LUT, which is each melanin blend and resize it using a “bicubic smoother” filter to smooth the gradations out, like so:

1. Select the first 1/3:

2. Copy it to a new image and resize

3. Repeat for the other two LUT sections, then composite them into a new 192*46 pixel image

Great! You have got yourself a look-up texture based on physical spectral absorption values!

For reference, here’s the complete project so far:

Next we’ll be getting this into Unreal Engine 4.

Leave a Reply

Most Recent Posts

  • All Post
  • Articles
  • Quick Tips
  • Tangents
  • Tutorials
  • Uncategorized

Services

FAQ's

Privacy Policy

Terms & Condition

Team

Contact Us

Company

About Us

Services

Latest News

© 2023 half4.xyz ltd. Created with Royal Elementor Addons