Tuesday, 2 September 2014

Colour Science for Python

I'm pleased to announce that after many months of work, the first public release of Colour is available!


Stay tuned!

Tuesday, 1 July 2014

A Homemade Spectroscope!

Recently I have been working quite extensively on Colour Science related stuff, my API is coming along although it is not yet ready for prime time, I hope sometime this summer.

While surfing for informations regarding Spectrophotometers, I have seen quite a few interesting websites like Spectral Workbench and a few others describing how to build a spectroscope from a CD and a screwdriver.

I found Simon Quellen Field's website and his spectrograph tutorial and decided to do the same! While very similar to Simon's spectrograph, I incorporated some build variations that's why I will describe the steps I followed.

First here is a picture of the spectroscope I built yesterday (Essentially a PVC pipe :)):

You will need the following material list, I have sourced pretty much everything from a french hardware store:
  1. 1x 1m and 50mm diameter sewage disposal PVC tube (I would have preferred black pipes but they didn't have any and it's mainly a stlye issue.
  2. 1x 22.5 degree 50mm diameter male female PVC angled pipe coupling
  3. 2x 50mm diameter female female connecting sleeves
  4. 3x 32-52mm metal collars (I didn't wanted to glue anything)
  5. 1x Public Lab's acetate collimation slit
  6. 1x Holographic diffraction grating film sheet
  7. 1x 50x65cm 120gr sheet of black Canson paper
  8. 1x Super glue tube
Here are the tools I used:
  1. 1x Ruler
  2. 1x Metal cutting saw
  3. 1x Cutter
  4. 1x Circle cutter
  5. 1x Mechanical pencil

The goal is to create a 50cm tube with the acetate collimation slit at one end and the holographic diffraction grating film at the opposite end. They will be respectively maintained by a connecting sleeve. The black Canson paper sheet will be rolled into the tube to limit internal reflections. The angled pipe coupling is where the observer will see the spectrum right after the holographic diffraction grating film.

Step 1

Start by cutting the 1m sewage disposal PVC tube at the 50cm length and clean the cut with the cutter.

Step 2

Then cut 2x 49mm diameter circles: One into the sheet of black Canson paper and another one into the holographic diffraction grating film with the circle cutter (I actually ended up cutting more than that because of trial and error). You need to ensure that the circles diameter is a bit less than the PVC tube diameter, otherwise they will bend and distort when you sandwich them between the connecting sleeves and the PVC tube.

Step 3

Trim a hole for the acetate collimation slit into the black Canson paper circle, with enough border so that you can glue the slit onto it.

Step 4

Insert the acetate collimation slit into one of the connecting sleeves and then insert the PVC tube into the connecting sleeve so that the acetate collimation slit is sandwiched between the two. Ensure the connecting sleeve and the PVC tube are hold together by using a metallic collar. I oriented the collar screw so that it was roughly inline with the acetate collimation slit direction, it will be a good indicator for later usage.

Step 5

Cut a ± 50x20cm band of the black Canson paper and roll it inside the tube, be careful at which side of the paper is the less reflective and that it perfectly fit inside the tube without overreaching the open end because you will have to put the holographic diffraction grating film circle there.

Step 6

Same than Step 4 but with the holographic diffraction grating film circle this time. I suggest that you look through the film to determine the horizontal axis. Rotate it in front of one of your eyes until the diffraction spectrums generated are horizontal, then when you sandwich it against the PVC tube, ensure that the spectrums horizontal direction is perpendicular to the acetate collimation slit direction.

 My film was a bit dirty and filled with finger prints, I cleaned it with some dish-washing liquid (Not sure if it affects the optical quality, we are not doing high precision work anyway).

Step 7

Finally, put the PVC angled pipe coupling at the holographic diffraction grating film end, ensure everything is tight with a third metallic collar. You can rotate the connecting sleeve until the generated spectrum doesn't exhibit any shearing.

Congratulations! You are done :)

The first thing I "measured" was the Sun spectrum although it was evening and I didn't managed to get a noise free image (I will reshoot it later when he decides to appear). Even with low condition the Fraunhofer lines are quite visible as you can see on the following image:

There will be certainly one or a few follow up posts so stay tuned!

Sunday, 6 April 2014

Colour - Maya Implementation


Got a break today from sIBL_GUI duties and spent some time continuing to work on Colour, which is my soon to be open sourced Colour Science Python Toolkit.

I wanted to do the following implementation in Matplotlib like I did for the various 2D plots of the toolkit until I came across this awesome post by Mark Meyer: http://www.photo-mark.com/notes/2013/mar/13/color-theory-blender/

For now I'm just plotting the colourspaces in CIE Lab, but I'm planning to do also at the very least CIE xyY.

The good thing with plotting that in Maya is that you can do pretty renders of the colourspaces volumes.

Here is sRGB with ProPhoto RGB in wireframe:

And now ACES RGB, the colourspace to rule them all, the tiny solid guy in the center is sRGB:

Stay tuned!


Friday, 4 April 2014

sIBL_GUI 4.0.8 Hot!


Like I was saying in the multiple threads I have just updated I'm both pleased and ashamed to say that sIBL_GUI 4.0.8 is out!

Pleased because I finally got time to get back on the project and ashamed because it took me so long and as result I left a lot of people with very annoying bugs.

This build is a maintenance release ironing out most of issues reported through Crittercism.

It also officially includes Jed Frechette's Blender_Cycles_Standard template.

More details about the release at HDRLabs.



Tuesday, 4 February 2014

The CamelCase of Mister __Underscore!

This one is for the nerds!

I have been a big UpperCamelCase or lowerCamelCase user since I have started writing code:
def myVeryCoolFunctionName:
In our demoscene group we were using CamelCase, Maya Mel or commands are all in lowerCamelCase, all studios I have worked in were using a variant of CamelCase. I always preferred that naming convention to the Underscore one:
def my_very_cool_function_name:
It's maybe because my brain has the habit of processing it but I find easier to read CamelCase than Underscore naming convention, there is no visual break, just a continuous flow of words dancing front of me!

Now after so many years programming I just came across a very annoying issue, it's actually not the first time but usually I lived with it. Let's say that you have a definition that converts some data to sRGB color space, you would write it this way in lowerCamelCase:
def convertDataToSrgb:
If you want to respect the naming convention you have to change the case of sRGB to Srgb. In those cases I often write the function name like that:
def convertDataTosRGB:
def convertDataToSRGB:
Neither version is sexy, although it's understandable without much problems. Now these days I'm working on a color science Python API and I faced some situations where using CamelCase can be even more confusing than the sRGB example above and even change the meaning of the definition.
I'm doing some basic colorspaces conversion like CIE XYZ to CIE xyY, etc... The problem is that in color science little y is very different from big Y ( http://dougkerr.net/Pumpkin/articles/CIE_XYZ.pdf ).

So when you write something like that:
def xyzToXyy:
Which Y are you talking about? A person with knowledge in the domain would guess that you want to convert from CIE XYZ to CIE xyY colorspace.

You could write it this way to help but it's not visually elegant:
def XYZToxyY:
Underscore naming convention really shine here and makes this beautifully unambiguous and clear:
def XYZ_to_xyY:
If you have any thoughts on this, I would be keen on hearing them of course!



Monday, 27 January 2014


It has been a while without any updates: I have been busy working on a business project that is kind of stalled right now, so I'm trying to get back on some personal work.

Everybody seem to be doing slick and sharp robots, thought I would do a fatty organic hippopotamus, I don't have any animals in my Portfolio, it was a good exercise :)


Thursday, 2 May 2013

Gamma Prime + Oculus Rift!

I'm working on Beta Prime giving him a body, although his name has changed to Gamma because of the storyline evolution.

Now for the real fun: An early wip in the UDK with the Oculus Rift, really something fantastic and unique to experience! I strongly suggest re-watching the video through the HMD though :)

 And some ZBrush screenshots, still rough but gives a direction on where I'm heading!