gaugo87 / PIXEstL

A program for creating color lithophanies and pixel images
MIT License
55 stars 10 forks source link

Filament profile #1

Closed aaronnabil closed 1 year ago

aaronnabil commented 1 year ago

I think you will be better served by a different filament model which can eliminate the need for measuring different thickness. You can think of filament as having 2 components, an absorptive/scattering component and a coloring power component. The absorptive component is how much neutral light gets through, so a 1mm slice might be 90%. Then a 2mm slice is .9x.9=.81, you can calculate any thickness this way. The other is the "coloring power", there are several ways to think of it, but one way that can be combined with the scattering is by realizing that, for example, the yellow "power" of a filament isn't it's yellow reflectivity, it's the ability to absorb blue light. So yellow is actually "minus blue" and you can also give it a loss like the 90% example above, a 2mm slice has 19% yellow "power". Both of the numbers can be combined into, for example, 3 (CMY) or 4 (CMYK) channels that can produce pretty good results. The best results would be sampling every 10nm and measuring the transmission at each wavelength.

gaugo87 commented 1 year ago

Hi aaronnabil

I think you will be better served by a different filament model which can eliminate the need for measuring different thickness. You can think of filament as having 2 components, an absorptive/scattering component and a coloring power component.

Indeed, that was my initial idea to automatically calculate the different thicknesses. I had come to the same conclusion as you regarding the 2 components. This is why my palette is based on the HSL model. The L (Lightness) is in a way the light-absorbing component (in terms of brightness), and the S (Saturation) component closely resembles your "coloring power" component.

I therefore initially tried to calculate them automatically. My original wish was to only have to input the official color from the manufacturer and to automatically calculate all the variations in layer. However, I couldn't find a theoretical model that matched my practical tests. Even though it somewhat verified on the L component, the S component was always temperamental. So, I gave up for a while. But I haven't lost hope of succeeding one day. It's just that for now, I have other challenges that motivate me.

the yellow "power" of a filament isn't it's yellow reflectivity, it's the ability to absorb blue light. So yellow is actually "minus blue" and you can also give it a loss like the 90% example above, a 2mm slice has 19% yellow "power".

Your explanation is interesting. I hadn't thought of it that way. This idea could even be used to calculate the final colors ? I mean the final color that will result from the addition of layers of cyan and magenta, for example. Currently, I just do a straightforward sum of the CMY values. I stuck with this result because the theory verified quite well in practice. Of course, my theoretically calculated color doesn't match 100% with the practical color, but the differences between theory and practice seemed stable and consistent.

Perhaps your system will allow for a closer approximation to the final result.

Both of the numbers can be combined into, for example, 3 (CMY) or 4 (CMYK) channels that can produce pretty good results. The best results would be sampling every 10nm and measuring the transmission at each wavelength.

I must admit you lost me there. It's too technical for me. Initially, I didn't know anything about images and color calculations. I started getting interested in it a month ago with this project. But your technique does seem really amazing.

In any case, I thank you immensely for your feedback.