[{"data":1,"prerenderedAt":495},["ShallowReactive",2],{"project-49170165":3},{"id":4,"name":5,"line":6,"line_source":7,"title":8,"url":9,"domain":10,"maker":11,"posted_at":12,"year":13,"points":14,"comments":15,"rank_in_year":16,"shown_in_year":17,"top":18,"tier":19,"category":20,"subcategory":21,"format":22,"keywords":23,"reception":29,"sentiment":30,"stance_mix":31,"scored_comments":35,"aspects":36,"strip":45,"post_text":47,"what":48,"said":72,"maker_in_thread":177,"shape":187,"grid":190,"attempts":456,"same_week":457,"maker_shows":18,"maker_hidden":487,"reader_version":488,"card":489},"49170165","Inclusive Color Space","Simple algorithm and color space to generate diverse skin tones","title","Show HN: Simple algorithm and color space to generate diverse skin tones","https:\u002F\u002Ftoneyalexander.github.io\u002Finclusive-color-space\u002F","toneyalexander.github.io","automatoney",1785856582,2026,627,99,31,4366,1,"legend","creative","skin tone color generation","web_app",[24,25,26,27,28],"skin tone","color space","color picker","procedural generation","skin color","mixed",0.177,{"positive":32,"neutral":32,"mixed":33,"critical":34},15,2,9,41,{"idea":37,"execution":39,"design":41,"docs":44},{"positive":38,"critical":33},6,{"positive":40,"critical":33},0,{"positive":42,"critical":43},3,4,{"positive":18,"critical":18},[46,40,40,40,40,40,40,40,40,42,42,40,46,40,40,42,46,42,46,18,42,42,18,42,40,46,42,46,46,46,42,33,40,18,46,46,46,42,40,18],5,"Hello HN!\n\nI found that picking out plausible but diverse skin tones for my digital art and game development projects was kind of difficult, and I got curious about if there was a way to define a color space that made it easy.\n\nI've built a color picker and procedural generation algorithm based on the space as well as a bunch of other fun js features and demos throughout the page that use the equations. If you find it interesting, I have lots of explanations of how I built it and what properties the space has.\n\nThe methodology might be a bit shaky, but hopefully the result is as helpful for ot",{"problem":49,"audience":55,"pricing":59,"motivation":60,"time_to_build":59,"stack":64,"openness":69,"stage":70,"team_size":71},{"value":50,"source":51,"evidence":52},"Picking plausible, diverse skin tones for digital art and games is difficult","maker",[53],{"id":54},"post",{"value":56,"source":51,"evidence":57},"Digital artists and game developers",[58],{"id":54},null,{"value":61,"source":51,"evidence":62},"Wanted an easy way to pick diverse skin tones for their own art and game projects",[63],{"id":54},[65],{"value":66,"source":51,"evidence":67},"JavaScript",[68],{"id":54},"open_source","launched","unknown",{"praise":73,"objections":101,"requests":139,"questions":153,"alternatives":162},[74,90],{"value":75,"source":76,"evidence":77},"Beautiful, useful work with interactive demos","commenter",[78,82,86],{"id":79,"by":80,"text":81},"49170830","vermarish","This is beautiful work! First, I thought this would involve using PCA to go from 3D to 2D, which would result in an easier selector to use, but at the expense of representing…",{"id":83,"by":84,"text":85},"49170953","hluska","This is excellent work! You’ve got a 49 year old and a 10 year old equally into it. That’s impressive - nice work.",{"id":87,"by":88,"text":89},"49171156","PullJosh","I love this! Such a beautiful use of some real nerdy math to benefit humans in a way non-nerds would appreciate.",{"value":91,"source":76,"evidence":92},"Useful picker UI and visual R² sliders",[93,97],{"id":94,"by":95,"text":96},"49171538","xp84","This part ( https:\u002F\u002Ftoneyalexander.github.io\u002Finclusive-color-space\u002F#picker-ui ) is especially cool. Would love to see this 3-D picker ability in the many character designers out…",{"id":98,"by":99,"text":100},"49172486","zetanor","Setting R² to various large values like 50, 500 and 5000 then moving the slider around seems to give a decent and simple visual representation of what's happening.",[102,110,121,132],{"value":103,"source":76,"evidence":104},"Manual labeling process may encode bias",[105,106],{"id":79,"by":80,"text":81},{"id":107,"by":108,"text":109},"49178855","zestyping","Could you explain the first step, \"Manually Labeling Colors ? What did you manually label? I didn't quite follow. From the way the article is written, it sounds like you…",{"value":111,"source":76,"evidence":112},"Does not account for lighting conditions",[113,117],{"id":114,"by":115,"text":116},"49173374","stu2b50","I think it’s worthwhile to note this is under a light with a color temperature similar to sunlight. When you’re actually painting, skin can really be any color. Blue is a…",{"id":118,"by":119,"text":120},"49174805","rebuilder","I read the “limitations” section’s list of things that affect perceived skin tone and it didn’t mention lighting! This is pretty important as the available light determines the…",{"value":122,"source":76,"evidence":123},"Underrepresents pale skin and some skin tones",[124,128],{"id":125,"by":126,"text":127},"49170799","383toast","Seems to underrepresent pale skin tone variety",{"id":129,"by":130,"text":131},"49171345","dofm","Interesting though that the 1.5 setting (at least on my older iPhone) doesn’t really ever seem to cover the range of skin tones of indigenous Australians (“aboriginal” and Torres…",{"value":133,"source":76,"evidence":134},"Output lacks gamma correction",[135],{"id":136,"by":137,"text":138},"49183234","herf","This seems to do XYZ->RGB without any gamma correction. XYZ is linear, as is the transform to RGB, so we usually convert linear RGB to (gamma-encoded) sRGB at the end. The JS…",[140,147],{"value":141,"source":76,"evidence":142},"Add a license to the code",[143],{"id":144,"by":145,"text":146},"49171206","rrradical","Very neat project. Could I use this code to generate skin tones in my own project? Or more meant to just be educational\u002Finspirational? I guess I'm wondering if you've considered…",{"value":148,"source":51,"evidence":149},"More scientific labeling with multiple or expert labelers",[150],{"id":151,"by":11,"text":152},"49170900","Thank you! I call out the manual labeling bias and also that a future work improvement would be to be scientific about that labeling process (multiple labelers, expert labelers),…",[154,158],{"value":155,"source":76,"evidence":156},"How the manual labeling was done",[157],{"id":107,"by":108,"text":109},{"value":159,"source":76,"evidence":160},"Whether the code can be used in other projects",[161],{"id":144,"by":145,"text":146},[163,170],{"value":164,"source":76,"evidence":165},"Pantone Skin Tones guide",[166],{"id":167,"by":168,"text":169},"49172144","s1mon","It's always entertaining to try to understand these things from first principles. Color and skin color in particular are very complex things to measure and model. It's not just a…",{"value":171,"source":76,"evidence":172},"Pinterest visual skin tone model",[173],{"id":174,"by":175,"text":176},"49172428","ecesena","Nice. This is relatively old work (2020) but Pinterest had\u002Fhas skin tone features, for example if you're searching for cosmetic products. Worth a check if anything might be…",{"comments":178,"answered":42,"key":179},10,[180,181,184],{"id":151,"text":152},{"id":182,"text":183},"49171595","Woah I LOVE both of these! When I get a chance these are 100% getting linked from the writeup.",{"id":185,"text":186},"49170831","Yes absolutely right on - I mention much deeper in the page that in a picker UI you can use a bigger range, but that in a generation context you might want to be a bit more…",{"commenters":188,"max_depth":38,"maker_replies":178,"first_comment_mins":16,"lifespan_hours":189},71,55,[191,193,195,199,203,206,209,212,215,218,220,222,225,227,230,233,236,238,241,244,246,249,251,254,257,259,262,266,268,271,274,276,279,282,285,289,290,294,298,302,305,309,311,315,318,320,322,324,328,330,334,336,340,342,346,348,352,354,356,358,361,365,367,370,374,376,380,382,385,387,392,394,398,402,406,410,414,418,419,424,428,432,436,440,442,445,448,451,454],[79,40,46,192,80,40],"maker\u002Fpositive\u002Fidea",[151,40,40,194,11,18],"maker\u002Fneutral\u002Fidea",[196,40,40,197,198,40],"49171062","commenter\u002Fneutral\u002Fnone","dr_scully",[200,40,40,201,202,40],"49171132","other\u002Fneutral\u002Fnone","GolDDranks",[204,40,40,201,205,40],"49171542","skydhash",[207,40,40,201,208,40],"49171674","Joel_Mckay",[210,40,40,201,211,40],"49172149","iwontberude",[213,40,40,201,214,40],"49176546","itishappy",[216,40,40,201,217,40],"49173581","CITIZENDOT",[219,40,40,201,208,40],"49174134",[221,40,40,201,198,40],"49171818",[223,40,40,201,224,40],"49172445","HanClinto",[226,40,40,201,198,40],"49172651",[228,40,40,201,229,40],"49182806","numpad0",[231,40,40,201,232,40],"49171415","dTal",[234,40,40,201,235,40],"49171806","mhink",[237,40,40,201,232,40],"49172143",[239,40,40,201,240,40],"49177472","vector_spaces",[242,40,40,201,243,40],"49177814","ReactiveJelly",[245,40,40,201,198,40],"49172007",[247,40,40,197,248,40],"49191573","mdnahas",[167,18,42,250,168,40],"project\u002Fneutral\u002Fidea",[252,18,42,250,253,40],"49172416","ptmkenny",[255,18,40,201,256,40],"49172417","zild3d",[258,18,40,201,214,40],"49176668",[260,18,40,201,261,40],"49181859","tialaramex",[263,33,46,264,265,40],"49171543","project\u002Fpositive\u002Fidea","mbo",[182,33,40,267,11,18],"maker\u002Fneutral\u002Fnone",[269,42,40,201,270,40],"49173227","dahart",[272,42,40,201,273,40],"49173969","madcaptenor",[275,42,40,201,270,40],"49174701",[277,42,40,201,278,40],"49174812","adamhartenz",[280,42,40,201,281,40],"49177384","jagged-chisel",[283,42,40,201,284,40],"49174869","mryingster",[286,43,42,287,288,40],"49170746","project\u002Fmixed\u002Fexecution","andai",[185,43,40,250,11,18],[291,43,46,292,293,40],"49170985","project\u002Fpositive\u002Fdesign","compass_copium",[295,43,42,296,297,40],"49170886","project\u002Fneutral\u002Fnone","wongarsu",[299,43,42,300,301,40],"49170956","project\u002Fneutral\u002Fexecution","richiebful1",[303,43,40,201,304,40],"49172729","rsynnott",[306,46,46,307,308,40],"49170857","project\u002Fpositive\u002Fdocs","stephantul",[310,46,40,267,11,18],"49170920",[312,46,18,313,314,40],"49172074","project\u002Fcritical\u002Fidea","E-Reverance",[316,46,40,201,317,40],"49180367","benj111",[129,38,42,319,130,40],"project\u002Fmixed\u002Fidea",[321,38,40,194,11,18],"49171436",[114,323,18,313,115,40],7,[325,326,46,264,327,40],"49170601",8,"m_w_",[329,326,40,192,11,18],"49170668",[331,34,42,332,333,40],"49172920","project\u002Fneutral\u002Fdocs","Sharlin",[118,178,18,335,119,40],"project\u002Fcritical\u002Fdocs",[337,338,42,250,339,40],"49171256",11,"bellowsgulch",[341,338,40,194,11,18],"49171486",[343,344,40,201,345,40],"49170832",12,"RIMR",[347,344,40,267,11,18],"49170933",[349,350,46,192,351,40],"49171762",13,"aaroninsf",[353,350,40,267,11,18],"49171906",[107,355,42,332,108,40],14,[83,32,46,357,84,40],"maker\u002Fpositive\u002Fnone",[136,359,18,360,137,40],16,"project\u002Fcritical\u002Fexecution",[362,363,42,296,364,40],"49171556",17,"manoDev",[94,366,46,292,95,40],18,[368,366,42,250,369,40],"49172314","barbecue_sauce",[371,372,46,357,373,40],"49174041",19,"kaitlinseng",[87,375,46,264,88,40],20,[377,378,42,250,379,40],"49175741",21,"szvsw",[144,381,42,332,145,40],22,[383,381,40,384,11,18],"49171310","maker\u002Fneutral\u002Fdocs",[386,381,42,296,208,40],"49171347",[388,389,18,390,391,40],"49174882",23,"project\u002Fcritical\u002Fdesign","1-6",[174,393,42,250,175,40],24,[395,396,40,201,397,40],"49171094",25,"ptsneves",[399,400,40,201,401,40],"49175997",26,"analog31",[403,404,40,201,405,40],"49174548",27,"mkesper",[407,408,18,360,409,40],"49171411",28,"efitz",[411,412,42,250,413,40],"49177474",29,"kazinator",[415,416,46,264,417,40],"49174790",30,"peepsick",[98,16,46,292,99,40],[420,421,46,422,423,40],"49170758",32,"project\u002Fpositive\u002Fnone","Abh1Works",[425,426,42,296,427,40],"49171755",33,"ralusek",[429,430,40,201,431,40],"49173488",34,"JacobAsmuth",[433,434,46,422,435,40],"49203632",35,"alexpriyad",[437,438,46,422,439,40],"49172294",36,"uhdozo",[125,441,18,390,126,40],37,[443,441,40,197,444,40],"49171126","LocalH",[446,441,40,197,447,40],"49174632","BHSPitMonkey",[449,441,18,390,450,40],"49177886","lstodd",[452,441,40,197,453,40],"49179472","sph",[455,441,18,390,229,40],"49181317",[],[458,463,467,472,477,482],{"id":459,"name":460,"points":461,"category":462},"49124218","Elevators",1680,"learning_science",{"id":464,"name":465,"points":466,"category":20},"49149966","Isopolis",350,{"id":468,"name":469,"points":470,"category":471},"49140396","Cycloidal Gearbox",338,"hardware",{"id":473,"name":474,"points":475,"category":476},"49158333","Swiftlet",312,"ai",{"id":478,"name":479,"points":480,"category":481},"49145937","Kakehashi",255,"infrastructure",{"id":483,"name":484,"points":485,"category":486},"49119425","Gander",211,"dev_tools",false,"v2",{"id":490,"name":5,"line":6,"ai":487,"cat":20,"year":13,"points":14,"comments":15,"rec":29,"s":491,"top":18,"kw":492,"maker":11,"domain":10,"tier":19,"attempts":40,"strip":493,"url":9,"mix":494,"praise":75,"objection":103,"sub":21},49170165,0.18,[24,25,26,27,28],"5000000003305003535133130535553201555301",[32,32,33,34],1794036707082]