-
Notifications
You must be signed in to change notification settings - Fork 28
/
conversions.py
61 lines (48 loc) · 4.04 KB
/
conversions.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
'''
Copyright (C) 2020-2023 Orange Turbine
https://orangeturbine.com
This file is part of Extra Lights, created by Jonathan Lampel.
All code distributed with this add-on is open source as described below.
Extra Lights is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 3
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, see <https://www.gnu.org/licenses/>.
'''
import bpy
#from colour.temperature import ohno2013
def linear(i):
if i <= 0.04045 :
x = i * (1.0 / 12.92)
else:
x = pow( (i + 0.055) * (1.0 / (1 + 0.055)), 2.4)
return x
def kelvin(kelvin):
kelvin_table = {
# Thanks to Andreas Siess: https://andi-siess.de/rgb-to-color-temperature/
1000: [255, 56, 0], 1100: [255, 71, 0], 1200: [255, 83, 0], 1300: [255, 93, 0], 1400: [255, 101, 0], 1500: [255, 109, 0], 1600: [255, 115, 0], 1700: [255, 121, 0], 1800: [255, 126, 0], 1900: [255, 131, 0],
2000: [255, 138, 18], 2100: [255, 142, 33], 2200: [255, 147, 44], 2300: [255, 152, 54], 2400: [255, 157, 63], 2500: [255, 161, 72], 2600: [255, 165, 79], 2700: [255, 169, 87], 2800: [255, 173, 94], 2900: [255, 177, 101],
3000: [255, 180, 107], 3100: [255, 184, 114], 3200: [255, 187, 120], 3300: [255, 190, 126], 3400: [255, 193, 132], 3500: [255, 196, 137], 3600: [255, 199, 143], 3700: [255, 201, 148], 3800: [255, 204, 153], 3900: [255, 206, 159],
4000: [255, 209, 163], 4100: [255, 211, 168], 4200: [255, 213, 173], 4300: [255, 215, 177], 4400: [255, 217, 182], 4500: [255, 219, 186], 4600: [255, 221, 190], 4700: [255, 223, 194], 4800: [255, 225, 198], 4900: [255, 227, 202],
5000: [255, 228, 206], 5100: [255, 230, 210], 5200: [255, 232, 213], 5300: [255, 233, 217], 5400: [255, 235, 220], 5500: [255, 236, 224], 5600: [255, 238, 227], 5700: [255, 239, 230], 5800: [255, 240, 233], 5900: [255, 242, 236],
6000: [255, 243, 239], 6100: [255, 244, 242], 6200: [255, 245, 245], 6300: [255, 246, 247], 6400: [255, 248, 251], 6500: [255, 249, 253], 6600: [254, 249, 255], 6700: [252, 247, 255], 6800: [249, 246, 255], 6900: [247, 245, 255],
7000: [245, 243, 255], 7100: [243, 242, 255], 7200: [240, 241, 255], 7300: [239, 240, 255], 7400: [237, 239, 255], 7500: [235, 238, 255], 7600: [233, 237, 255], 7700: [231, 236, 255], 7800: [230, 235, 255], 7900: [228, 234, 255],
8000: [227, 233, 255], 8100: [225, 232, 255], 8200: [224, 231, 255], 8300: [222, 230, 255], 8400: [221, 230, 255], 8500: [220, 229, 255], 8600: [218, 229, 255], 8700: [217, 227, 255], 8800: [216, 227, 255], 8900: [215, 226, 255],
9000: [214, 225, 255], 9100: [212, 225, 255], 9200: [211, 224, 255], 9300: [210, 223, 255], 9400: [209, 223, 255], 9500: [208, 222, 255], 9600: [207, 221, 255], 9700: [207, 221, 255], 9800: [206, 220, 255], 9900: [205, 220, 255],
10000: [207, 218, 255], 10100: [207, 218, 255], 10200: [206, 217, 255], 10300: [205, 217, 255], 10400: [204, 216, 255], 10500: [204, 216, 255], 10600: [203, 215, 255], 10700: [202, 215, 255], 10800: [202, 214, 255], 10900: [201, 214, 255],
11000: [200, 213, 255], 11100: [200, 213, 255], 11200: [199, 212, 255], 11300: [198, 212, 255], 11400: [198, 212, 255], 11500: [197, 211, 255], 11600: [197, 211, 255], 11700: [197, 210, 255], 11800: [196, 210, 255], 11900: [195, 210, 255],
12000: [195, 209, 255]
}
rgb = kelvin_table[round(kelvin, -2)]
color = [linear(rgb[0]/255), linear(rgb[1]/255), linear(rgb[2]/255)]
# implement ohno2013 CCT to RGB here
return color
def lumens(lumens, rgb):
power = lumens / ( (rgb[0] * 145.256) + (rgb[1] * 488.449) + (rgb[2] * 49.2955) )
return power