normal map for pixel art

แชร์
ฝัง
  • เผยแพร่เมื่อ 22 พ.ย. 2024

ความคิดเห็น • 104

  • @ryo-kai8587
    @ryo-kai8587 3 หลายเดือนก่อน +134

    Okay, so not only is the concept and execution immediately cool, but realizing I'm listening to an 8-bit version of Persona 5's Beneath the Mask just made it even better

    • @nobuarte
      @nobuarte  3 หลายเดือนก่อน +6

      the work @lumena-tan did on this version is amazing ☕

  • @Dylan-my8dt
    @Dylan-my8dt 6 หลายเดือนก่อน +86

    This is such a gem of a tutorial

  • @duotwix
    @duotwix 3 หลายเดือนก่อน +7

    I have been adding normals to my 3D pixel art game and man it looks so nice

    • @nobuarte
      @nobuarte  3 หลายเดือนก่อน

      Add a little pizzazz

  • @b4dsku11
    @b4dsku11 3 หลายเดือนก่อน +13

    hand painting a normal map is madness, I love it

    • @RePorpoised
      @RePorpoised 2 หลายเดือนก่อน

      but the results are SOOOOOO glorious.

  • @CobraCode
    @CobraCode 2 หลายเดือนก่อน +1

    Amazing breakdown!
    I've played around with automatic normal map generators, but as you've mentioned the results are often not that great.
    Drawing them by hand seemed really daunting, but this makes it seem achievable with some time and effort.

  • @roboj05
    @roboj05 3 หลายเดือนก่อน +59

    One tip I would like to add:
    If you absolutely *need* to go in-between the colors of the palette or beyond, have the RGB color picker up.
    Adjusting R will adjust the horizontal direction of the normal, and adjusting G will adjust the vertical direction of the normal.
    The value 127 serves as a center value ([127,127,255] is the middle color in the palette), zero is far left/down, and 255 is far right/up.
    I do not recommend adjusting B unless you know what you're doing. Remember to keep a balanced and consistent level of detail.

    • @stekeln
      @stekeln 3 หลายเดือนก่อน +9

      If anyone really wants to know how to calculate the blue channel B from the red and green channels R and G:
      r = (R - 127.5) / 127.5
      g = (G - 127.5) / 127.5
      R and G are from 0 to 255 while r and g are from -1 to 1.
      L = sqrt(r² + g²)
      If L is greater than 1, divide r and g respectively by L (these will be their new values) and recalculate L (which will be 1).
      b = sqrt(1 - L²)
      B = round(b × 127.5 + 127.5)
      That is your value for B. And in case you had to recalculate r and g, you also need to recalculate R and G:
      R = round(r × 127.5 + 127.5)
      G = round(g × 127.5 + 127.5)

  • @nikhil22bhardwaj
    @nikhil22bhardwaj 3 หลายเดือนก่อน +27

    Once you get to watch how a 7 second animation is made, you feel immense respect for the artist. I certainly do. People usually scroll away from a "cool" animation and don't realize how much effort was put into it.
    Someday I hope to make something like this on my own.
    Bravo, my friend!!

  • @MaksLangerd
    @MaksLangerd 3 หลายเดือนก่อน +4

    i was thinking about normal maps for pixel art for some time but Your video showed this method the best way possible. Amazing, simple and very informative video

    • @nobuarte
      @nobuarte  3 หลายเดือนก่อน

      thank u 🤍

  • @bitnewt
    @bitnewt 3 หลายเดือนก่อน +15

    If you need to create your own normal map palette, Aseprite has a normal map colour wheel: press the button with three lines above the palette, then choose the normal map colour wheel to switch to it. Normal maps are so cool! It looks like magic!

    • @bloo_ya
      @bloo_ya 3 หลายเดือนก่อน +1

      Aseprite*

  • @wolderado
    @wolderado 7 หลายเดือนก่อน +1

    Hey thanks a lot for this! I've been puzzled by normal maps on pixel art for years

    • @nobuarte
      @nobuarte  7 หลายเดือนก่อน

      i'm glad its helpfull ☕

  • @sanebag
    @sanebag 3 หลายเดือนก่อน +11

    legitimately one of the best pixel art i've seen.

  • @cakter22
    @cakter22 8 หลายเดือนก่อน +2

    Great work, this will be very useful

    • @nobuarte
      @nobuarte  8 หลายเดือนก่อน +1

      tysm 🤍 if you need help, just let me know

  • @borb5353
    @borb5353 3 หลายเดือนก่อน +16

    this is the coolest shit ever

  • @AllExistence
    @AllExistence 3 หลายเดือนก่อน +11

    Here's the trick for ya:
    Draw 3 b/w layers over the image:
    1. Lit from the right
    2. Lit from the top.
    3. Lit from the front.
    Multiply them by Red, Green and Blue respectively.
    Blend (Add) together. Set bg as that bluish bg color.(0.5R,0.5G,1.0B)
    The combination is your normal map.

    • @KryyssTV
      @KryyssTV 3 หลายเดือนก่อน +1

      Could this be perhaps done if sprites are being generated from a 3D model in Blender? I'm thinking that perhaps rendering a mesh with a pure white material with lights placed as you suggest to create three normal mapped sprite sheets which are then blended into one using GIMP.

    • @AllExistence
      @AllExistence 3 หลายเดือนก่อน +2

      @@KryyssTV It would be stupid. In 3d you can simply export the normal pass.

    • @sampruden6684
      @sampruden6684 3 หลายเดือนก่อน +1

      @@AllExistence Actually it's a pretty good trick to capture self shadowing. Note how the video's result doesn't have the screen left inside of the jacket catch the light coming from screen right. A pure normal map export and quantisation wouldn't get that shadowing, but a normal map generated from lighting would. Technically at that point you probably don't want normalised normals, but that's getting into the weeds.

    • @KryyssTV
      @KryyssTV 3 หลายเดือนก่อน +1

      @@AllExistence Not sure if the process of making the sprite sheet will support that but it's worth a look.

    • @AllExistence
      @AllExistence 3 หลายเดือนก่อน

      @@sampruden6684 No, that's wrong. He painted it by hand, of course he forgot about self shadowing. But, yeah, light will help.

  • @kerrermanisNL
    @kerrermanisNL 3 หลายเดือนก่อน +2

    Damn, really impressive

  • @rakusho1691
    @rakusho1691 7 หลายเดือนก่อน +7

    I love how I search for something very specific when making my game and now everyone is giving me updated tutorials. Keep up the awesome work 👌

  • @speggeri90
    @speggeri90 2 หลายเดือนก่อน

    I find this actually helpful. It's a great idea to simplify the normal map to such a simple palette. Gonna actually give it a go.

  • @Puunboy
    @Puunboy 7 หลายเดือนก่อน +1

    This is so amazing and inspiring! Thank you.

    • @nobuarte
      @nobuarte  7 หลายเดือนก่อน

      i'm happy to hear that, tysm

  • @leonoliveira8652
    @leonoliveira8652 3 หลายเดือนก่อน +2

    This is SO interesting, and helps me make sense on how this works. Simplifying it to 8-9 colors for pixel art is genius

  • @ipaqmaster
    @ipaqmaster 3 หลายเดือนก่อน +1

    It's incredible how much that does for the lighting even with 2d assets in 3d space. Beautiful.

  • @RyanGatts
    @RyanGatts 3 หลายเดือนก่อน

    oh it's nice to see how someone else thinks through handling restricting the palette of normals :D

  • @scififrenchfry
    @scififrenchfry 6 หลายเดือนก่อน +3

    Thank you so much. This is a much more approachable way to make normal maps rather than having auto generated ones or just eyeballing it until it looks okay. I will definitely make use of this in my game

  • @rober1227
    @rober1227 7 หลายเดือนก่อน +1

    estava precisando MUITO deste tutorial

    • @nobuarte
      @nobuarte  7 หลายเดือนก่อน

      que bom que foi útil

  • @06howea1
    @06howea1 3 หลายเดือนก่อน +1

    cool video

  • @justjoe6614
    @justjoe6614 3 หลายเดือนก่อน +1

    Might try using Substance painter to help streamline this process! you can paint with height and make even more detailed normals for your artwork!

    • @billmore6486
      @billmore6486 3 หลายเดือนก่อน

      isn't that a 3d program?

    • @nobuarte
      @nobuarte  3 หลายเดือนก่อน

      it would be interesting to find a way to make this process easier

  • @heregumi
    @heregumi 8 หลายเดือนก่อน +2

    subscribed :) you're doing great!

    • @nobuarte
      @nobuarte  7 หลายเดือนก่อน

      thank you ☕🤍

  • @rogercruz1547
    @rogercruz1547 3 หลายเดือนก่อน

    Tutorial perfeito. Agora eu entendo como as cores dos normal maps funcionam (não só para pixel art).

  • @lagcity09
    @lagcity09 7 หลายเดือนก่อน +1

    Awasome :o

    • @nobuarte
      @nobuarte  7 หลายเดือนก่อน

      tysm ☕

  • @unbuilttreeroots5763
    @unbuilttreeroots5763 3 หลายเดือนก่อน +1

    Insanely underrated. Please keep making pixel art tutorials and other videos.

    • @nobuarte
      @nobuarte  3 หลายเดือนก่อน

      i'll definitely do that, i'm working on the next video, tysm ♥

  • @MathewSan_
    @MathewSan_ 3 หลายเดือนก่อน +1

    Nice 👍

  • @ecosdigitais
    @ecosdigitais 7 หลายเดือนก่อน +3

    This remember me the game "CLOUDPUNK" because the atmosphere. Amazing job !! Greetings from Brazil !

    • @nobuarte
      @nobuarte  7 หลายเดือนก่อน +3

      valeu é nois que voa

  • @luipy
    @luipy 3 หลายเดือนก่อน

    I need so hard this as a background gif

  • @depiipo123
    @depiipo123 7 หลายเดือนก่อน +1

    thank you!

    • @nobuarte
      @nobuarte  7 หลายเดือนก่อน +1

  • @thelaw3536
    @thelaw3536 3 หลายเดือนก่อน +1

    Amazing production quality. Good use of your skillset and nice ascetic fit. Makes it clear how much work pixel art is though.

    • @nobuarte
      @nobuarte  3 หลายเดือนก่อน

      TYSM

  • @pacobarbosa6077
    @pacobarbosa6077 6 หลายเดือนก่อน +2

    damn this video came in clutch, started making lighting for my pixel art game today and dynamic lighting using normal maps looks awesome, thank you for this tutorial!

  • @Mik-kv8xx
    @Mik-kv8xx 2 หลายเดือนก่อน

    Godlike tutorial you deserve 1m subs

  • @Engoneer
    @Engoneer 3 หลายเดือนก่อน +1

    This would be awesome in a game engine

    • @bloo_ya
      @bloo_ya 3 หลายเดือนก่อน

      It's in Godot 4

  • @tinyeragon7132
    @tinyeragon7132 3 หลายเดือนก่อน +1

    thank you so much!! its such a clear explanation

  • @blenderokay
    @blenderokay 3 หลายเดือนก่อน

    Как же это круто, вы талантливы ))

  • @SirNightmareFuel
    @SirNightmareFuel 3 หลายเดือนก่อน +3

    You deserve a like for the banger of a music selection alone. 😎👍

  • @Doug_Fany
    @Doug_Fany 3 หลายเดือนก่อน

    This the exact style I want to make my game, I just hope to actually make a game one day....

  • @FoxyOfJungle
    @FoxyOfJungle 3 หลายเดือนก่อน +1

    Really nice video!!!

  • @olofgmd
    @olofgmd 3 หลายเดือนก่อน +1

    What a fuckin genious, how you minded for normal map in pixel art? Its adorable ❤

    • @nobuarte
      @nobuarte  3 หลายเดือนก่อน

      i was inspired years ago by games like The Last Night and Replaced. They blend pixel art with normal maps too. btw TYSM

  • @21CenturyBreakdownX
    @21CenturyBreakdownX 2 หลายเดือนก่อน

    Very neat. I wonder if, since there is logic to the methodology, if it could be scripted to automate the process somewhat.

  • @massimodeantonis7206
    @massimodeantonis7206 3 หลายเดือนก่อน

    LOVE IT MAN

  • @joedover302
    @joedover302 3 หลายเดือนก่อน

    (apologies in advance for the comedically long paragraph, i may have gotten ahead of myself.. still deserved tho)
    this is so insanely cool and brought normal maps from “eh i’ll probably do that eventually for a gimmick when i improve enough” to “hell yeah i wanna get good enough to start using this stuff more often” for me. as a pixel artist for.. about a year i think? i’m genuinely flabbergasted by how much potential this medium has for Cool Shit™️ and am glad the community has people like you to make guides like this public. god knows how you have under 1k subscribers but i’m sure you’ll grow a following sooner rather than later.

  • @rodriggrrr9788
    @rodriggrrr9788 3 หลายเดือนก่อน

    simplesmente sensacional meu mano!!

  • @GTGTRIK
    @GTGTRIK 3 หลายเดือนก่อน +1

    That's an interesting approach!

  • @CrowSpaceboy
    @CrowSpaceboy 3 หลายเดือนก่อน

    i want to play as your robot detective man. i'm sure i'll eventually study this tutorial, too

  • @quelmnossfe
    @quelmnossfe 3 หลายเดือนก่อน

    Thanks for sharing!

  • @Toybox_blue
    @Toybox_blue 3 หลายเดือนก่อน +1

    This is insanely good! Could you consider doing a video on how to effectively use a small color palette? I wanna try and make my own normal maps but ill probably screw them up, lol

  • @GabrielGABFonseca
    @GabrielGABFonseca 3 หลายเดือนก่อน +5

    Is- is this what happens when one uses 100% of their brain...?

  • @bronsk3809
    @bronsk3809 6 หลายเดือนก่อน +1

    Holy shit. Amazing.

  • @PHAS71
    @PHAS71 3 หลายเดือนก่อน

    POG

  • @MooseMan
    @MooseMan 4 หลายเดือนก่อน +1

    THIS!
    I have been trying to build myself an art style for a simple 2d platformer i'm working on in godot.
    Trouble is 2D and normal maps have some unwanted effects.
    I'm gonna jump right in and try adding my art as sprites on a 3d plane to see if this works.
    Thanks for the insight

  • @pacobarbosa6077
    @pacobarbosa6077 6 หลายเดือนก่อน +1

    muito obrigadooo!!!

  • @timmorrow1
    @timmorrow1 3 หลายเดือนก่อน +1

    this is super sweet tutorial!. Ton of work for animated sprites but I think it's worth it for the results in the end. Not related to the tutorial but I am curious about how you did the wind on the leaves. Is that hand animated? or was there some other technique

    • @nobuarte
      @nobuarte  3 หลายเดือนก่อน +1

      thanks ☕ about the tree animations i made in after effecters, there is an old tutorial by art of sullivain that explains about it, here it is: www.artstation.com/artwork/qyKrn
      I followed the same logic with an extra layer for the normal map to have interaction with the light on the tree too

    • @timmorrow1
      @timmorrow1 3 หลายเดือนก่อน +1

      @@nobuarte thankyou!! That's really helpful!!

  • @KryyssTV
    @KryyssTV 3 หลายเดือนก่อน +1

    Surely this could be automated with some kind of plug-in for something like GIMP to avoid how it'd be impractical to manually edit over 800 frames of sprite animation on a typical character.

    • @Whalester
      @Whalester 3 หลายเดือนก่อน

      yeah, I was thinking that too

    • @nobuarte
      @nobuarte  3 หลายเดือนก่อน +1

      You can apply animation logic methods to normals in this case too. For example, in very fast frames, you don't need such detailed outlines. In some cases, you can just use the volumes and test with less detail. Normal maps are an extra step, they're worth the effort for characters with more screen time, unlike NPCs, for example

  • @darkwraithcovenantindustries
    @darkwraithcovenantindustries 3 หลายเดือนก่อน

    Very cool vid! What if we wanted to do it with a non pixel art 2d game, where the sprites are hand drawn like in Hollow Knight?

  • @computer_dude
    @computer_dude 3 หลายเดือนก่อน +1

    "personagem"??? "iluminação"??????????????? *BRASIL-SIL-SIL-SIL*
    nmrl, bom tutorial 👍não faço pixel art, mas é interessante ver como as pessoas fazem arte (e to tentando aprender blender em geral, ent isso já ajuda um pouco)

    • @nobuarte
      @nobuarte  3 หลายเดือนก่อน

      Valeu , futuramente eu devo abordar alguns detalhes sobre o blender, mas abordando de uma forma mais geral que dê pra ser aplicavel independente do software que é usado tlgd

  • @THG_
    @THG_ 3 หลายเดือนก่อน +2

    Is generating normal maps from height maps possible instead or does it not give good quality for pixel art?

    • @nobuarte
      @nobuarte  3 หลายเดือนก่อน +1

      If the height maps have a smooth gradient I believe it would generate the same automated normal map generators as at the beginning of the video, i think boundingboxsoftware can do that but cant try by myself on macOs

  • @laurabenham4583
    @laurabenham4583 3 หลายเดือนก่อน

    this is why ai cannot be a replacement for human artists. when is it gonna make something like this!?

  • @hasanshafy_
    @hasanshafy_ 3 หลายเดือนก่อน +1

    Are you using aseprite importer? To constantly get the results?

    • @nobuarte
      @nobuarte  3 หลายเดือนก่อน +1

      just saving in png, and for animations png sequence since some software does not accept sprite sheet, blender with some plugins instantly updates the change when you save from aseprite

  • @travis391
    @travis391 4 หลายเดือนก่อน +1

    Is there a way to automate this process?

    • @naiknaik8812
      @naiknaik8812 3 หลายเดือนก่อน

      as they showed the automatic ones prolly wont look as good

  • @Razumen
    @Razumen 3 หลายเดือนก่อน

    Very cool, but doesn't seem like a sustainable workflow for many sprite with animations to boot.

  • @willd2609
    @willd2609 7 หลายเดือนก่อน +1

    Insta sub ❤️

    • @nobuarte
      @nobuarte  7 หลายเดือนก่อน

      tysm!! ❤

  • @alexmerqury
    @alexmerqury 3 หลายเดือนก่อน

    Это выглядит просто охуенно! 🥰

  • @CRT_YT
    @CRT_YT 3 หลายเดือนก่อน

    this looks like a horrible, time consuming and boring process

  • @chipwiseman2
    @chipwiseman2 3 หลายเดือนก่อน

    I wonder if you could go a step further and make an "occlusion map" to catch those areas like the inside of the jacket that should have light blocked from certain directions, even if their normal logically points that way?