Novan Byworks
Novan Byworks
  • 7
  • 204 069
How to CORRECTLY use AMBIENT OCCLUSION | Blender Tutorial
I'm here to settle the score on how to use ambient occlusion in Blender CORRECTLY. None are without sin.
Blender Manual - "Shader To RGB":
docs.blender.org/manual/en/latest/render/shader_nodes/converter/shader_to_rgb.html
Blender Stack Exchange post:
blender.stackexchange.com/questions/196400/material-emitting-only-in-dark-parts-of-an-object
ASSETS USED:
Rustic Brick 2:
www.textures.com/download/PBR0359/137144
Coastal Cliff 2:
www.textures.com/download/PBR0848/139504
Tufted Leather:
www.textures.com/download/PBR0208/133245
Hammered Copper:
www.textures.com/download/PBR0188/133227
Wood Trim:
www.textures.com/download/PBR0575/138822
Old Metal (legacy):
www.textures.com/download/Substance0062/128402
Timbered Brick Wall:
www.textures.com/download/PBR0571/138818
SciFi Panels 09:
www.textures.com/download/PBR0950/140627
HDRI Japan Kabuchiko Night:
www.textures.com/download/HDRPanoramas0093/134037
HDRI Faroer Bay A:
www.textures.com/download/HDRPanoramas0192/139754
Earth model by Denis Cliofas:
skfb.ly/6VCKF
มุมมอง: 60 799

วีดีโอ

