frontpage.
newsnewestaskshowjobs

Open Source @Github

fp.

Open in hackernews

Show HN: Simple algorithm and color space to generate diverse skin tones

https://toneyalexander.github.io/inclusive-color-space/
49•automatoney•53m ago
Hello HN!

I 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.

I'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.

The methodology might be a bit shaky, but hopefully the result is as helpful for others as I have found it! There's lots of room for improvements (see the Future Work section), but I'm really happy with how it turned out.

Comments

m_w_•23m ago
This is super cool! I have always loved projects that try to categorize color space. Usually my work has gone in the other direction - isGray, isCloseToWhite, isPastel - but it's the same insofar as it's defining shapes like your matplot visual.

Wish I had this on hand like this three or four years ago when I was working on VR avatar software - we had hard-coded skin tone options at the time - would have been a cool addition!

automatoney•16m ago
In sharing this around I've found more people than I thought who've done things to semantically chop up the color space - definitely a more interesting area than I first thought of when working on my narrow use case. Feels like it'd be fun to play with something that has a whole bunch of different regions of color space labeled - like "here's where IsPastel overlaps with IsGreen".

But absolutely the hope is that this is a tool that stays accessible to people for whatever they're building and everyone can slow down on reinventing the wheel here for every character creator/digital art application.

moralestapia•11m ago
Interesting.

It might be a bit biased though, as there's much more variation on fairer skin tones than on dark ones (there's only one that looks like the colloquial "black").

This contradicts all research and social media from the past decade.

Tossrock•6m ago
...Did you read the article, or use the picker? It's a continuous (up to the limits of RGB quantization) space which includes thousands upon thousands of shades of black. The selected tones at the top of the article are random and change continuously.
andai•11m ago
Nice. Most of these colors look right to me, but I'm also seeing green, blue and purple? If you're curating colors from the space manually then it's not a problem.

"Only realistic colors" would be a different problem. And I'm not sure if there's a way to solve that problem without excluding some real colors too.

(Maybe if the colour selector was a different shape? I don't know much about color spaces.)

automatoney•5m ago
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 selective. I go into it a bit more when I explain what R^2 is.

"not sure if there's a way to solve that problem without excluding some real colors too" - 100% right on that too. A big part of this work was to define a way to tweak/improve the equations in order to approach a solution to these issues - part of my hope in sharing is to get more eyes and brains thinking about this and proposing improvements!

Abh1Works•10m ago
Cool work!
383toast•7m ago
Seems to underrepresent pale skin tone variety
vermarish•5m ago
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 every person.

Then, I thought this would stop at using the U-space vectors (the ones that form the basis of the PCA image) and their corresponding ellipse to form our color space, but no, the function fitting is a very slick idea, even if it was executed by hand.

Lastly, I love the presentation of sampling from different r values. Whether you sample from a fixed r value or a range of r values, I bet this has great applications in game design or animation.

I still don't quite get the manual data labeling process at the beginning? It seems like it would encode some bias, but the consistency of the first point cloud and the results certainly speak for themselves.

RIMR•5m ago
For anyone confused, turn off your dark mode extension. :)

FARA 7649 Foreign Influence Audit

https://www.bitchute.com/video/IRfICXureUeW/
1•untiledsource•1m ago•0 comments

Performing live migrations of VMs at scale

https://www.sailresearch.com/blog/performing-live-migrations-of-massive-vms-at-scale
1•blintz•2m ago•0 comments

The applause that disrupted nothing – yet still led to an arrest

https://expression.fire.org/p/the-applause-that-disrupted-nothing
1•timr•2m ago•0 comments

Most countries provide between 20 and 40 paid days off

https://www.not-ship.com/not-ship-summer-vacation/
1•speckx•3m ago•0 comments

Flyte 2 is GA: durable distributed AI workflows using regular Python

https://www.union.ai/blog-post/flyte-2-is-generally-available-the-durable-open-source-ai-runtime
4•kumare3•4m ago•0 comments

How mathematicians are responding to AI

https://www.understandingai.org/p/mathematicians-are-grappling-with
2•chiwilliams•6m ago•0 comments

Mixture-of-Kittens: our open-source MoE megakernel for NVL72s

