Blender Geometry Nodes Fields Frustum Culling Tutorial

Поделиться
HTML-код
  • Опубликовано: 18 дек 2024

Комментарии • 68

  • @ksheetijsaini
    @ksheetijsaini 2 года назад +11

    This is really good tutorial!
    If you're going to be doing close up shots, the only modification I'll add is instead of treating the grid as a lens, to treat it as a sensor. Which means change the Z-vector in the "Combine XYZ Node" to -0.1 (or smaller) instead of -1 and adjust the grid size accordingly (I ended up using X=0.08m & Y=0.05). This would avoid the grid from intersecting with the plane in close up shots and cutting off those objects (since the plane intersection stops those point rays from reaching the raycast node).

    • @spaceboffin
      @spaceboffin Год назад +1

      Excellent! Thanks for this improvement to an already excellent tut

  • @proband15
    @proband15 Год назад +1

    Ok this is so cool! I'm currently fiddling around with UPBGE (basically a fork of current blender with old blender game engine functionality) and this is propably great to improve performance.

  • @1zymn1
    @1zymn1 Год назад +1

    This is great! I just combined this with we:teach's WINDY GRASS tutorial and now I have a highly optimized wheat field that blows in the wind. It only took my moderate understanding of Geo Nodes to combine them together and it's awesome!

  • @davidedozza
    @davidedozza 2 года назад +9

    Great tutorial, thanks! 👏
    It can also be used for large terrains, like a boolean, but much faster in calculating!
    Just add a "delete geometry" and reverse the "is hit" output! 😉

    • @onnevankenobe
      @onnevankenobe 2 года назад

      How could it be done with a material alpha fading and a threshold to then delete it?

  • @markfong7764
    @markfong7764 Год назад +1

    Excellent tutorial and best method I have seen, thanks

  • @MrBrigadierArchived
    @MrBrigadierArchived Год назад +1

    This tutorial the real gold! Thank you very much!

  • @JAM-h4f
    @JAM-h4f Год назад +1

    What a great tutorial ! This is such a great tool !

  • @spaceboffin
    @spaceboffin Год назад +1

    Fantastic tut, many thanks.

  • @bicukow
    @bicukow 2 года назад +1

    Thank youu, the only one who did it on youtube

  • @theblacksolid_fr
    @theblacksolid_fr 2 года назад +1

    It's funny. I did the same kind of setup last year with Blender 2.9 to manage vegetation and foliage in a very large scale scene. I was a little disappointed when the field based on geometry nodes arrived but now I know how to readapt it, thank you. 😁👍
    Now if you implement automatic orientation on instantiated planes towards the camera in a proxy system with a camera far vanish cut-off you get the same sprite system that saved my life last year.

  • @juliusfucik4011
    @juliusfucik4011 Год назад +1

    Thank you so much. I have been looking for this for a while. I almost got it to work, but the rotations where always off. I just did not understand the ray source being on the right... still does not make sense, but now it works!

  • @onnevankenobe
    @onnevankenobe 2 года назад +1

    Hi Chris, I’ve started following your channel because you explain things really well for slow minds like mine 😂

  • @监听员1379号
    @监听员1379号 Год назад +1

    very good tutorial,thanks!

    • @chrisprenn
      @chrisprenn  Год назад

      thank you, glad you liked it!

  • @vincgordo5861
    @vincgordo5861 Год назад +1

    genius as simple !

  • @Gorgious
    @Gorgious 2 года назад +1

    Awesome and deceptively simple !

  • @salarycat
    @salarycat 2 года назад +1

    Nice tutorial, this is an efficient and easy way to do it!

  • @vladimir-nodes_surfer
    @vladimir-nodes_surfer 2 года назад +1

    Awesome tutorial! Really well explained. Thank you for sharing this useful tool with us!

  • @meldyluova3340
    @meldyluova3340 10 месяцев назад +1

    amazing tutorial, im wondering, how can we optimise it even more as if there is an obstacle like a plane between camera and monkeys, it block the rays and so everything behind obstacle will no appears ?

  • @keldaenenshin3524
    @keldaenenshin3524 4 дня назад +1

    Thanks a lot ^^.

  • @WanerRodrigues
    @WanerRodrigues 2 года назад +2

    Thank you! The graswald3d, creator of G Scatter should use the length clamp on his addon, is a very good one but has false positives in the camera clamping

  • @zapfsaeule2
    @zapfsaeule2 2 года назад +1

    Thanks a lot! I try to get familiar with geometry nodes with your great help :)

  • @atriptoreality
    @atriptoreality 2 года назад +1

    Thank you !

  • @SalTarvitz
    @SalTarvitz 2 года назад +1

    You're brilliant.

  • @WDShorty
    @WDShorty 2 года назад +3

    This is amazing! Thank you so much! Can you do LOD based on distance to the camera next?!

  • @Taki7o7
    @Taki7o7 2 года назад +1

    as always, a great video, thank you so much :)

  • @tcheadriano
    @tcheadriano 2 года назад +2

    Great Tut! What if on the edges istead of just disappear, the instance objects get the scale reduced out of the camera view then disappear? I guess this way the light changing and bounces will be smooth and harder to notice in cycles final render.

  • @TR-707
    @TR-707 Год назад +2

    whats the trick with only selecting/raycasting onto the surface that is visible to the camera. As this setup is right now, you will end up instancing onto geometry that maybe behind surfaces or inside other geometry.

    • @mdmpzero
      @mdmpzero 8 месяцев назад

      Seconding this! I'm trying to figure that out too

  • @mirai1073
    @mirai1073 2 года назад +2

    It was a great Tutorial!
    I do have a question, Is there a way to make it low poly when the distant of your instances far from camera as similar function as adaptive subdivision ?

    • @chrisprenn
      @chrisprenn  2 года назад +1

      you can calc the distance of instace to cam for setting the subdiv levels in GN or to instance a different object all together

    • @mirai1073
      @mirai1073 2 года назад

      @@chrisprenn Alright, Thanks!

    • @vladimir-nodes_surfer
      @vladimir-nodes_surfer 2 года назад

      I am thinking of a smart LOD system to implement in the version 2 of my currently "work in progres" project: The stellar system. What I plan to do is a material/geometry swap based on the percentage of the camera screen occupied by an object, in my case a planet, black hole or star. What I think it will work is bringing the render scene size (the culling plane size) into GN and compare that with the bounding box of the object and then, based on the screen percentage occupied decide on the material/geometry with the proper amount of details.
      I would be curious about what other people think, if they have a better solution.

  • @HeiniGurke
    @HeiniGurke 2 года назад +1

    Hey thanks, this helped me a lot. Really sped up my current project's viewport performance.
    I might have found a slightly cleaner nodesetup. I think rotating the camera location for the set position offset is just recreating the normal of the plane that was just rotated. So I just added a normal input node and scaled it negative something. (Drivers from FOV and sensorsize/-2 and some offset to position... it works fine here)
    Mag deinen Kanal sehr gern. Grüße h

  • @Middlericc
    @Middlericc Год назад +1

    Hi Chris! I have viewed this many many times by now. Really, really useful, thank you a lot! I was wondering tho if there was a way to implement some sort of occlusion culling for proper geometry (not instances) in geometry nodes. Do you know any way or workaround? Again, thank you a lot anyway! :)

    • @chrisprenn
      @chrisprenn  Год назад +1

      = boolean cutting away geometry outside the frustum = yes, possible ;)

  • @markgohl2660
    @markgohl2660 2 года назад +1

    Impressive

  • @goku21youtub
    @goku21youtub 2 года назад

    great stufff! can you make one for dynamic painting in geometry nodes please ?

  • @jordanjardine2458
    @jordanjardine2458 2 года назад

    Thank you for the great tutorial! I noticed that the rays also shoot out from the back of the camera in addition to the front. Any fix for that? still trying to wrap my heads around all these nodes. Lol

  • @aaronguo5128
    @aaronguo5128 2 дня назад

    Is there a way to have a ray blocker in the setup? Say if I have a rock blocking some instances, how do I cull the points behind the rock>

  • @nrdkraft
    @nrdkraft 2 года назад +1

    So I have a question. What if we have a scene with multiple cameras and at some time in the animation we change the shot; switch to a different camera as the active one. Is there a way to make these geometry nodes-instead of only to this specific camera-to automatically concur to any camera that is the active one at any given point in the animation? (As opposed to having to select which camera manually, which it seems isn’t even possible animate anyway.)
    Thank for for your wonderful tutorials my good sir!☺️

    • @vladimir-nodes_surfer
      @vladimir-nodes_surfer 2 года назад

      Although I can not think of an automated GN setup to do what you want, meaning changing the cameras by looking at the camera bindings in the animation timeline, there is a kind of a half manual way to switch cameras in GN nodes:
      Instead of exposing the camera object input into the modifier proprieties, you can build a switch based system inside the GN, that selects different cameras based on an integer number for example. Then you expose that number to the modifier proprieties and animate it to match your camera swapping. That is how I would do it. If anyone has a better method in mind, I would like to know about it.

  • @matiasfuentealba898
    @matiasfuentealba898 Год назад +1

    can you use this concept for the subdivition of a mesh?

  • @dorex2007
    @dorex2007 Год назад +1

    Now that you can do that, is there any way to have a object always point towards the camera? Like a plane with an image on it. So as the camera moves the plane always points to the camera. Thanks a lot

    • @chrisprenn
      @chrisprenn  Год назад +1

      You could always (and still can) do that with a simple "track to" constraint on the plane!

  • @erikpatakcreative
    @erikpatakcreative Год назад +1

    I have a scene where instead of static objects, I'd like to cull a volume of slowly moving particles. I get them to move via tranlsating them along a random axis via the scene time. Unfortunately every time I move the camera, the particles jitter as the rays are being casted from moving particles. I haven't been able to think of a solution to this with both the camera and the instances moving due to where the raycast selects points in the node tree. Any thoughts?

    • @chrisprenn
      @chrisprenn  Год назад

      sounds strange since the node tree is executed once per frame for each point so the raycast node should always knows exactly where to start...

  • @intelteller
    @intelteller Год назад

    Hey,
    Great tutorial! It helped me a lot, but I have a problem. In the shader editor, I had random values on color ramps so my objects would have randomized colors. However, when I applied "culling," the colors of my object started to change every frame. What can I do about that?

    • @chrisprenn
      @chrisprenn  Год назад +1

      Hi, with the geometry nodes setup from the tutorial this should work since we distribute points and only instance to the points inside the field of view. That way, all of the points are always there and always have the same object id and will produce the same random value in the shader. See ruclips.net/video/0-XrdknEA4A/видео.html

    • @intelteller
      @intelteller Год назад

      Thank you! It works! @@chrisprenn

  • @TristanGrimaux
    @TristanGrimaux 2 года назад +1

    Is there a way to know the size of the camera in geometry nodes?

    • @chrisprenn
      @chrisprenn  2 года назад +2

      Maybe by now there is... Haven't blendered for a while - too busy at work 🥺

    • @vladimir-nodes_surfer
      @vladimir-nodes_surfer 2 года назад +1

      There are no dedicated nodes for camera data in GN for now. But you can use drivers to get most if not all of the camera data and the scene size. Just right click on the value that you need and select "Copy as New Driver", then use an value node in GN, right click on the input field and select "Paste Driver". Apart from python, I do not think there is a way to acces this data inside of Geometry Nodes.
      Hope this helps you 😀

    • @TristanGrimaux
      @TristanGrimaux 2 года назад +1

      @@vladimir-nodes_surfer I'll try it! Thanks!!

  • @ilaldkxb
    @ilaldkxb 2 года назад +9

    is your last name bacon

  • @RASTONKAMAZA
    @RASTONKAMAZA 2 года назад

    Sir when we decimate anything in blender for example sphere and if it is already texture and then we decimate this then model texture become break can u solve this issue pls

  • @Geeeuuu
    @Geeeuuu Год назад

    But how to actually cull the geometry instead of hiding geometry, because objects half in half out are still there?

  • @sagarlamichhane543
    @sagarlamichhane543 2 года назад

    it comes behind the camera too. what to do??

    • @chrisprenn
      @chrisprenn  2 года назад

      There's an entire video chapter to fix this in the tutorial, see ruclips.net/video/KoLF99PFLFM/видео.html

  • @genesis2303
    @genesis2303 2 года назад

    If we can parent cam to selected 3 vertices to noise camera so is it possible to make your autofocus setup from AN?
    ruclips.net/video/xaHjIA4Eo_g/видео.html