SOURCE Engine-style TEXTURE BLENDING! | Blender Tutorial
มุมมอง 3Kปีที่แล้ว
A detailed guide on how to realistically blend textures (and build geometry) in Blender in a similar style as Valve's Source engine. Hammer BlendModulate tutorial by TopHATTWaffle: th-cam.com/video/kV8DLgxJv0U/w-d-xo.html Hammer Displacements tutorial by 3kliksphilip: th-cam.com/video/nre432l_OTc/w-d-xo.html Article on similar process in the Unreal Engine: discover.therookies.co/2017/07/14/surv...
Displacement in EEVEE | Blender Tutorial
มุมมอง 23K2 ปีที่แล้ว
A step-by-step guide on how to set up controllable displacement/height maps for EEVEE in Blender. "Blocky Coastal Cliff" material: www.textures.com/download/PBR0848/139504 Curtis Holt's displacement video: th-cam.com/video/TJ_o1_m713w/w-d-xo.html Ben/bbbn18's Gumroad download: bbbn19.gumroad.com/l/WDCRp Lightning Boy Shader video: th-cam.com/video/YdoBJ2lnkks/w-d-xo.html
My Scene (#344) for TOY STORY 2 REDIALED
มุมมอง 110K3 ปีที่แล้ว
Imagine you're on the freeway and you happen to pass an airport baggage truck with nobody but a pile of toys in the driver's seat. My contribution to the "Toy Story 2 Redialed" collaboration. Check out the trailer here: th-cam.com/video/DOL2uOlCUEQ/w-d-xo.html
THE LAST MINUTE | Animated Short
มุมมอง 6623 ปีที่แล้ว
Questionably based on a true story, of which I'm sure many can relate. Made for the Newgrounds "Stay Awake" Summer Animation Jam. This took a lot more out of me than I expected, and I didn't get to do half of the scenes I wanted. I ended up having my own "Last Minute" experience from this. Such is the nature of deadlines. It's good discipline, I suppose. Maybe I'll come back to it later on, but...
MASKING Mouth Gaps | Toon Boom Tutorial
มุมมอง 6K3 ปีที่แล้ว
A super quick explanation for Toon Boom Harmony Advanced on how to mask out a character's face in the gap of their mouth. It's a great cheat for lip-syncing in profile without having to resort to that awful, flounder-faced, side-mouth you see in anime all the time.
MY TALKING DOG!?! | Animated Short
มุมมอง 2153 ปีที่แล้ว
What do you do when your dog you don't even remember having starts talking? Made for the Newgrounds Talking Pet Animation Jam. Originally uploaded on May 4, 2020. www.newgrounds.com/portal/view/754299 novanbyworks.newgrounds.com/

ความคิดเห็น

  • @zakinaufal8155
    @zakinaufal8155 7 วันที่ผ่านมา

    wow this is really a great tutorial, thank you so much!

  • @no-lifenoah7861
    @no-lifenoah7861 15 วันที่ผ่านมา

    The righteous fury of knowing that other people on the internet are wrong came through beautifully here.

  • @blackplague9594
    @blackplague9594 21 วันที่ผ่านมา

    think you need to talk abit slower buddy, i thought i talked fast but having to slow down a video to understand is not good lol

    • @NovanByworks
      @NovanByworks 20 วันที่ผ่านมา

      You're not the only one, so I will take this into consideration for future videos. At least for this one, subtitles are available if that helps.

  • @sur-vfx
    @sur-vfx 28 วันที่ผ่านมา

    againandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainandagainand

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

    this is fantastic...now how would you use it in Redshift... 🤣🤣🤣

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

    Followed every instruction and it made the design less realistic

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

    why did you not change the ao map from srgb to non color?

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

      Since the AO map is being multiplied over the diffuse map, it gets treated as a regular color layer rather than non-color data.

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

    Great info. Thanks.

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

    basiclly use 1-NdotL to multiply the AO map right?

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

      This would be the ideal solution, but Blender sadly doesn't allow using light direction in shaders for some reason.

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

    0:57 LOL

  • @jimmyrochette7536
    @jimmyrochette7536 4 หลายเดือนก่อน

    I am trying to make a moss texture and wanted the moss not to feel flat and i am using a pretty old computer so eevee seem the best option specially since i want to preview my material without the need to render it make adjusting the material also alot easier without having to denoise. So i just want to say thank you i will be try this soon. Hopefully i wont have to many material that need such treatment.

  • @TheCarmenStar
    @TheCarmenStar 4 หลายเดือนก่อน

    How'd you get the little image previews above your nodes? :0

    • @NovanByworks
      @NovanByworks 4 หลายเดือนก่อน

      It's an add-on called "Node Preview". It's a tad pricey but very useful. You can buy it here: blendermarket.com/products/node-preview

  • @gamesbyaaron
    @gamesbyaaron 4 หลายเดือนก่อน

    The texture blending is nice and all (actually amazing), but those add-ons are really gonna help me out

  • @andrewscott985
    @andrewscott985 5 หลายเดือนก่อน

    _This is a joke._ _These guys are cool . . ._ for a short time after you pull them out of a freezer. Again and ag . . . Nah, srsly, they cool. P.S. The slaps you thown . . . I . . . felt them like it was me who shouted again and again how to incorectly use the Ambeyond Conclusion.

  • @AlexHutchingsOfficial
    @AlexHutchingsOfficial 6 หลายเดือนก่อน

    Nice video, but please slow it down. I can barely see what you're doing without slowing the video down or going back a bunch of times

    • @NovanByworks
      @NovanByworks 6 หลายเดือนก่อน

      I like to edit for a brisk pace to keep things succinct. You can turn on subtitles and/or change the video speed if you need.

  • @lakrimozzza8312
    @lakrimozzza8312 6 หลายเดือนก่อน

    Tried it for cycles. I added layer "solidrender" and cant find it in "override". I don't understand what i did wrong

    • @NovanByworks
      @NovanByworks 6 หลายเดือนก่อน

      While in the "SolidRender" view layer, create a blank white diffuse material and set that to the override. This will make everything use this material when the layer is rendered so it will only show AO and lighting. This layer then gets multiplied on top of the original Scene layer in the compositor.

    • @lakrimozzza8312
      @lakrimozzza8312 6 หลายเดือนก่อน

      Thank you! 😊@@NovanByworks

  • @joepeezly
    @joepeezly 6 หลายเดือนก่อน

    Great trick. I understand the steps, but why does it work? It's basically killing the AO map under direct light - how does a diffuse shader to rgb in the mix do that? What? Great video, but this is one of my complaints about a LOT of online tutorials: they go through the right steps, but don't always explain the what's and whys. So I don't learn them, just what options to click.

    • @NovanByworks
      @NovanByworks 6 หลายเดือนก่อน

      I quickly glossed over it in the video, but ambient occlusion simply refers to the occlusion of ambient light, also known as "indirect light". It's the natural shadows exhibited by creases and cavities that ambient light cannot reach (think of an overcast day). When a direct source of light is shone on them, these shadows disappear. "Shader To RGB" effectively exposes the raw color data of a BSDF shader, i.e. what's lit and what's not. Thus we can use this data like a mask to control what parts of an AO map are revealed under direct light and what parts are not. Normally AO occurs naturally in path-traced rendering such as with Cycles, but game engines use pre-baked AO maps to save on performance for real-time rendering. EEVEE is also real-time but lacks that same support for AO maps, so we use Shader To RGB instead. The tradeoff is that this disables screen space reflections and subsurface scattering. Until Blender adds real AO map support, this is my interim solution.

    • @joepeezly
      @joepeezly 6 หลายเดือนก่อน

      Nice, thanks for the reply! So it's really about "reverting" back to the pure color of the shader, which emulates the effect of being in direct light. I totally get it, thanks again.@@NovanByworks

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

    very nice

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

    I wanna go home

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

    Great video, thank you

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

    Awesome tutorial. I can already think of some cases where this would be useful for my blender stuff.

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

    Clarence?

  • @DominikWysocki-ml2he
    @DominikWysocki-ml2he 7 หลายเดือนก่อน

    I get crossed eyed when using Blender's nodes. Seriously, I'm amazed at how people remember or simply know what the hell to do when you connect this to that to this.

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

      Part of it is practice, but it helps to know what each node actually does. It's a little outdated, but I recommend Daniel Krafft's video covering them here: th-cam.com/video/cQ0qtcSymDI/w-d-xo.html It's also good to refer to the official Blender docs for anything confusing. They should give you a good idea of how things work and what you're allowed to do, such as which nodes work in Cycles or EEVEE.

  • @jknMEMES
    @jknMEMES 8 หลายเดือนก่อน

    There is no "solid render layer", you lying.

    • @NovanByworks
      @NovanByworks 8 หลายเดือนก่อน

      At 3:22, you can see me create a new View Layer named, "SolidRender".

  • @sanketvaria9734
    @sanketvaria9734 8 หลายเดือนก่อน

    I always knew this so I resorted to never use thinking that AO might be a technique for old times when Raytracing wasn't as efficient and PC's weren't strong so they faked GI using AO. Hence why also used in games. So basically AO is indeed in genuine use, just that it is being wrongly used by everyone.

  • @PranayVaidya007
    @PranayVaidya007 8 หลายเดือนก่อน

    Can you make a vid on portal light property in area light

    • @NovanByworks
      @NovanByworks 8 หลายเดือนก่อน

      I'm not familiar with that as I typically work in EEVEE. It's a little outdated, but this seems like a pretty good explanation: blender.stackexchange.com/a/33877/66794

  • @namemanu
    @namemanu 8 หลายเดือนก่อน

    I am learning how to create cs2 skins and that glow in the dark effect seems really interesting to apply in the game. Would you make a detailed tutorial about how can you achieve this effect and how to bake the occlusion sheet?

    • @NovanByworks
      @NovanByworks 8 หลายเดือนก่อน

      To create the glow/light effect, you just use the same setup for an emissive map rather than the AO map. As for the "occlusion sheet", I'm not sure I understand what you're referring to. Your material should already have an ambient occlusion map, and if not, you either have to make one in an image editor or bake it from actual geometry.

  • @BlenderRenaissance
    @BlenderRenaissance 8 หลายเดือนก่อน

    Make more tutorials. You have a unique appeal that will get you far.

  • @Charles-ww7nk
    @Charles-ww7nk 8 หลายเดือนก่อน

    Looks close but not exactly how the source engine does it. What they do is take the blend modulate value from the texture, then add and subtract a "sharpness" value from it (for example 0.5), which gives a min and max value. They then clamp these from 0 to 1. Next they feed the input alpha from the vertices to a smoothstep function (map range in blender) with the edges being the min and max value from above. This is used as the lerp between the 2 color textures.

    • @NovanByworks
      @NovanByworks 8 หลายเดือนก่อน

      Interesting. The problem is there isn't a lot of accessible documentation for this feature. My method is basically an approximation that could be built off of, since nobody else seems to have done something similar.

    • @humanharddrive1
      @humanharddrive1 4 หลายเดือนก่อน

      how do you know all that 😭

  • @Infinitydev-lh2bo
    @Infinitydev-lh2bo 8 หลายเดือนก่อน

    This is an awesome tutorial! Very helpful! Although, I can get displacement to show up in the viewport for Eevee, I can't get it to show up in the final render. Would you have any advice as to why?

    • @NovanByworks
      @NovanByworks 8 หลายเดือนก่อน

      Only things I can think of are to check that the modifier has 'Render' visibility enabled and that the Subdivision modifier has render set higher than 0.

    • @Infinitydev-lh2bo
      @Infinitydev-lh2bo 8 หลายเดือนก่อน

      @@NovanByworks oh damn that would’ve been a good idea, I applied the modifiers because it was just a quick little afternoon project and that got working. But the next time I open blender I’ll see if that’s checked. Also, thank you so much, a million times for taking the time to answer the question, you’re awesome.

    • @NovanByworks
      @NovanByworks 8 หลายเดือนก่อน

      @@Infinitydev-lh2bo Happy to help! It's a good rule of thumb to keep modifiers when possible to maintain a non-destructive workflow. Plus setting ones like Subdivision and Displacement to render-only helps improve performance.

  • @bUildYT
    @bUildYT 8 หลายเดือนก่อน

    i dont understand the need of the empty, just subdivide the plane, then disp mod with texture, done

    • @NovanByworks
      @NovanByworks 8 หลายเดือนก่อน

      The empty allows you to control the offset of the displacement texture, since it can't be done through the shader editor.

    • @bUildYT
      @bUildYT 8 หลายเดือนก่อน

      @@NovanByworks yea, as uve perfectly shown in the video (great video, well done!) Just imagine it a bit complicated and weard later having 50 objects, all with emty controllers and stuff... hopefully eevee next will make it more intuitive and easier...

    • @NovanByworks
      @NovanByworks 8 หลายเดือนก่อน

      @@bUildYT I agree, it is needlessly cumbersome. That's why I originally made the video since I could use it as reference for myself, lol. Last I heard, EEVEE Next will be introduced in 4.1, so it should be very soon. They are currently aiming for March 19 this year.

  • @IridiumZero
    @IridiumZero 9 หลายเดือนก่อน

    99% of blender youtubers are just affiliate marketers. They don't know anything beyond the surface level.

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

      not at all. most of them are just repurposing the AO node to make a quick dirt/grime/dust mask. it has nothing to do with light.

  • @arturkadirov9280
    @arturkadirov9280 9 หลายเดือนก่อน

    !!!!!!

  • @nathanieloakleaves5789
    @nathanieloakleaves5789 10 หลายเดือนก่อน

    "I'm here to settle the score on how to use ambient occlusion in Blender CORRECTLY. None are without sin." Yuck, why do male artist always talk like they have a stick up their ass and pretentious af? No wonder people are flocking to AI art. They probably don't want to deal with btchy, try-hard, tw*ts like you lol. So fcking annoying.

    • @theslicefactor4590
      @theslicefactor4590 9 หลายเดือนก่อน

      People flocking to AI art are lazy and only care for receiving praise and attention rather than actually learning and creating something themselves.

  • @arbiter8246
    @arbiter8246 10 หลายเดือนก่อน

    I'm so confused. Ima go back and make a second cube.

  • @gabrielzim212
    @gabrielzim212 10 หลายเดือนก่อน

    my hero

  • @jermesastudio
    @jermesastudio 10 หลายเดือนก่อน

    Thank you for sharing this. It really help me while working on my commercial projects

  • @mr.hashundredsofprivatepla3711
    @mr.hashundredsofprivatepla3711 10 หลายเดือนก่อน

    1:21 “You might as well just merge the AO map into the albedo map to save yourself the extra draw call.” I thought a draw call was just an instance of a mesh or an instance of a material applied to one? I don’t have that much experience in draw calls, so any of us could be wrong, but I’m open to learning more.

    • @NovanByworks
      @NovanByworks 10 หลายเดือนก่อน

      Best I can tell, it depends on the rendering engine itself. This might not actually be true for EEVEE, but uselessly rendering the AO on top of the albedo is still less performant than just merging them into the same image. Game engine shaders tend to separate the AO map because of the way it's supposed to react to light, which may result in an extra draw call depending on the shader model used.

  • @npip99
    @npip99 10 หลายเดือนก่อน

    FULLY CORRECT SEEN BELOW! ~ Writing in caps here because I'm trying to solve this issue, and this YT video gave me what I needed to solve it (Shader -> RGB), but the solution given wasn't working in all cases for me. Here is the correct math that works across many PBRs that I tested: Starting Configuration: Textures => Principled BSDF -> Shader Output Here's what you will do (Probably putting this all in a Shader Group), - Take the Ambient Occlusion, and multiply it with albedo (Call this node NODE_Z). Then, take the Metal texture, invert it, and multiply with NODE_Z to get NODE_Y. - Then, add Principled BSDF -> Shader to RGB; VectorAdd this result with NODE_Y, and connect the output of this VectorAdd to your Shader Output. This now _adds_ ambient lighting (The YT tutorial doesn't actually brighten up the texture, it only darkens, which is incorrect); and, it works correctly on textures with metal in them (This YT tutorial breaks on any texture with metallicity). You can also multiply Ambient Occlusion with any number (1, 2, 3, 4) to match the "Ambient Light" setting in your game engine (UE, Unity, Godot), and the result should match 1:1 with the game engine. This adjusts the intensity of the ambient light. You even multiply by a color to give the ambient light a tint. Overall, the formula is this: ambient_light = ambient_intensity * ambient_tint * ambient_occlusion; // intensity is a float, the other two are vector3's ambient_light *= albedo; ambient_light *= 1 - metallic; BSDF_RGB += ambient_light; // If you have a PBR without an AO map, set ambient_occlusion = vector3(1,1,1), so that lighting is still equal across all PBRs in the scene. Hope this helps!

  • @Kimera_Alternate_Realities
    @Kimera_Alternate_Realities 10 หลายเดือนก่อน

    Alexa: How do I permanently engrave this information on my brain?

  • @devotae
    @devotae 11 หลายเดือนก่อน

    wow more of these vids please!! EVERYDAY LESSONS lol lol I tried this and it didn't work, missing something basic I think. Also, love how you explain what an AO is, i mean.. i knew that... or did i??? how does sheen and specular work??? as a fabric artist I need to know these things =D ytytyt for the videos

  • @wuhfails9736
    @wuhfails9736 11 หลายเดือนก่อน

    this only works for eevee?

    • @NovanByworks
      @NovanByworks 11 หลายเดือนก่อน

      Yes, specifically "Shader to RGB" is exclusive to EEVEE.

    • @wuhfails9736
      @wuhfails9736 11 หลายเดือนก่อน

      I need AO in cycles :(@@NovanByworks

  • @artemsh6302
    @artemsh6302 11 หลายเดือนก่อน

    I tried to conduct experiments and I got the impression that this does not always work. The Ambient Occlusion node works more stable than Diffusion + Shader to RGB. 🤔

    • @NovanByworks
      @NovanByworks 11 หลายเดือนก่อน

      The issue is that the AO node doesn't take light direction into account or allow you to use pre-baked AO maps.

    • @artemsh6302
      @artemsh6302 11 หลายเดือนก่อน

      @@NovanByworks Agree. It makes sense. Then it might be worth combining both approaches. Since the AO node also has its advantages.

  • @maksymriabov1356
    @maksymriabov1356 11 หลายเดือนก่อน

    are you 1.5xing your voice? it feels way to fast...

    • @NovanByworks
      @NovanByworks 11 หลายเดือนก่อน

      I've included subtitles and you can change the video speed.

  • @sonickles_
    @sonickles_ 11 หลายเดือนก่อน

    thank you

  • @red4666
    @red4666 11 หลายเดือนก่อน

    i don't think this is correct. you are not supposed to bake in any lighting information in your diffuse. that's not the way pbr works. the principled bsdf should have its own dedicated ao input.

    • @NovanByworks
      @NovanByworks 11 หลายเดือนก่อน

      Correct, which is why I was basically joking about that. This whole setup is just a stopgap until Blender adds AO support to the Principled BSDF (assuming they ever do).

  • @Tatsumi7886
    @Tatsumi7886 ปีที่แล้ว

    Soooo, lets just say that I have a character and a point light, after seeing this video I understand that the more illuminated sides of said character Will have less AO while the lessers Will have more? Would that be correct? (This may be a dumb question but It would help me xD)

  • @alexandergolubev6358
    @alexandergolubev6358 ปีที่แล้ว

    Bullshit. AO should be visible all the time for scan data. It is only for small gaps light has problems to propagate. All the time, regardless of intencity or size.

  • @Cha14ka
    @Cha14ka ปีที่แล้ว

    Gosh, thanks for the Dream UV. It was hell to use Blender after Hammer Editor

  • @rjwh67220
    @rjwh67220 ปีที่แล้ว

    Wrong wrong wrong! Calm down, dude, you’re going to give me a stroke! PS: Great vid!