Block Texture Noise

Поділитися
Вставка
  • Опубліковано 11 лип 2024
  • Trying to quantify the distinguish blocks based on their textures, not just color.
    Thanks to Grassy for the Ultrakill video.
    Discord Link: / discord
    BisectHosting was gracious enough to provide us with the Minecraft server we use for the community. If you are in the market for a server then you can use my code gneiss to get 25% off the first month when using any of their gaming servers.bisecthosting.com/gneiss
  • Ігри

КОМЕНТАРІ • 328

  • @ugmagir2641
    @ugmagir2641 23 дні тому +860

    wtf the ending lol

    • @theijemanmanman
      @theijemanmanman 23 дні тому +91

      I think someone made an Ultra kill map for him

    • @MaybeGamerLV
      @MaybeGamerLV 23 дні тому +90

      For him? Nahh it's of him its endless survival mode in Ultrakill and you can change things such as sky texture and the title and as you can see well it's all him

    • @bogerbog9802
      @bogerbog9802 23 дні тому +15

      I thought it was a bug with UA-cam.

    • @FE0003
      @FE0003 23 дні тому +9

      its prob to reach the 10 min mark for ads

    • @killsode4760
      @killsode4760 23 дні тому +22

      ​​@@FE0003 you actually haven't needed 10m for years. It's 8m now.

  • @Texelism
    @Texelism 23 дні тому +659

    Howdy - Image Processing nerd here.
    The term you were looking for, in an image processing sense, is kind of confusing, "Frequency" - Low Frequency patterns vary in value over larger periods than high frequency patterns.
    Kernels are a pretty standard way to calculate this, with more robust approaches using stuff like Fourier Transform and DCT Analysis, but when working with students I tend to explain it as, "Blur the image, then sum the differences for every pixel (Absolute values!)"
    This comes up in computer graphics pretty often, human eyes will "pop" towards high frequency patterns and will recognize high frequency repeating patterns much more easily. Years ago Minecraft added the ability to randomly rotate and variate textures into resource packs to help limit this visual repetition, grass blocks being the main example of this.
    Love your work as always

    • @gneissname
      @gneissname  23 дні тому +191

      Hey! Thanks for the info. I look forward to getting back from my trip and trying DCT out on this.

    • @shadamethyst1258
      @shadamethyst1258 23 дні тому +8

      Thank you for the info!
      I was thinkinɡ, what happens if you use the square sum of this difference?

    • @chaotech8962
      @chaotech8962 23 дні тому +7

      To add to this, the black/white patterns you presented are really easy to select for using a 2D Fourier transform, for example vertical columns would show up as dots on the horizontal axis. You can do the same with RGB images, but the results will be sensitive to the color space you use.
      Also, related to @shadamethyst1258 's question, summing the the squared differences is equivalent to summing the squares of the whole fourier transform, except the center pixel (which is the average). This is related to the square of the image's RMS (average instead of sum), and to its energy (the sum of squares, without removing the average).
      You can also look into spectral power density if you want units that are easier to work with, but Fourier is best if you need to combine multiple blocks.
      Great work!

    • @maxmuller445
      @maxmuller445 23 дні тому +7

      @@gneissname Maybe go even further an do a wavelet transform, which is kinda an optimal in-between of kernes and fourier, in order to get better space resolution at high frequencies. Aka stand outs can be pinpointed. This means that you can still include additional information relevant for builders, such as how noise is distributed. The downside is that the visualisation is higher dimensional. (A minecraft texture has two space (and technically one for time) and three (color) frequency (technically one for transparency) dimensions. Plus one dimension per analyzed wavelet for measuring how strong that combination is present. This means that for one wavelet we get already six dimensions. This is just about the amount you can practically visualize in minecraft, with three spacial dimensions and three color dimensions. Maybe a bit more including transparency.) So maybe this makes it a bit less practical for displaying as an infographic in a minecraft world, but would still be practical when the spaces or colors are projected down, for automatic generation or for sorting by certain properties, like appying filters to the transform depending on from which distance a build is intended to be viewed and then showing the block color space accounting for that.

    • @coreymartin9630
      @coreymartin9630 23 дні тому +1

      The name actually makes a lot of sense when thinking about sine waves (sound, light, etc.). On a graph they always average to zero and different frequencies of the same amplitude (intensity/energy) are percieved differently and can even be distinguished and filtered by simple electrical circuits

  • @areeh.haecker9985
    @areeh.haecker9985 23 дні тому +267

    the ultrakill bit was fun

  • @marckiezeender
    @marckiezeender 23 дні тому +124

    This would be hella useful for pixel art generators. The ability to algorithmically translate texture on an image to texture on a block would be really useful

  • @jcKobeh
    @jcKobeh 23 дні тому +92

    I love that you have the mind to tackle unknowns head first, and that there's such smart people working in similar fields ready to help in the comments.

    • @gneissname
      @gneissname  22 дні тому +31

      It’s great to have a community like this. I like to at least try to find a solution my own and maybe approach a problem from a different angle, but then when I post my attempt I get a lot of great feedback on other ways to do it and then I can learn from that.

  • @UdderlyEvelyn
    @UdderlyEvelyn 23 дні тому +306

    The color distance is very close to a string concept called edit distance. If you aren't already familiar you may enjoy learning about that. We used it for DNA sequence comparison in my old job.

    • @TheKd8lvt
      @TheKd8lvt 23 дні тому +39

      To explain edit distance from a programmer's point of view, for those who are too lazy to look it up -
      Think of it as "What is the lowest number of single-character changes that would it take to transform one string into the other?"
      Those changes are typically defined as:
      - Additions; adding a letter, making the string longer (e.g. "case" to "chase")
      - Deletions; removing a letter, making the string shorter (e.g. "dame" to "dam")
      - Substitutions; replacing a letter with a different letter, keeping the string the same length (e.g. "gain" to "pain")
      I can see this quality in particular making edit distance useful in working with DNA, as those are three of the basic effects that mutations tend to manifest as.
      For example, "edit" and "distance" have a fairly high edit distance, by my count 6 - starting from the beginning of "distance," add "e", (skip past "d" and "i",) delete "s", (skip past "t",) and delete "a", "n", "c", and "e".
      On the other hand, "edit" and "editor" have a much lower edit distance of 2, because "edit" is a sub-string of "editor", which only adds "o" and "r".
      It's heavily used by spell-checkers and search algorithms. Google's "did you mean?" is a good direct example of this in action.

    • @dinhero21
      @dinhero21 23 дні тому

      @@TheKd8lvt I think I saw it being used in google's diff-match-patch library, makes sense

    • @dombomb64
      @dombomb64 23 дні тому

      @@TheKd8lvt did somebody say chase :)

    • @adderallfannumberonefanofa3074
      @adderallfannumberonefanofa3074 22 дні тому +9

      is everyone who watches these a fucking field scientist

    • @LambdaTF2
      @LambdaTF2 22 дні тому +1

      It's so fascinating to see how concepts like this are used in so many scientific fields.

  • @fwiffo
    @fwiffo 23 дні тому +96

    You may want to distinguish between color noise and value or luminosity noise. For a block like cobblestone or a redstone block, the noise is mostly in value, whereas ore blocks have a lot of color noise (hue and saturation).
    In a perceptual color space like Lab, value noise is just the noise in the luminosity component, and color noise is the other two components together.
    Value noise is more useful for adding texture but color noise is very situational.

    • @QuantumGravy
      @QuantumGravy 22 дні тому +1

      Oh that’s a good point!

    • @bwjclego
      @bwjclego 21 день тому +3

      You have the colour jargon I couldn't figure out. I definitely agree with the concept. In practice, this would be calculating the average distance of the colours after a projection from a 3d colour space into some sort of 2d surface, it could look quite interesting animated into the colour world. I wonder if there is much value to other projections, so instead of projecting onto the hue/saturation plane, what would projecting onto the hue/value plane or saturation/value plane tell us, if anything?

    • @Lyraaaaaaaaaaaaa
      @Lyraaaaaaaaaaaaa 19 днів тому

      I was gonna comment a similar thing. Planks appear less noisy than the
      ores

    • @fwiffo
      @fwiffo 16 днів тому

      @@bwjclego Not really. The value axis simply contains a lot more information than the chroma axes. Hue vs. saturation doesn't matter much in this respect. Think about a black and white image - visually, almost all the important information is still present. You can make out almost all of the important details. You can usually easily detect the edge of objects and still read text. Details that are only distinguished by hue and saturation are much more subtle, even when you add the color back. If you remove the luma axis, the image is unrecognizable. Try reading red text on a green background when they're the same brightness.
      This makes sense when you think about it from a physiological perspective. Your rods and all three types cones contribute to your perception of brightness. Color is only driven by two aspects - the difference between the long- and medium-wavelength cones ("red" vs "green"), and the difference between the short and long+medium wavelength cones ("blue" vs "yellow"). The sensitivity of the cones overlaps substantially, which further reduces the information in that space. The contribution of all three cone types to brightness means it also has higher spatial resolution - individual types of cones are spread out because they have to share space with the other types.
      Lossy compression (e.g. jpeg) takes advantage of this by allocating fewer bits and lower resolution to the chroma channels. Likewise for analog forms of image transmission. Analog TV allocates a lot less bandwidth to chroma, as do analog recordings. Artists also take advantage of this. They use differences in value to draw users attention to the important parts of the subject. Areas will differences in color but not in value add context but aren't the focus.
      Also, while chroma is two dimensional, there isn't one objective way to organize it into two axes. Hue and saturation make sense from the point of view of communicating color, or designing a color scheme, but physiologically you perceive color on red-green and yellow-blue axes. The different ways to organize brightness are roughly equivalent in terms of conveying information.

  • @SalemGoosen
    @SalemGoosen 23 дні тому +78

    I think your "kernel noise" is trying to quantify the frequency profile of the noise/texture, you'd want to look into Fourier transforms and JPEG compression.

    • @Skepfyr
      @Skepfyr 23 дні тому +8

      I thought the same thing, computing a DFT for the blocks and using that to distinguish high-frequency vs low-frequency noise would probably yield more reasonable looking results.

  • @siddharth_desai
    @siddharth_desai 23 дні тому +72

    The kernel approach is essentially counting the high frequency noise. Changing the kernel size would change the frequencies you care about. That's a pretty good approach, though there are a lot of options.
    > Using a kernel that is a line instead of square would pick out vertical or horizontal features. E.g., a vertical log texture vs a sideways log texture. Think about how jarring it is to have a wall of vertical logs and then have one which is sideways.
    > You are using the average color distance from the average color. This is the L1 norm. If you used the mean squared distance, you'd get the variance, which is sometimes a more useful number. That would be the L2 norm. There is also the L-infinity norm, which is a fancy way of saying take the maximum color distance from a pixel to the average color. All three of these metrics could be useful in different scenarios.
    > One more thing to consider would be to apply different weights for chromaticity and luminance. In some builds, having different hues is far more jarring than having lighter or darker variations of the same hue.

  • @douira
    @douira 23 дні тому +35

    A log-scale on the kernel-noise axis would probably make blocks on this graph easier to understand. The regular noise axis might also benefit. Alternatively, maybe a -1/x scale could also even things out and make differences in noisyness more obvious.

  • @lasanha6328
    @lasanha6328 22 дні тому +8

    i somehow always forget how well made your videos are. thank you for putting actual effort in your videos!

    • @gneissname
      @gneissname  22 дні тому +4

      Thank you, this one was a bit rushed for my liking but it’s going to be almost a month before I can get the next one out so I wanted to at least post what I had here. I knew that my kernel noise wasn’t exactly what I wanted but I knew if I posted it someone would tell me how I should do it within the first ten min lol.

  • @potaatobaked7013
    @potaatobaked7013 23 дні тому +12

    For the first part, where you get the average distance of the pixels from the average color is also called the standard deviation. One way you could get more info out of that is by doing it separately for each axis of a color space. For example, while copper ore and dried coral are similar in average color and are both noisy, we would care about the noise in the saturation more than the noise in the value/brightness

  • @orca7895
    @orca7895 23 дні тому +6

    What immediately came to mind when you were showing the checkered blocks that averaged to grey was the jpeg family of image compression.
    It might be useful to covert the raw texture 'matrix' (either by color channel or some scalar factor like luminance/saturation) into a frequency matrix (using DCT) then calaculate the range and peaks of that.

  • @notalent7473
    @notalent7473 23 дні тому +4

    Two things that came to mind while watching:
    1. Trying the average squared distance might be interesting, since it gives high "weight" to outliers in the computation.
    2. Trying the average distance between all pairs of pixels, instead of the average distance from each pixel to the average. The result would be similar but would let you distinguish between cases where the pixels are clustered into a few tight points and where the pixels are all spread out from each other.

  • @Unobservable
    @Unobservable 23 дні тому +10

    had this in the background and got jumpscared by the ultrakill gameplay lmfao

  • @TheLoosestOfGooses
    @TheLoosestOfGooses 23 дні тому +5

    another fantastic video! I couldnt hear you over Ultrakill, but i loved watching it lol

  • @AthesielIcosiel
    @AthesielIcosiel 7 днів тому +1

    Legitimately so happy you made this video, I've been thinking about this conceptually for years and you managed to put it to video form phenomenally.

  • @zhuzh3l1c4
    @zhuzh3l1c4 23 дні тому +19

    Yooo another vid to remember the whole school program

  • @itzderpdoodle6937
    @itzderpdoodle6937 23 дні тому

    I just wanna say, thank you for these videos they are very infomative! And very impressive work doing all the flares of animation moving things around! it all looks amazing!

  • @kingofthend
    @kingofthend 23 дні тому +12

    Woah new Gneiss upload. What a blessed day it is.

  • @indigoid_
    @indigoid_ 23 дні тому +18

    DEVIL'S VORTEX SAWS?!?!?

    • @mrman12w
      @mrman12w 23 дні тому +1

      😭😭😭 I can’t escape it

    • @amogu_
      @amogu_ 22 дні тому +1

      @@mrman12w YOU CAN'T ESCAPE

    • @mystifoxtech
      @mystifoxtech 22 дні тому

      You can never escape the Devil's Vortex saws

    • @zorpglorp
      @zorpglorp 17 днів тому

      time? i can't find it 😭

    • @user-jt1to1ry6q
      @user-jt1to1ry6q 16 днів тому

      ​@@zorpglorpthumbnail (reversed)

  • @jorgehaswag7294
    @jorgehaswag7294 3 дні тому +1

    I think a good experiment would be to change the size of the kernel noise sampling to be smaller (likely to 3 x 3), since I personally consider blocks which have defined areas of low noise which contrast with eachother (such as some of the glazed terracottas) to be less noisy than blocks which have more sustained noise (such as cobblestone or warped/crimson planks). The large kernel sampling brush size you chose likely biases towards considering these blocks with separate low contrast regions as high contrast due to being more likely to catch both regions in one sample, whereas it moves blocks with more localized contrast such as cobblestone lower on the contrast hierarchy because it mixes in more datapoints that average out the contrast which would be percieved on a local scale.
    In any case, I think it could be quite interesting to see how changing the sampling area affects results

  • @alonk1060
    @alonk1060 19 днів тому

    The rest of the video was so calm I nearly panicked I was so caught of guard by that ending! Definitely gave me a chuckle

  • @a11pu1poj
    @a11pu1poj 23 дні тому +3

    love a good graph. shoutout gneiss

  • @Squabsss
    @Squabsss 23 дні тому +1

    ty grassy for blessing us with the gneiss ultrakill

  • @Jack-lp3gc
    @Jack-lp3gc 22 дні тому +3

    It might be a good idea to add a second plot where the vertical axis is the ratio of your "kernal distance" to "color distance" This might spread the blocks out more instead of them mostly lying on a line (due to the 2 measures being highly correlated). Also your "color distance" sounds a lot like varience or standard deviation. If you square the distances before adding them up and dividing you will have varience, if you take the square root of the varience you will have standard deviation.

  • @claytonharting9899
    @claytonharting9899 21 день тому

    Im so excited for this video, it’s an issue with palette generators Ive seen since forever, but nobody has so much as mentioned before

  • @nur-e-amanrefai9038
    @nur-e-amanrefai9038 22 дні тому +1

    I for one would love to hear about what sort of paleontology work you are doing in montana. Very gneiss video as always.

  • @joshuajohnson7848
    @joshuajohnson7848 23 дні тому

    Thank you for another amazing video! Good luck in Montana! I hope you find some cools stuff

  • @crumcramhd1242
    @crumcramhd1242 18 днів тому +1

    I love these color videos! But I must say I miss the geology stuff I hope you make some more soon. Whatever you do keep it up cause these videos are awesome

    • @gneissname
      @gneissname  18 днів тому +2

      Thanks, geology stuff is coming. These shorter color videos take a few days to do from start to finish but the geology ones take much longer, at least the meaty ones do. So these are usually me just taking a break for a bit. Been busy with real work and life lately but I’m still making progress on the next one and have many more planned out.

  • @wafity
    @wafity 23 дні тому

    These videos are just as interesting as always 👍

  • @Kingnaldo95
    @Kingnaldo95 22 дні тому

    For someone as color deficient as me, I'm always very interested in all your videos about color theory in minecraft, but I do miss having your geology videos too lol. I'll always look forward to your uploads man

  • @syrslava705
    @syrslava705 23 дні тому +1

    this dropped just as i freaking needed it

  • @RubberCrowy
    @RubberCrowy 23 дні тому +1

    One thing I want to bring up is in regard to all that z-fighting! I have an idea of a way to fix it.
    You take a radius around each block's centre, and for each block within that space, you stack blocks outward. This would add data that the unused axis would display.
    For blocks that overlap too little to be stacked, you take the space of a block's side and apply it onto each block's origin point. Then, for each overlapping block, you move a block inward by the slightest bit. This idea might be *best* with some manual work, even if an algorithm makes it work.

  • @HarpanW
    @HarpanW 23 дні тому +5

    One thing that would be very interesting to see is the textures with the most and least amount of hexes. I would expect to see something like snow with only 3 hexes being the least. I'm also pretty sure that the concrete powders have an insane amount of hexes.

    • @groundedgaming
      @groundedgaming 21 день тому

      True. I was manually changing each pixel in a concrete block's texture, and sampling 6 pixels in a vertical line, NONE of them has the same Hex... So I gave up working on it.

    • @HarpanW
      @HarpanW 19 днів тому

      @@groundedgaming lmao

  • @Kamarovsky_KCM
    @Kamarovsky_KCM 22 дні тому

    I admire the breadth of your knowledge

  • @EbenCT_
    @EbenCT_ 23 дні тому

    This video is very Gneiss. Great job!

  • @junkice6930
    @junkice6930 17 днів тому

    I had a mathematically similar issue doing some computational protein research. I found that with things like this, it's really easy to just add more and more layers of differentiation until you go insane.
    In my particular case, I was looking at a large family of proteins called nuclear receptors and categorizing them because they serve different functions.
    To analyze them further, I divided each of those nuclear receptor sub-families into groups based on which coregulator protein they were bound to.
    Then, each of the nuclear receptor sub-family coregulator groups into their bound peptide groups.
    Then each of the nuclear receptor sub-family coregulator-peptide groups into their bound ligand.
    Then each of the ligand-categorized nuclear receptor sub-family coregulator-peptide groups into the amino acids that the ligand would form a hydrogen bond with
    Then organized each of the bonding-residue separated ligand-categorized nuclear receptor sub-family coregulator-peptide groups into the probability that the hydrogen bond would form in an experimental setting...and so on.
    At some point, even though there are more variables that could be changed in theory, you just start to run out of data to analyze and your sample size gets too small to really tell if the statistics you're doing actually show anything meaningful.
    With the color world, you've gone from separating blocks into their different color spaces, then noise values, then kernel noise. With there being only a couple hundred blocks in the game, I feel like you'll hit a point where there's not enough data to see if the visualizations you're making really mean anything.
    But of course that's what science is all about: trying to figure things out and sharing what you did with the world, no matter how unimportant it might seem.
    Just don't spin your head too much with abstraction and sub categories lol.

  • @TheWorstAlex
    @TheWorstAlex 23 дні тому

    BRO I LOVE UR STUFF SM I LOVE HOW COOL YOU ARE.

  • @zeppie_
    @zeppie_ 23 дні тому +2

    I think a neat way to use this color distance is to use it to sort the colors into groups. For example, the copper ore block is divided into three distinct groups: the grey, the green, and the orange. I don't know how you would set about making an algorithm to identify these groups, but being able to plot blocks by these color groups (perhaps by having one instance of the block per color group) would be quite useful for selecting palettes

    • @tridish7383
      @tridish7383 18 днів тому

      Extract all the individual colors and represent them as rgb coordinates, then increase the distance threshold to find points where a meaningful set of nearby points forms.

  • @Rurek-jw4ng
    @Rurek-jw4ng 23 дні тому +9

    Man i love your minecraft animations

  • @nathanruiz3424
    @nathanruiz3424 22 дні тому

    You can think of the kernel size as a spatial frequency, so your first noise method measures low frequency color difference, and your second method measures high frequency color difference. Instead of increasing the size of your kernel, you can take the Max or Median local color difference after a small kernel pass.

  • @blockchaaain
    @blockchaaain 14 днів тому

    Fourier transform is what comes to mind.
    You won't (initially) get a single value out of it. Instead you get the spectrum of the noise.
    But it feels like you may be ultimately seeking info on how that noise is distributed per block.
    High frequency noise (changing a lot every pixel) versus low frequency noise (small changes between adjacent pixels).
    I think the right kernel/convolution could be essentially the same thing.

  • @William8Million
    @William8Million День тому

    You can’t escape. It is subtle, but the devil vortex is there.

  • @nujabraska
    @nujabraska 23 дні тому

    I adore these videos

  • @danolantern6030
    @danolantern6030 19 днів тому

    I watched this in grayscale. Nice video!

  • @Golem-9
    @Golem-9 20 днів тому +1

    long shot, but i would love to see you take a look at the geology of the mod TerraFirmaCraft as it completely overhauls world generation to include detailed stone types (including gneiss) with mechanics base around the style of rock. for example, Malachite will only generate within regions composed of marble or limestone and stone tools made from sedimentary rock will degrade faster than tools made from igneous intrusive.

  • @ThatGenericDude005
    @ThatGenericDude005 23 дні тому +1

    Yooo ultrakill, love it

  • @retro_crasher
    @retro_crasher 13 днів тому

    Have fun with archeology! That's super exciting!

  • @DarkChaosMC
    @DarkChaosMC 23 дні тому

    Really useful for builders, thanks.

  • @JoeCoup1
    @JoeCoup1 20 днів тому

    insanely cool stuff, inspirational to me. Makes me want to create something similar

  • @thomasfplm
    @thomasfplm 20 днів тому

    Somethings that seems a good distinction in terms of noise would be noise in terms of variations in the saturation of the same colour, in lightness/darkness of the same colour (like the redstone block that only has variations of red), and variations of colour (like the copper ore that has grey, orange and green).

  • @DefinitelyNotAnAi
    @DefinitelyNotAnAi 22 дні тому

    I think organizing by brightness and colorfulness would be a pretty interesting and potentially useful graph

  • @apblolol
    @apblolol 21 день тому

    this feels like the type of minecraft content etho watches. hope he sees this

  • @Some_Beach
    @Some_Beach 13 днів тому

    This reminds me of that guy who hid barely visible entities with a noisy background to make a disappearing block trick

  • @Lumiiify
    @Lumiiify 23 дні тому

    This is why i subscribed

  • @mightyaussie7187
    @mightyaussie7187 День тому

    Wait, Paleontology? BEST MINECRAFT UA-camR!!!

  • @ThePickleSoup
    @ThePickleSoup 23 дні тому

    I don't understand what you're talking about half the time, but I think I would appreciate having a graph like that in the color world anyway. I think it makes it easier for me to understand the general uniformity of the blocks and makes it easier to pick out specific blocks as a one-off to break up a recurring texture in a build.

  • @pchris
    @pchris 22 дні тому

    If you're going to leave the noise profile in the world, since it's only 2D you should leave it up against that wall and have it display at the same time as the regular color visualization so the user doesn't have to switch back and forth and can just fly around looking for what they want

  • @Lyzrinn
    @Lyzrinn 8 днів тому +1

    Hello Gneiss, could you do a video on how ores are generated in nature ? Genuinely curious to know, in a digestible way like yours, how concentrated and localized ore veins are created in certain spots and not in others !

  • @lbgstzockt8493
    @lbgstzockt8493 22 дні тому

    It's been said before, but the frequency distribution of a 2D-Frourier Transform would probably be the best way to quantify noise, at it would tell you how fine the noise is, and how much of it there is.

  • @superubergoober
    @superubergoober 21 день тому

    have fun on your trip!

  • @AJMansfield1
    @AJMansfield1 23 дні тому

    The analysis method you seem to be yearning for here is the Discrete Cosine Transform. The 'average color' is just the (0,0) 'dc offset' term in the DCT representation, while higher order terms give correction values that get progressively finer (higher frequency) along each axis to reconstruct the image. You can then take sums over regions of the DCT to derive how much "energy" a texture has at the associated frequencies.

  • @Loch_Ness_Lachster
    @Loch_Ness_Lachster 21 день тому

    For that art term, I’d refer to that as a form of contrast, or focus contrast.

  • @methewhenmethe8055
    @methewhenmethe8055 20 днів тому

    this reminds me of when i had to make a mosaic out of emojis so i got average color values of emojis. had to incorporate a lot more logic than i thought i would.

  • @grugspro
    @grugspro 21 день тому

    found an interesting mod recently called MCRGB that lets you put in a hex code or use color sliders to find blocks that contain that color or colors close to it, even compatible with blocks from other mods or resource packs

  • @trbz_8745
    @trbz_8745 22 дні тому

    You're probably gonna wanna used root mean squared difference for the kernel noise, so the more noisy kernels have more impact-that way the mushroom block won't count as lower than diamond.

  • @skydivertyler
    @skydivertyler 22 дні тому

    You could categorize blocks by “directionality” like some blocks look like they are oriented in one direction, some not, some the other, etc

  • @duncanurquhart5278
    @duncanurquhart5278 22 дні тому

    if/when you do add the option to sort by noise (or whatever its called) you might want to change it to be on a log scale so its easier and more intuitive to specify the difference between the large cluster of blocks towards the bottom

  • @WonkyGrub
    @WonkyGrub 23 дні тому

    A directionality kernel sorting (a separate vertical, horizontal and maybe diagonal) would be cool to see!

  • @warriorsabe1792
    @warriorsabe1792 22 дні тому

    My thoughts on how to sort them:
    - First like a lot of people are saying, some kinda fourier transform or something might be good since frequency is what you're trying to quantify and that won't tie the axes together like you see
    - My gut reaction for quantifying how spread out they are is to instead use standard deviation, it's how you'd typically represent that and might give cleaner results
    - But another thought I had: what if you did a linear regression and then had the error on that be plotted? You have a third dimension to work with, and one thing I noticed is some things have a their colors all in a line, like stone variants, but other things have the colors all over the place, and quantifying whether the differences are scattered between many colors or just points on a continuum of colors seems like a useful thing

  • @Ah-wb5le
    @Ah-wb5le 22 дні тому

    You should try looking at the hue noise for each block it might give a better result than the kernel noise. For example the diamond block and copper ore have similar kernel noise but they should have different hue noises. Or it could be a new axis or combined through some function with the kernel noise.

  • @Soneone.
    @Soneone. 23 дні тому

    minecraft and ultrakill. the perfect combinaion

  • @roboltamy
    @roboltamy 23 дні тому

    I think some instances such as the red mushroom block or the diamond block would be considered more solid given that their color is almost entirely uniform. While there are some specific spots of significant change, the overall color is largely the same. The few white dots or the white "shine" lines don't change the fact that the red mushroom block looks red and the diamond block looks blue.
    I'm not sure that this is relevant in a strictly mathematical/color theory sense, but if the idea is to look at the noise in terms of the context a given block fits, it could be worth considering.
    tldr; red mushroom blocks and diamond blocks look pretty much solid red and blue respectively, even if they technically have some noise.

  • @secondengineer9814
    @secondengineer9814 23 дні тому

    One thing that might be interesting would be to look into jpeg compression and discrete cosine transforms. This splits an image into higher frequency and lower frequency components and might be a useful way to figure out how noisy a block is. (It's basically a 2D fourier transform for images)

  • @connorlawrence5263
    @connorlawrence5263 20 днів тому

    Montana mentioned! Enjoy your stay!

  • @DJBaphomet
    @DJBaphomet 23 дні тому

    I think it'd be kinda cool to do a version of this but specifically only with blocks that show up in worldgen. Not really for any specific reason, I just think it'd be cool to try and quantify the average "noisiness" of the minecraft world with the textures you find!

    • @gneissname
      @gneissname  22 дні тому

      You know, I have had a video idea sitting around similar to this. I wanted to look at the color distribution by biome and then maybe structures too.

  • @WonkyGrub
    @WonkyGrub 23 дні тому

    Noise could be interesting to look at in separate terms as well, rather than complete difference in colour it could be cool to separate it into hue noise, saturation noise, and value noise. They all are useful in different ways in building too

  • @wednes3day
    @wednes3day 21 день тому

    Having filters of 0-0.75 or 0.25-0.75 something of noise would be super useful to have less clutter you're not planning to use, and for the latter letting you pre-filter blocks that might look too flat from the start

  • @candybluebird
    @candybluebird 22 дні тому

    maybe instead of averaging, try taking the standard deviation or the median. Also good luck in Montana, that place is scary. Cool museums and magpies tho

  • @dragon_pi
    @dragon_pi 23 дні тому

    - since the x value is the overall noisiness and the v value is the local kernel noisiness there should be a maximum y for a given x. maybe one could try to "normalize" the y axis by multiplying it by 1/x² (eyeballing it, idk if thats correct) with x and y scaled to [0,1] since otherwise most of the graph would just be dead space.
    - another idea would be to display the graph by kernel size, where x is the kernel size and y is the resulting value for that kernel size. each block would of course be plotted once per x value and one could trace out the path of a single block

  • @claytonharting9899
    @claytonharting9899 21 день тому

    One idea I had was to calculate color volume, for blocks with more than two distinct colors. Essentially placing the colors of the texture in that 3D display space, taking the convex hull of all the points, and then calculating the volume of that. Essentially it’d give an estimate of the perceptual color spread of the texture

    • @gneissname
      @gneissname  21 день тому

      That’s a cool idea. It would distinguish textures that have high contrast but basically two colors, like glazed terracotta from something that has a more diverse palette.

  • @bentzge
    @bentzge 23 дні тому

    I think it would also be interesting to sort the blocks by the maximum slope between neighbouring pixels, basically which blocks have the highest contrast. Also I feel like that you would want to find the median difference of the kernel values and not the average, since the colors are logically not randomly aranged/grouped. I'm not a statistician though so that might just be a feeling.

  • @rawesomeness_
    @rawesomeness_ 22 дні тому

    i was tabbed out listening to your video and i heard the slide and i was like WHAT I THOUGHT AUTOPLAY WAS OF- ohhhh its the same video, WAIT HE PLAYS ULTRAKILL HELL YeAH

  • @dinhero21
    @dinhero21 23 дні тому +1

    you could use local and global noise instead of kernel and block texture since the former is less implementation-specific (and that's generally something you should aim for imo)

  • @MattTOB618
    @MattTOB618 21 день тому

    8:19 Oh hey, that's where I live! Hope you enjoy your visit!

  • @arikarinooooooooo
    @arikarinooooooooo 20 днів тому

    Hm, I feel like the reason why it seems like the blocks with higher noise have higher "kernel noise" is mostly just because the blocks with more noise overall will tend to have more localized noise also, such as with how you're sampling for the value in repeated 5x5 areas.

  • @Reda-Ou
    @Reda-Ou 23 дні тому

    Would be interesting to look at the autocorrelation function across the blocks, maybe even shifted by 50% grey downwards so that 0 is negative while 255 is positive.

  • @sarahstewart4684
    @sarahstewart4684 15 днів тому

    Maybe for some ways to filter you could have a few set blocks (stone, cobblestone, wood, ect) to select to say “blocks more/less noisy than this one. I don’t know if it’s possible to make it so that you can just use any block and it can tell, but having some standard blocks!

  • @_zauy
    @_zauy 23 дні тому

    wow really nice! ❤

  • @christiandevey3898
    @christiandevey3898 21 день тому

    It might be useful to compare the hue of the noise to the hue of the rest of the block (eg. if it's just lighter/darker spots of the main colour vs a different colour. )

  • @QuantumGravy
    @QuantumGravy 22 дні тому

    Maybe it could be interesting to do one where there’s a color wheel disc on the floor representing true unchanging color (representing x and y), and then blocks raise “higher” in Z above their average color to represent noise? It doesn’t represent the two “kinds” of noise you just showed but it’s at least a mix of average noise + color in a way that might be useful for spotting “gaps” in places that could be filled (like if non noisy block of x colors are empty, it would be a good thing to know when making a build, or if one color had lots of similar blocks filling out the noise range, that’s useful for gradients)

    • @gneissname
      @gneissname  22 дні тому

      Yeah that would be interesting and pretty easy to code with what I have already.

  • @emersonlamond1024
    @emersonlamond1024 23 дні тому

    i like to imagine the same analysis, at mojang, new blocks are to be added, artists maybe instructed to remain within a narrow range of these meta metrics

  • @roderik1990
    @roderik1990 23 дні тому

    I think some other options for ways to differentiate textures might just be different weights for luminance and chroma, and perhaps a measure of the variance between pixels, or that same value but starting with blurred images of the textures. (to capture different scales of noise)
    If possible a measure of how structured the noise is would also be amazing. (so like, a brick or plank textures vs gravel) but I'm not so sure how to go about implementing such a measure.
    Something that could be interesting to read up on, is the Structural similarity index measure

    • @gneissname
      @gneissname  23 дні тому

      It would be really cool to have three meaningful measurements so it could be plotted in the dimensions.

  • @kyrius_gm4
    @kyrius_gm4 23 дні тому +6

    Lol whats the deal with the ultrakill bit

    • @gneissname
      @gneissname  23 дні тому +10

      Something a community member did and I just thought it was fun.

  • @ShaggyMummy
    @ShaggyMummy 22 дні тому

    3:39 im not a color specialist either, but the term “Local Contrast” popped into my head, Kinda like edge detection type thing

  • @whtiequillBj
    @whtiequillBj 22 дні тому

    I feel like Hytale may actually release now. Will you be doing similar projects in that game?
    Also have you thought of getting ahold of a builder like Grian or someone to verify the understanding of how color is used in Minecraft builds?

  • @d.l.7416
    @d.l.7416 23 дні тому

    It might be more natural to average the squared distance from the average colour, which is how you'd calculate the variance.
    You could also calculate the covariance matrix to see the correlations between the different colour components, but im not sure how you'd use that.

  • @jdsonical
    @jdsonical 23 дні тому

    dang, bro went absurdist on us

  • @uhrguhrguhrg
    @uhrguhrguhrg 20 днів тому

    I wonder how dynamically placing animated blocks would look
    lava seems to switch between low variance and high variance, so I feel like it would float around the graph a bit