https://cursor.com/blog/mixture-of-kittens
3•mfiguiere•7m ago•0 comments

Steffen Boarding Method

https://en.wikipedia.org/wiki/Steffen_Boarding_Method
1•thunderbong•8m ago•0 comments

NPM's keyv package got compromised having 127M weekly downloads

https://safedep.io/keyv-npm-supply-chain-compromise/
2•birdculture•8m ago•1 comments

Why Netcup Isn't in the Webbynode Dataset

https://webbynode.com/articles/why-netcup-isnt-in-the-webbynode-dataset
1•gsgreen•8m ago•0 comments

The Dynamics of the Egg

https://www.the-hinternet.com/p/the-dynamics-of-the-egg
1•Caiero•9m ago•0 comments

Why remote roles are region specific and not 100% remote?

1•moizrocky1•9m ago•2 comments

An LLM attacked our lab so we made it work for us

https://jesta.ai/blog/darkreasoning
1•nirga•11m ago•0 comments

Retries don't fix eventual consistency

https://var0.xyz/posts/retries-dont-fix-eventual-consistency.html
2•tuxie_•11m ago•0 comments

AMD's FP64 Boost with MI430X Is Even Bigger Than Expected

https://www.hpcwire.com/2026/08/03/amds-fp64-boost-with-mi430x-is-even-bigger-than-expected/
1•rbanffy•11m ago•0 comments

How fast is C++26's std:hive?

https://lemire.me/blog/2026/08/02/how-fast-is-c26s-stdhive/
1•ibobev•12m ago•0 comments

Relative Velocity and Closing Speed

https://eli.thegreenplace.net/2026/relative-velocity-and-closing-speed/
1•ibobev•12m ago•0 comments

A field guide to rendering: from triangles to Gaussians

https://www.4rknova.com/blog/2026/07/19/a-field-guide-to-rendering#interlude-renderman-which-chan...
1•ibobev•13m ago•0 comments

Bundling Bioweapons with Vite

https://github.com/HughParry/vite-bundle-antillm
2•HughParry•13m ago•0 comments

Secretspec 0.18: Secret Lifecycle, Bitwarden, Keeper, AWS PS, and Swift

https://secretspec.dev/blog/secretspec-0-18-secret-lifecycle-bitwarden-keeper-aws-parameter-store...
1•domenkozar•13m ago•0 comments

Show HN: Jido Assembly; Slack Clone in Pure Elixir with Integrated Agents

https://jido.run/blog/jido-assembly-slack-clone
2•mikehostetler•14m ago•0 comments

Nvidia Alpamayo 2 Super, the Frontier Open Model for Autonomous Vehicles

https://blogs.nvidia.com/blog/alpamayo-2-super-open-model-now-available/
1•malshe•15m ago•1 comments

The AI Demand Bubble

https://www.wheresyoured.at/the-ai-demand-bubble/
5•7777777phil•18m ago•0 comments

Show HN: I redesigned my self-hosted data manager's UI (4k stars, v2

https://github.com/Volmarg/personal-management-system
1•volmarg_reiso•20m ago•0 comments

BasicSwap v0.17.9 released (Atomic Swap)

https://blog.basicswapdex.com/basicswap-release-v017_8-v017_9/
1•dRK-U•20m ago•0 comments

Cloudflare enforces engineering standards using AI

https://blog.cloudflare.com/engineering-standards-enforcement/
1•garyhtou•20m ago•0 comments

Karpenter's consolidation behaviour is counter-intuitive

https://blog.appliedcomputing.io/p/karpenters-consolidation-behaviour-5a6
2•avenger337•20m ago•0 comments

Show HN: Adapt, Automatically Turns Files into REST APIs, Web UI, and MCP

https://github.com/mcindi/adapt
1•ilovetux•21m ago•0 comments

Site Fighter – Arcade-style website speed benchmarking

https://sitefighter.com
1•shroweb•23m ago•0 comments

NPM Packages in the Keyv and Cacheable Namespaces Compromised

https://socket.dev/blog/popular-npm-packages-in-the-keyv-and-cacheable-namespaces-compromised-in-...
2•tilt•23m ago•1 comments