What’s really sad to me is that the missing green cluster appears to be very similar to alpha minecraft grass. Didn’t know what we had until it was gone
I’ve always said the game needs more purple colors. Lavender and lilac are the first things that come to mind. There’s already a lilac flower in the game but no dye for it. But a lavender flower would be really pretty for building and then that dusty more muted purple would be great for building
I’d love to see mojang add colors not currently represented in Minecraft! Concrete, terracotta and wool are obvious and easy ways to do it but I’d also like to see it in the form of new stones, woods, dirts or sands.
Definitly! I (as a builder) would really like some currently uncommon colors, like those lime greens or the purples. Currently i use two mods / addons to do that a little bit, they‘re named „Natures Spirit“ and „Hibiscus Extras“ and they do a really good job at it, but having it in the base game would still be way better i think.
The purples and yellow-green feels like it could easily come from an end update since those are the ends colours judging off of the Dungeons Echoïng void DLC
@@whateverIwasthinkingatthetimeyeah, saturated purples would definitely work well for the grass equivalent of a new End biome. And the dragon's breath is pink, so one could also have a dragon-themed End biome. I think the yellows and greens could come from a volcanic surface or underground biome. They're the sorts of colors one finds around hot springs and geysers. Also I would mention that Quark adds all these colors with it's underground crystals, so that would be another way of doing it.
Just wanted to comment on how much this kind of data presentation is so important and worth noting! As an artist (primarily a digital illustrator) and someone who spends hours exclusively building in Minecraft, it's so nice to see colors laid out like this. Digitally rendered colors really need to develop more visualizations that aren't gradients, especially considering how different they are to physical pigment (which I'm sure you as a geologist know). This game provides such a unique opportunity to do so, in novel ways that may be more useful with certain information. And it's amazing seeing you do so! Thank you so much for using your knowledge to make these!
Thanks, there is something very satisfying working on these and seeing the colors represented in different ways. I literally made this so I could take a break from another video I'm working on.
I think it's time to add to the dye spectrum. Make beetroot craft into a unique dye that can only be obtained from beetroot, something in-between purple and red. Make the coral craft into dye (coral is used for dye in real life). The Classic version of Minecraft had "ultramarine" wool and that could be crafted from tube coral. If we're feeling particularly expensive, make those ancient plants you get from the sniffer craft unique dyes. There's a lot they could do with what they already have.
There could be a ton of secondary dyes in addition to the 16 classic dyes, and that could be the limitations for dyeing stuff like wool and terracotta. However, concrete could use the secondary colours. It would be fantastic to have all that.
I like the "feeling particularly expensive" part, everything in Minecraft is so easy, and some hard to get things are not particularly useful. And the different costs for different dyes makes it more realistic
The most saturated colors would be nice as an addon "neon" block set, from maybe dyed purified glowstone quartz (or something) blocks, which would work nicely for modern builds or even pixel art. I really enjoyed this video :)
Maybe you could make neon dyes by combining glow sacks with a color Ex: yellow dye + glow sack = neon yellow dye. Would make for a fun way to add more use to glow squids at the very least!
A lot of these missing colors would fit perfectly for magic-like things. For example, an aurora fits all those greens and cyans, so maybe a magical aurora glass block like you find in some mods would be nice
This would be cool and also fit in if there is an update to enchanting, maybe if a flower forest village type gets added. Or even a jungle update that gives it more flowers.
@@solarprogeny6736For an alien place like the End, at least on a floral level, yes. They’ve also been sorely lacking in the enchanting area for a while, so more colours there would just zhuzh up the feel.
I noticed that some of the "missing greens" are actually in the game in a way - in the form of biome-dependent grass! I really like to build in snowy biomes speciffically because the green of the grass there is nice and blueish. And it's pretty close to one of the greens in your set 3, I think! Really hope we will at some point get colored blocks like this in minecraft so I don't have to keep grass blocks in my house just to have a sweet carpet. Gneiss video, as always!
Yup, and cherry biomes have a very bright green grass. I imagine it’s pretty hard to account for biome colours, because you would need to take into account every different piece of foliage with every biome tint. It also makes sense to maybe not include it, since it can be difficult to access or mix these colours. But I am curious as to how the biome grasses would influence things.
Gneiss: I wonder what colours are missing *Finds we're missing neons* Gneiss: No, not like that Maybe some of us scifi/future/solar punk builders WOULD like to have some super saturated colours
@@voidsnail Yes, exactly that kind of dyable I had in mind. Don't know if this is compatible with the block-ID system and such, but that is not my job. Or perhaps we get extended color-crafting to get more vibrant colors and use them for concrete powder!
3:14 you could make a display that takes the nearest blocks and puts them in 3 dimentional voronoi cells, you could then input 2 blocks and it would draw a straight line between then in this space, then whatever cells they intersect with they would put those in a pallet to create the perfect gradient between those two blocks, it would take out the guess work on picking those blocks yourself when using this space for pallet picking, i dont think it would be that hard to implement, and it would turn this into an extreamly useful tool for gradients (the center of each voronoi cell would be each current block and its color)
I think to achieve the 'colors that aren't more saturated but instead help with dithering' you should check if they're inside the convex hull of the existing colors. My #1 building dream is better translucent blocks--more textures for glass and a way to color water.
Only adding blocks in the convex hull of existing once seems overly restrictive. That would only work well if the most extreme desired colors are already implemented as blocks.
@@sebastianjost I think the "check if they're inside the convex hull of the existing colors" was meant in the sense that you'd only strictly _NEED_ them for dithering if they're *outside* the convex hull (and thus expand the color space reachable by dithering).
Bro is casually writing entire mods just to display text entities for his comprehensive studies. Genuinely impressive work that deserves recognition for your dedication.
I think a (potentially simple) way to mathematically rigorously fill out the pallet is to add the block that would reduce the total color distance of all blocks the most. Basically taking the 2nd function you wrote to iteratively add new colors and maximizing it to find the most filling color. I believe this would work and would reduce the likelihood of getting full saturation of colors. The neighborhood of colors around a saturated color is only a subsection of a sphere, whereas by maximizing the total color distance reduction you are incentivizing the function to return the center of the most complete spherical neighborhood of colors. Not sure if this made sense. I loved the video, and would love to see where you take it!
Rather than iterating over the function, you could use some multivariable/vector calculus concepts. Create an grid across the color space and assign each point to have a value representing its distance to an existing block, then look for local max/min
I was thinking that a (potentially) mathematically inexpensive, but maybe less scientific way to get less saturated colours could be to get the distance to the sRGB space edge, together with calculating the nearest block distance and getting the minimum like you'd do another block, but I really like your approach as a more thorough and accurate method :]
I still would like it if they would add "paint" into minecraft. Mix dyes to create the colors you want then be able to paint some if not all blocks. Then you could get the texture from certain blocks but with a color you like. It would make building WAY better having way more control over the color pallet. Though I think it would be a lot of work for it to ever happen. I also still stand by my comment on one of your other color videos talking about needing more different colored lighting sources. Since we currently only have a handful of blocks/items that give off light and they are mostly all yellow/orange in color.
a way to fill gaps could be to treat the entire outer surface as a block that way when you try to maximise distance from a block youll be finding the largest sphere you can fit within the space
Great visualizations as always! I think Mojang has been doing a great job rolling out new decorative block colours in recent updates, but there's still a lot of major gaps so I hope they check out this video before they start planning the next one!
I think this is really fascinating! I made an (admittedly rough) color wheel by hand and I would have put money that we were missing a lot more orange and yellow, specifically the ones that are more vibrant. These are super interesting though! The palette reminds me a lot of some of the blocks and structures you can find in the Better End mod, so maybe theres potential that in an End update we could get more of these cool tones? Amazing video!
3:58 this is a really elegant solution! Yes. I do like this "mathematically filling gaps" idea, because clearly just most distant colors isn't QUITE what you are going for, in your heart's heart lol.
Your production quality, creativity, and teaching ability is unparalleled, regardless of channel numbers. So glad I found these videos, if you're just getting started I can't wait to see what comes out in the months to come!
The takeaway I'm getting from this is that we are REALLY missing varied styles of greens that can be utilized, and pastel colors. Those two areas seem to be sorely lacking across the color spectrum Also, re a new calculation, I wonder if it might help to include *all* the "edges" as a point as well. That way you're maximizing the distance between any existing colors AND the edge of the graph. It might provide a better "midpoint" for things and would be less saturated as well Edit: thought of another idea as well. You could calculate the density of any given point as the number of colors present in a radius r around the color, and count the points outside of the allowed space as some constant c, with a point being chosen if it has the minimal density. I'd be interested to see what colors get chosen for varying values of c and r.
I think some neon colors would be neat to have for more cyberpunk style builds. Maybe making use of the glow ink sac, potentially crafting it with existing concrete to create neon versions of themselves !
the fact a lot of blues and purples are missing is a kinda neat parallel to real life given how long it took for blue and purple dye to be made (let alone made cheap)
[8:58] "I'll have to think about how to do that mathematically; You have to pick a color that's only between existing points" - What you're looking for is the *convex hull* of a set of points, it's exactly the shape you get when you take a set of points, then add the points in between any two points, then the ones between those and so on. Checking if a point is in the convex hull immediately from the original set of points is a bit painful, but you can build a polygon in O(n log n) and then check for membership using a scanline approach.
8:55 this is actually probably not as hard to implement as you think. But my solution is resource-intensive. Let me run through the conceptual argument: Take a point you want to check for being inside or outside the blob of blocks. To verify whether it’s internal or not, run the following algorithm: 1. Pick two blocks relative to the point and generate vectors from the point to the blocks. 2. Cross product the vectors to get a normal for the plane. 3. Calculate the projection (of the vectors from the point to every other block) onto (the normal vector from step 2) 4. Check the signed parity of each vector. If there are two vectors with different parity, then the two blocks lie on opposite sides of the plane we checked. 5. Repeat steps 1-4 until a comprehensive list of signed vectors has been generated. Note that only when there exists some normal plane for the point where every projection vector is the same sign is the point external. Then running this test you can exclude external points from the colorspace, allowing for a reduced search space for improved color blending.
For reference, I believe this is O(n^3) for each point since you need to permutate through three blocks each time, however this likely isn’t a problem since the space is only a couple thousand blocks. A properly designed program could execute it on modern hardware at worst in seconds, and run through the entire space in minutes.
I subscribed after your Oklab video, and was disappointed when I later watched your missing color video because it didn't include the Oklab part. Now here we are! Thank you!
You could load in the colored blocks, subtract the ones that are closes to any minecraft block and then use a cluster algorithm like the k-means algorithm to find the centroids of the clusters of the remaining blocks. This provides you with an actual repeatable way to find the least used colors. This method is often used in machine learning.
Solution. Add a painting mechanic. Shears on a horse gets you horse hair. 1 stick abd 1 horse hair gets you a paint brush. A new utility block would need a water bucket at the bottom and a red green and blue dye at the top, which you get to dial the intensity of each from 0 225 plus alpha (4 channels). After processing the water bucket is now coloured. You use that to paint on walls one block at a time. Which the paint bucket will have a usage bar to that will turn into an empty bucket. Just an idea that could work.
I think doing something like died sandstone would be a good way of getting the pastel shades that we need. I do think they would have to go more of a fantasy route for the more saturated colors. A lot of better End mods do tend to show the colors you shared.
For how to mathematically ignore colors at the edge, and only consider ones that are "filling in gaps": Do the same thing you're doing now, calculate the distance to the closest block Then, calculate the distance to the nearest edge plane (or, make a list of edge blocks and do it to them). If the distance to the edge is lower than the distance to the nearest block, then that means the block had an "open side" which was not constrained properly by another block, and can be discarded as a block that can be chosen for the palette.
Now, this would be a BIG project for Mojang, but what if we were able to mix dyes together and dye wool terra and concrete to get and even better range of colors?
I'd be looking for the largest tetrahedron by volume with blocks on the vertices and no blocks inside that space and selecting the centre point for the new colour. There may be occasions where this is closer in some ways to other points than the spherical gap but it's then a bridge point for 4 different colours since your aim is colours that make blending and dithering easier these colours have good utility for that aim, and all those colours by definition end up within the existing colour space. Another approach might be to look at the average distance to all the blocks (and the closest point(s) on the surface) and maximise that value. This then moves the point away from collections of blocks which already have a lot of similar colours, there are lots of grey and woody blocks and fewer teal and purple blocks, adding in the distance to the edge of the space biases the blocks inwards, you can even weight this if the effect isn't to your liking.
One possible way to fill in the palette instead of expanding it might be to find circumscribed spheres of certain groups (or maybe the largest sphere not containing any blocks), and placing the new block at the center. I think this could get some interesting results
Gotta set a boundary of the standard deviation for mean block saturation. That should help prevent colors that are overly saturated from being highlighted.
One consideration to make is how close you would like colours to be to each other. So I would analyse the density of colors in the existing palette and then generate a sample of points with a similar or slightly higher average density (LHS is a good way to do this). That way you can leave space for future colors while still adding colours in the missing space
That would be a good systematic approach in theory, but the problem is that the already existing colors/textures wouldn't fall onto that grid. You COULD solve that by re-tinting every one of the existing textures to shift them onto the nearest free vertex. But that runs the risk of giving related textures (like nether bricks and chiselled nether bricks; or stone, cobble and stone bricks) visibly different tints.
You could make it so if an outer layer has no color, then it is removed. Or have the edges connect, so the block farthest to the left is next to its opposite on the right.
Set your search algorithm to pick colors that yield the greatest reduction in total distance of all colors from a block. That would make it pick the middles of the largest holes instead of the farthest points.
you could make it not so that it picks the blocks with the biggest distance but the blocks that make the most impact like the ones that make the sum of the distances around it much lesser than maybe it wouldn't pick the edges of the grid
If you want to get "most lonely" inner colors, you can try mapping all distances between all possible colors and finding the middle points of the largest distances. Also consider building a graph of all possible colors and sorting each color by a combination of "biggest amount of neighbours" and "smallest amount of minecraft-native neighbours".
For filling gaps, what Id do is make a radius around each block in oklab space and remove all the colors within it, then run k-means on the remaining colors to find the centers of each cluster of missing colors I love this series, math stuff that reaches out into the real world, like color math, is so much fun I think
I'm not certain how exactly to do this mathematically, but I think that picking colors that are in the center of the unrepresented chunks instead of on the far edge could go a long way. Maybe something where you find the position for a new color in color space that has the greatest affect on (sum of (each points distance to the nearest block squared) somewhat similar to how a linear regression is taken. With a function such as Find the least represented color (likely on the edge) and use that as a starting point. Check which of its neighbors produces the lowest r^2 value, then repeat on that point until you find the local maximum. This is your new color. The idea is to add a color that best represents the cluster that was neglected. This should offset it somewhat away from the edge
You talking about how we'd mathematically decide missing colours got me so excited; my proposal below I think if the goal is to find in between spots, rather then dealing with calculating all those lines [sounds like a lot of work] you could mimic the "colour density" by having each block radiate points that decrease [probs exponentially] as they go outwards & the colours with the least points are hopefully the ones in the least dense spaces. You could potentially also use the blocks to define the bounds of the colours
You could look into k-means clustering to find the missing colors. They would allow to find the colors that minimize the overall distance to that color.
I love this kind of nerdy deep analysis of things. I saw your color thing last year and subscribe, so it came up in my feed. Good stuff! Python skills used in Minecraft. Woot.
One way I can think to potentially tackle picking new colors that are in gaps but not in the extremes would be to define a "cost function" that's something like the sum of all of the distances from the colors to the closest block, then find the color to add that minimizes that sum. Moving inwards slightly from the edges might end up subtracting more from the overall distances because the new color would be closer to more of the other distant colors than just the furthest one, thus select colors that are less saturated.
Hey dude! Just found your channel and I really like it, as an engineer I really like your approach of content and your style I have never been really interested in earth sciences but I do like learning new stuff and with your videos I'm learning about ES and color theory! Keep up with the awesome job!
a cool video idea that i think would be interesting would be maybe getting an artist and coming up with some blocks that would fit the missing areas you would want to see filled in and maybe some builds that would utilize them.
I think Mojang should add a new colour block to balance the gap between Stained Terracotta and Concrete. Just take the medium between the two and make that a block. Could be called the Pastel Block.
If you’re looking for blocks to fill out the existing Minecraft palette for things like dithering, it might work to bound the Oklab color space by the existing Minecraft blocks then use the same method within those dimensions
You could also mark all the "edge" colours as taken, so it will also take into account the distance from the edge of the colour space the same way as the distance from the nearest real block.
Can you try this with the dimensions used to generate biomes? humidity, temperature, weirdness, etc, and estimate what biomes are "missing" from minecraft? very cool videos!
Yeah that’s a cool idea. I have through about looking at the biomes as colors, not the foliage colors but just the blocks naturally generated in them. I could do both of those in the same video.
My first instinct on how to implement a less saturated colour bias into your existing approach would be thinking of it as a cost algorithm - for which you're already most of the way there. Instead of only considering minimum distance, adding a score based on saturation (possibly relative saturation difference w.r.t. the closest colour? That'd ensure that naturally saturated colours in the current colour palette do not get punished doubly so while encouraging filling the pallette gaps). The most difficult thing would be getting the weights right, how much of a negative score should be added based on the saturation. Getting that right would probably take a little bit of fiddling around.
To try to get some of these more “internal” colors that are more likely to feel like the “missing” ones, I have a few ideas: - you could add an addition weighting like 1/(average distance to the possible colors) to the farthest calculation. This helps reduce the fact that that green point is far away from everything. - for a more involved python calculation, you could try to find colors with multiple far colors in different directions. A good “between” measure might be minimizing a normed dot product to 2 other colors. Perhaps a color is only considered it there is at least one pair of minecraft colors who’s relative vectors have negative normed dot product (or any other cutoff you like). You could go up to a set of 3 or 4 points will all mutually negative normed dot product for increasing amounts of “inside.”
If you want to fill in the gaps, how I'd go about it is to find the most isolated points within the convex hull formed by the minecraft blocks. This convex hull is the smallest convex shape that includes all the minecraft blocks, so any points inside it will necessarily be between other blocks and not an outlier.
You could try the same method with most distant colors, but where all the borders count as “blocks” for calculating the distances as well. That might make it feel like it’s filling in the “gaps” more
The missing gap palette points would need to be points that are linearly halfway between two blocks, but don't have any other blocks that are closer to them than those two. You then sort by which ones have the longest distance. I imagine there's got to be a more efficient way to calculate that than doing the math for every combination of block, but with only like 700 blocks, I can't imagine it would take too long to brute force it.
I would especially like some deeper and pastel blues in a useable form, warped wood is just not cutting it since its got too much green in it. Lapis, concrete, wool, terracoota and glazed terracotta are really some of the only ones but they are so vibrant
Your first video I watched was on igneous rock. I have been subscribed since then glad to be part of the OG subscribers. I wish I could discuss map art colors in as much detail as you. It has been amazing watching your videos, keep it up!
Probably the easiest way I can think of for a more "fill in the gaps method" would be to take the list of furthest points, apply some sort of clustering algorithm to it, and then use the midpoint of the clusters as your final colours.
to try and find the "holes" in the pallet you could try and compute the distance between every pairs of blocks and add the new color in between the two furthest away blocks from each other
In one way it kinda sucks that the bright green is missing from Minecraft when the grass used to be really close to that color in the alpha. It sorta looked bad but I also liked it in a way.
hi i know im in a sea of comments (and ive not even watched yet lol) but i wanted to say thank you. im a fine arts student and ive found the intersection of arts and sciences so fascinating in color theory especially. its been nice to relax and still learn whilst studying. Thank you
This would be harder to calculate, but instead of picking the colors furthest away from existing blocks, you could pick the colors where if they were included, it would reduce the total distance of your sampled colors from the set of blocks the most, this would rein things in from the edges a tad but it probably wouldn't change the outcome very dramatically
I think i have an idea on how you can stop it from picking collors that are close to the edge. If you let it calculate which 16 new collers will make the avarage square size the smallest. Then it wont pick thing close the the edge. Hope my bad english makes sense
An idea to pick colors that are between blocks instead of off on the edges would be only look within the convex hull around the existing blocks. Imagine putting a shrink wrap over all the current blocks, throwing out all the colors that aren’t inside the shrink wrap, and then running the distance-sorting algorithm again
i would lovee a huge update with dyes and colors i love making banners and id love to make more especially with more greens since we're lacking variety in some hues
What you calculated was which colors were furthest from existing colors, but if you're trying to fill in the palette, then what you really want to do is minimize the average distance (or maybe root mean square) between each color and the nearest block Maybe try iterating through all the colors calculating the effect they'd have on that mean?
What I always find myself missing the most in Minecraft are the pastel colours, there are only a few of them and even some of the ones we have have some awkward texture (like prismarine bricks) (I think I've said this before in the comments of one of the earlier colour space videos) What I really want is just a pastel blue block that I could use to recreate my own childhood home in Minecraft. Right now I have to use white concrete because it's the closest option; light blue blocks (concrete, wool, etc.) are too saturated, prismarine bricks are too turquoise and have a distracting texture and light blue terracotta is too purple and a bit too dark
What’s really sad to me is that the missing green cluster appears to be very similar to alpha minecraft grass. Didn’t know what we had until it was gone
Also the old minecraft classic cloth blocks
the grass block is also very brown so not sure how it factors in here
Pretty much all the foliage was neon green back then so you could probably use leaves instead
Weirdly, it also seems very similar to the new potato wood from the April fools snapshot
Yea i wonder if someone at mojang might have seen this video
I’ve always said the game needs more purple colors. Lavender and lilac are the first things that come to mind. There’s already a lilac flower in the game but no dye for it. But a lavender flower would be really pretty for building and then that dusty more muted purple would be great for building
I'd love if they added lavender or mint plants, with matching dyes.
Kind of feels like a job the Sniffer could fill...
I want periwinkle dye 😢
End update prediction?
definitely right. i wanted to use purpur in one of my old bases. and quickly found out there is no purple colour that really quite fits with it well
I’d love to see mojang add colors not currently represented in Minecraft! Concrete, terracotta and wool are obvious and easy ways to do it but I’d also like to see it in the form of new stones, woods, dirts or sands.
Definitly!
I (as a builder) would really like some currently uncommon colors, like those lime greens or the purples.
Currently i use two mods / addons to do that a little bit, they‘re named „Natures Spirit“ and „Hibiscus Extras“ and they do a really good job at it, but having it in the base game would still be way better i think.
@@libraryofgurkistan i feel you on the greens man. I recently did a build where I used every color, and green and purple blocks were so hard to find
As for new sands I would say we already have it in the form of concrete powder but for the rest I completely agree
The purples and yellow-green feels like it could easily come from an end update since those are the ends colours judging off of the Dungeons Echoïng void DLC
@@whateverIwasthinkingatthetimeyeah, saturated purples would definitely work well for the grass equivalent of a new End biome. And the dragon's breath is pink, so one could also have a dragon-themed End biome. I think the yellows and greens could come from a volcanic surface or underground biome. They're the sorts of colors one finds around hot springs and geysers. Also I would mention that Quark adds all these colors with it's underground crystals, so that would be another way of doing it.
Just wanted to comment on how much this kind of data presentation is so important and worth noting! As an artist (primarily a digital illustrator) and someone who spends hours exclusively building in Minecraft, it's so nice to see colors laid out like this. Digitally rendered colors really need to develop more visualizations that aren't gradients, especially considering how different they are to physical pigment (which I'm sure you as a geologist know). This game provides such a unique opportunity to do so, in novel ways that may be more useful with certain information. And it's amazing seeing you do so! Thank you so much for using your knowledge to make these!
Thanks, there is something very satisfying working on these and seeing the colors represented in different ways. I literally made this so I could take a break from another video I'm working on.
a geologist? (brandishes my obsidian knife)
I think it's time to add to the dye spectrum. Make beetroot craft into a unique dye that can only be obtained from beetroot, something in-between purple and red. Make the coral craft into dye (coral is used for dye in real life). The Classic version of Minecraft had "ultramarine" wool and that could be crafted from tube coral. If we're feeling particularly expensive, make those ancient plants you get from the sniffer craft unique dyes. There's a lot they could do with what they already have.
I really like all of these! I’d love to use ancient dyes 🤔
burgundy dye would be aight for a beet name
We need a Colors Update 2.0 fs. If only we could have someone at Mojang read this directly.
There could be a ton of secondary dyes in addition to the 16 classic dyes, and that could be the limitations for dyeing stuff like wool and terracotta. However, concrete could use the secondary colours. It would be fantastic to have all that.
I like the "feeling particularly expensive" part, everything in Minecraft is so easy, and some hard to get things are not particularly useful. And the different costs for different dyes makes it more realistic
The most saturated colors would be nice as an addon "neon" block set, from maybe dyed purified glowstone quartz (or something) blocks, which would work nicely for modern builds or even pixel art.
I really enjoyed this video :)
Maybe you could make neon dyes by combining glow sacks with a color Ex: yellow dye + glow sack = neon yellow dye. Would make for a fun way to add more use to glow squids at the very least!
@@nathandegraw2974 I AGREE! :D
A lot of these missing colors would fit perfectly for magic-like things. For example, an aurora fits all those greens and cyans, so maybe a magical aurora glass block like you find in some mods would be nice
would be cool for an end update! these colors look very unnatural so would fit in well there
This would be cool and also fit in if there is an update to enchanting, maybe if a flower forest village type gets added. Or even a jungle update that gives it more flowers.
be for real though does that sound anything like the design philosophy of mojang
@@solarprogeny6736For an alien place like the End, at least on a floral level, yes. They’ve also been sorely lacking in the enchanting area for a while, so more colours there would just zhuzh up the feel.
magic Update!
I noticed that some of the "missing greens" are actually in the game in a way - in the form of biome-dependent grass!
I really like to build in snowy biomes speciffically because the green of the grass there is nice and blueish. And it's pretty close to one of the greens in your set 3, I think!
Really hope we will at some point get colored blocks like this in minecraft so I don't have to keep grass blocks in my house just to have a sweet carpet.
Gneiss video, as always!
Yup, and cherry biomes have a very bright green grass. I imagine it’s pretty hard to account for biome colours, because you would need to take into account every different piece of foliage with every biome tint.
It also makes sense to maybe not include it, since it can be difficult to access or mix these colours.
But I am curious as to how the biome grasses would influence things.
Must be why Etho loves the jungle foliage
Gneiss: I wonder what colours are missing
*Finds we're missing neons*
Gneiss: No, not like that
Maybe some of us scifi/future/solar punk builders WOULD like to have some super saturated colours
lol, i just go until i get the colors i want. but yeah, i kept the brights in there, all depends on what you want to do.
neon blocks made with end materials? such as dragon's breath or end rods
@@solarprogeny6736 neon wool/concrete with the glow ink sacs
@@ThePacmandevil That would be perfect.
Neon colors would go great with Impulses base in Hermitcraft season 10
A lot of these missing colors existed in 0.30 classic as cloth blocks. Mojang needs to add those back
Not necessarily that implementation
Or make different Blocks like Glas, Sand, Wool dyable!
@@justus8675 you mean dyable like how leather armor is? bc that would be sick
@@voidsnail Yes, exactly that kind of dyable I had in mind. Don't know if this is compatible with the block-ID system and such, but that is not my job.
Or perhaps we get extended color-crafting to get more vibrant colors and use them for concrete powder!
gods, YES
3:14 you could make a display that takes the nearest blocks and puts them in 3 dimentional voronoi cells, you could then input 2 blocks and it would draw a straight line between then in this space, then whatever cells they intersect with they would put those in a pallet to create the perfect gradient between those two blocks, it would take out the guess work on picking those blocks yourself when using this space for pallet picking, i dont think it would be that hard to implement, and it would turn this into an extreamly useful tool for gradients
(the center of each voronoi cell would be each current block and its color)
I just had that same thought
Biblically accurate gay pride flag
I think to achieve the 'colors that aren't more saturated but instead help with dithering' you should check if they're inside the convex hull of the existing colors.
My #1 building dream is better translucent blocks--more textures for glass and a way to color water.
I master my work in the
m i n e c r a f t c o l o r g a m u t
Only adding blocks in the convex hull of existing once seems overly restrictive.
That would only work well if the most extreme desired colors are already implemented as blocks.
@@sebastianjost I think the "check if they're inside the convex hull of the existing colors" was meant in the sense that you'd only strictly _NEED_ them for dithering if they're *outside* the convex hull (and thus expand the color space reachable by dithering).
@@sebastianjost I agree, but that seems to be what Gneiss is hoping for rather than add the saturated colors that we don't yet have.
Bro is casually writing entire mods just to display text entities for his comprehensive studies. Genuinely impressive work that deserves recognition for your dedication.
I think a (potentially simple) way to mathematically rigorously fill out the pallet is to add the block that would reduce the total color distance of all blocks the most. Basically taking the 2nd function you wrote to iteratively add new colors and maximizing it to find the most filling color.
I believe this would work and would reduce the likelihood of getting full saturation of colors. The neighborhood of colors around a saturated color is only a subsection of a sphere, whereas by maximizing the total color distance reduction you are incentivizing the function to return the center of the most complete spherical neighborhood of colors.
Not sure if this made sense. I loved the video, and would love to see where you take it!
This makes perfect sense, I believe it would be a good way to find the minima
Rather than iterating over the function, you could use some multivariable/vector calculus concepts. Create an grid across the color space and assign each point to have a value representing its distance to an existing block, then look for local max/min
I was thinking that a (potentially) mathematically inexpensive, but maybe less scientific way to get less saturated colours could be to get the distance to the sRGB space edge, together with calculating the nearest block distance and getting the minimum like you'd do another block, but I really like your approach as a more thorough and accurate method :]
Look up karcher means
EDIT: Sorry, this is the wrong thing to look up. But I think your approach sounds reasonable.
This is a good idea and simple to execute. I think I might just do some test next time and try some different ways
I still would like it if they would add "paint" into minecraft. Mix dyes to create the colors you want then be able to paint some if not all blocks. Then you could get the texture from certain blocks but with a color you like. It would make building WAY better having way more control over the color pallet. Though I think it would be a lot of work for it to ever happen.
I also still stand by my comment on one of your other color videos talking about needing more different colored lighting sources. Since we currently only have a handful of blocks/items that give off light and they are mostly all yellow/orange in color.
The problem is that this would be a massive performance degradation
@@palmberry5576if you make only wood, stone, and concrete paintable, it would just be texture modification for a couple blocks
this is why alpha grass was so good
a way to fill gaps could be to treat the entire outer surface as a block that way when you try to maximise distance from a block youll be finding the largest sphere you can fit within the space
I had the same idea, just formulated it in a different way.
Optimizing for adding more than one block at a time could lead to better results still.
Great visualizations as always! I think Mojang has been doing a great job rolling out new decorative block colours in recent updates, but there's still a lot of major gaps so I hope they check out this video before they start planning the next one!
Hello Dingyfried
The major gaps in the green and purple colors give me hope that an end update might be coming
@@ModerationLabs Hi Labs!
I hereby pronounce you Sethbling 2.0. You continue to amaze me with your minecraft technical skills.
lol meanwhile Sethbling 1.0 is still at it. His recent videos are mad cool
Imagine if they combined their powers
sethbling is just proto gneiss
@@pez1870 I feel like you're kinda doing Sethbling dirty here...
Sethbling physics engine is mad cool
I think this is really fascinating! I made an (admittedly rough) color wheel by hand and I would have put money that we were missing a lot more orange and yellow, specifically the ones that are more vibrant. These are super interesting though! The palette reminds me a lot of some of the blocks and structures you can find in the Better End mod, so maybe theres potential that in an End update we could get more of these cool tones? Amazing video!
3:58 this is a really elegant solution!
Yes. I do like this "mathematically filling gaps" idea, because clearly just most distant colors isn't QUITE what you are going for, in your heart's heart lol.
Your production quality, creativity, and teaching ability is unparalleled, regardless of channel numbers. So glad I found these videos, if you're just getting started I can't wait to see what comes out in the months to come!
The takeaway I'm getting from this is that we are REALLY missing varied styles of greens that can be utilized, and pastel colors. Those two areas seem to be sorely lacking across the color spectrum
Also, re a new calculation, I wonder if it might help to include *all* the "edges" as a point as well. That way you're maximizing the distance between any existing colors AND the edge of the graph. It might provide a better "midpoint" for things and would be less saturated as well
Edit: thought of another idea as well. You could calculate the density of any given point as the number of colors present in a radius r around the color, and count the points outside of the allowed space as some constant c, with a point being chosen if it has the minimal density. I'd be interested to see what colors get chosen for varying values of c and r.
I think some neon colors would be neat to have for more cyberpunk style builds. Maybe making use of the glow ink sac, potentially crafting it with existing concrete to create neon versions of themselves !
let's go! I love math ONLY in the context of colors
the fact a lot of blues and purples are missing is a kinda neat parallel to real life given how long it took for blue and purple dye to be made (let alone made cheap)
[8:58] "I'll have to think about how to do that mathematically; You have to pick a color that's only between existing points" - What you're looking for is the *convex hull* of a set of points, it's exactly the shape you get when you take a set of points, then add the points in between any two points, then the ones between those and so on. Checking if a point is in the convex hull immediately from the original set of points is a bit painful, but you can build a polygon in O(n log n) and then check for membership using a scanline approach.
8:55 this is actually probably not as hard to implement as you think. But my solution is resource-intensive. Let me run through the conceptual argument:
Take a point you want to check for being inside or outside the blob of blocks. To verify whether it’s internal or not, run the following algorithm:
1. Pick two blocks relative to the point and generate vectors from the point to the blocks.
2. Cross product the vectors to get a normal for the plane.
3. Calculate the projection (of the vectors from the point to every other block) onto (the normal vector from step 2)
4. Check the signed parity of each vector. If there are two vectors with different parity, then the two blocks lie on opposite sides of the plane we checked.
5. Repeat steps 1-4 until a comprehensive list of signed vectors has been generated.
Note that only when there exists some normal plane for the point where every projection vector is the same sign is the point external. Then running this test you can exclude external points from the colorspace, allowing for a reduced search space for improved color blending.
For reference, I believe this is O(n^3) for each point since you need to permutate through three blocks each time, however this likely isn’t a problem since the space is only a couple thousand blocks. A properly designed program could execute it on modern hardware at worst in seconds, and run through the entire space in minutes.
very interesting solution! can't wait for more cool colors in the game 🙏
I subscribed after your Oklab video, and was disappointed when I later watched your missing color video because it didn't include the Oklab part. Now here we are! Thank you!
You could load in the colored blocks, subtract the ones that are closes to any minecraft block and then use a cluster algorithm like the k-means algorithm to find the centroids of the clusters of the remaining blocks.
This provides you with an actual repeatable way to find the least used colors. This method is often used in machine learning.
Solution. Add a painting mechanic. Shears on a horse gets you horse hair. 1 stick abd 1 horse hair gets you a paint brush. A new utility block would need a water bucket at the bottom and a red green and blue dye at the top, which you get to dial the intensity of each from 0 225 plus alpha (4 channels). After processing the water bucket is now coloured. You use that to paint on walls one block at a time. Which the paint bucket will have a usage bar to that will turn into an empty bucket. Just an idea that could work.
I do hope some devs at Mojang watches your videos, these are educational and to know what color palettes that are lacking in the game
Thank you for making this content, you have helped me to better understand geology and color theory. Keep making such great videos (:
I think doing something like died sandstone would be a good way of getting the pastel shades that we need. I do think they would have to go more of a fantasy route for the more saturated colors. A lot of better End mods do tend to show the colors you shared.
For how to mathematically ignore colors at the edge, and only consider ones that are "filling in gaps":
Do the same thing you're doing now, calculate the distance to the closest block
Then, calculate the distance to the nearest edge plane (or, make a list of edge blocks and do it to them).
If the distance to the edge is lower than the distance to the nearest block, then that means the block had an "open side" which was not constrained properly by another block, and can be discarded as a block that can be chosen for the palette.
You could search for colors within the convex hull of the existing blocks- this would effectively fight saturation.
Now, this would be a BIG project for Mojang, but what if we were able to mix dyes together and dye wool terra and concrete to get and even better range of colors?
If you restrict the search for points to the convex hull of all the existing points you can ensure they’re between existing block colours
I'd be looking for the largest tetrahedron by volume with blocks on the vertices and no blocks inside that space and selecting the centre point for the new colour. There may be occasions where this is closer in some ways to other points than the spherical gap but it's then a bridge point for 4 different colours since your aim is colours that make blending and dithering easier these colours have good utility for that aim, and all those colours by definition end up within the existing colour space.
Another approach might be to look at the average distance to all the blocks (and the closest point(s) on the surface) and maximise that value. This then moves the point away from collections of blocks which already have a lot of similar colours, there are lots of grey and woody blocks and fewer teal and purple blocks, adding in the distance to the edge of the space biases the blocks inwards, you can even weight this if the effect isn't to your liking.
One possible way to fill in the palette instead of expanding it might be to find circumscribed spheres of certain groups (or maybe the largest sphere not containing any blocks), and placing the new block at the center. I think this could get some interesting results
the part where you scaled the particles is what did it for me. Damn that is so intresting to look at!
Gotta set a boundary of the standard deviation for mean block saturation. That should help prevent colors that are overly saturated from being highlighted.
9:10 i think you can do a radius around each block that already exists, and see where the radius cross
One consideration to make is how close you would like colours to be to each other. So I would analyse the density of colors in the existing palette and then generate a sample of points with a similar or slightly higher average density (LHS is a good way to do this). That way you can leave space for future colors while still adding colours in the missing space
Sounds interesting! What is LHS?
That would be a good systematic approach in theory, but the problem is that the already existing colors/textures wouldn't fall onto that grid.
You COULD solve that by re-tinting every one of the existing textures to shift them onto the nearest free vertex. But that runs the risk of giving related textures (like nether bricks and chiselled nether bricks; or stone, cobble and stone bricks) visibly different tints.
Glad to see another video on the topic!
minecraft should readd those two classic wool colours from Classic
that wya that fills two of the gaps
love your vids, I hope Mojang sees this video and actually considers making some new blocks with these colors (totally not just a delusional wish)
You could make it so if an outer layer has no color, then it is removed.
Or have the edges connect, so the block farthest to the left is next to its opposite on the right.
I would love to see how this experiment would go when using all the mods from the Create series from Zedaph.
Set your search algorithm to pick colors that yield the greatest reduction in total distance of all colors from a block. That would make it pick the middles of the largest holes instead of the farthest points.
you could make it not so that it picks the blocks with the biggest distance but the blocks that make the most impact like the ones that make the sum of the distances around it much lesser than maybe it wouldn't pick the edges of the grid
I feel like minecraft is missing darker green solid blocks. Like taiga forest green or emerald green (not MC emerald). It's a shame really
If you want to get "most lonely" inner colors, you can try mapping all distances between all possible colors and finding the middle points of the largest distances. Also consider building a graph of all possible colors and sorting each color by a combination of "biggest amount of neighbours" and "smallest amount of minecraft-native neighbours".
For filling gaps, what Id do is make a radius around each block in oklab space and remove all the colors within it, then run k-means on the remaining colors to find the centers of each cluster of missing colors
I love this series, math stuff that reaches out into the real world, like color math, is so much fun I think
I'm not certain how exactly to do this mathematically, but I think that picking colors that are in the center of the unrepresented chunks instead of on the far edge could go a long way.
Maybe something where you find the position for a new color in color space that has the greatest affect on (sum of (each points distance to the nearest block squared) somewhat similar to how a linear regression is taken.
With a function such as
Find the least represented color (likely on the edge) and use that as a starting point. Check which of its neighbors produces the lowest r^2 value, then repeat on that point until you find the local maximum. This is your new color.
The idea is to add a color that best represents the cluster that was neglected. This should offset it somewhat away from the edge
this guy would be great at shader theory fr
I think the way to "fill in the gaps" would be to first restrict the colors to a convex wrapping and then run the same gap finding algorithm you did.
didnt understand anything about this but still watched💀
A way to find the gaps rather than the most distant colours could be to treat all the edges of the colour space as an already existing block
You talking about how we'd mathematically decide missing colours got me so excited; my proposal below
I think if the goal is to find in between spots, rather then dealing with calculating all those lines [sounds like a lot of work] you could mimic the "colour density" by having each block radiate points that decrease [probs exponentially] as they go outwards & the colours with the least points are hopefully the ones in the least dense spaces. You could potentially also use the blocks to define the bounds of the colours
you have some of most odd and unique Minecraft videos, i love them.
You could look into k-means clustering to find the missing colors. They would allow to find the colors that minimize the overall distance to that color.
I love this kind of nerdy deep analysis of things. I saw your color thing last year and subscribe, so it came up in my feed. Good stuff! Python skills used in Minecraft. Woot.
One way I can think to potentially tackle picking new colors that are in gaps but not in the extremes would be to define a "cost function" that's something like the sum of all of the distances from the colors to the closest block, then find the color to add that minimizes that sum. Moving inwards slightly from the edges might end up subtracting more from the overall distances because the new color would be closer to more of the other distant colors than just the furthest one, thus select colors that are less saturated.
Hey dude! Just found your channel and I really like it, as an engineer I really like your approach of content and your style
I have never been really interested in earth sciences but I do like learning new stuff and with your videos I'm learning about ES and color theory!
Keep up with the awesome job!
The first engi I thought was TF2 lol
That green that is also missing reminds me of Exp orbs. I wonder what it would look like if entities were factored in or even mobs.
Those emeralds, mints, and turquoises look great.
a cool video idea that i think would be interesting would be maybe getting an artist and coming up with some blocks that would fit the missing areas you would want to see filled in and maybe some builds that would utilize them.
I think it would be interesting if you highlighted the colors that are at the midpoints between blocks in the color space!
I think Mojang should add a new colour block to balance the gap between Stained Terracotta and Concrete. Just take the medium between the two and make that a block. Could be called the Pastel Block.
If you’re looking for blocks to fill out the existing Minecraft palette for things like dithering, it might work to bound the Oklab color space by the existing Minecraft blocks then use the same method within those dimensions
You could also mark all the "edge" colours as taken, so it will also take into account the distance from the edge of the colour space the same way as the distance from the nearest real block.
Can you try this with the dimensions used to generate biomes? humidity, temperature, weirdness, etc, and estimate what biomes are "missing" from minecraft? very cool videos!
Yeah that’s a cool idea. I have through about looking at the biomes as colors, not the foliage colors but just the blocks naturally generated in them. I could do both of those in the same video.
My first instinct on how to implement a less saturated colour bias into your existing approach would be thinking of it as a cost algorithm - for which you're already most of the way there.
Instead of only considering minimum distance, adding a score based on saturation (possibly relative saturation difference w.r.t. the closest colour? That'd ensure that naturally saturated colours in the current colour palette do not get punished doubly so while encouraging filling the pallette gaps).
The most difficult thing would be getting the weights right, how much of a negative score should be added based on the saturation. Getting that right would probably take a little bit of fiddling around.
To try to get some of these more “internal” colors that are more likely to feel like the “missing” ones, I have a few ideas:
- you could add an addition weighting like 1/(average distance to the possible colors) to the farthest calculation. This helps reduce the fact that that green point is far away from everything.
- for a more involved python calculation, you could try to find colors with multiple far colors in different directions. A good “between” measure might be minimizing a normed dot product to 2 other colors. Perhaps a color is only considered it there is at least one pair of minecraft colors who’s relative vectors have negative normed dot product (or any other cutoff you like). You could go up to a set of 3 or 4 points will all mutually negative normed dot product for increasing amounts of “inside.”
These color videos are so interesting, thanks for including the world and hex!
If you want to fill in the gaps, how I'd go about it is to find the most isolated points within the convex hull formed by the minecraft blocks. This convex hull is the smallest convex shape that includes all the minecraft blocks, so any points inside it will necessarily be between other blocks and not an outlier.
You could try the same method with most distant colors, but where all the borders count as “blocks” for calculating the distances as well.
That might make it feel like it’s filling in the “gaps” more
The missing gap palette points would need to be points that are linearly halfway between two blocks, but don't have any other blocks that are closer to them than those two. You then sort by which ones have the longest distance. I imagine there's got to be a more efficient way to calculate that than doing the math for every combination of block, but with only like 700 blocks, I can't imagine it would take too long to brute force it.
You’re the goat 😭 science and Minecraft is exactly what I needed thank you dad
Finding all the missing colours that aren't in the extremes of the colour space is as simple as a bounding box/constraint around the current colours.
I would especially like some deeper and pastel blues in a useable form, warped wood is just not cutting it since its got too much green in it. Lapis, concrete, wool, terracoota and glazed terracotta are really some of the only ones but they are so vibrant
Its so cool that you can do all this in minecraft, its amazing
Your first video I watched was on igneous rock. I have been subscribed since then glad to be part of the OG subscribers. I wish I could discuss map art colors in as much detail as you. It has been amazing watching your videos, keep it up!
Mojang really needs to see this! Nice job!
Love that your last video was noticed by others and now we have an updated video!
Probably the easiest way I can think of for a more "fill in the gaps method" would be to take the list of furthest points, apply some sort of clustering algorithm to it, and then use the midpoint of the clusters as your final colours.
I really like how you described this visualization, “color space”
That green cluster is composed of all my favourite colours... never noticed that they didn't exist in Minecraft
to try and find the "holes" in the pallet you could try and compute the distance between every pairs of blocks and add the new color in between the two furthest away blocks from each other
Fascinating stuff! Can't wait to see what you do next! Subed!
In one way it kinda sucks that the bright green is missing from Minecraft when the grass used to be really close to that color in the alpha.
It sorta looked bad but I also liked it in a way.
hi i know im in a sea of comments (and ive not even watched yet lol) but i wanted to say thank you. im a fine arts student and ive found the intersection of arts and sciences so fascinating in color theory especially. its been nice to relax and still learn whilst studying. Thank you
Thanks, i see you.
This would be harder to calculate, but instead of picking the colors furthest away from existing blocks, you could pick the colors where if they were included, it would reduce the total distance of your sampled colors from the set of blocks the most, this would rein things in from the edges a tad but it probably wouldn't change the outcome very dramatically
I think i have an idea on how you can stop it from picking collors that are close to the edge. If you let it calculate which 16 new collers will make the avarage square size the smallest. Then it wont pick thing close the the edge. Hope my bad english makes sense
An idea to pick colors that are between blocks instead of off on the edges would be only look within the convex hull around the existing blocks. Imagine putting a shrink wrap over all the current blocks, throwing out all the colors that aren’t inside the shrink wrap, and then running the distance-sorting algorithm again
I want a dark red dye in Minecraft
That red from set 4 is very nice
i would lovee a huge update with dyes and colors i love making banners and id love to make more especially with more greens since we're lacking variety in some hues
What you calculated was which colors were furthest from existing colors, but if you're trying to fill in the palette, then what you really want to do is minimize the average distance (or maybe root mean square) between each color and the nearest block
Maybe try iterating through all the colors calculating the effect they'd have on that mean?
That might also help with avoiding the super-saturated colors
What I always find myself missing the most in Minecraft are the pastel colours, there are only a few of them and even some of the ones we have have some awkward texture (like prismarine bricks)
(I think I've said this before in the comments of one of the earlier colour space videos)
What I really want is just a pastel blue block that I could use to recreate my own childhood home in Minecraft. Right now I have to use white concrete because it's the closest option; light blue blocks (concrete, wool, etc.) are too saturated, prismarine bricks are too turquoise and have a distracting texture and light blue terracotta is too purple and a bit too dark