ไม่สามารถเล่นวิดีโอนี้
ขออภัยในความไม่สะดวก

UE4 - Niagara Export Particle Data to Blueprint - Collision

แชร์
ฝัง
  • เผยแพร่เมื่อ 12 ส.ค. 2024
  • In this video we'll talk about Exporting Particle Data from our particles systems to use in our blueprints for Niagara in UE4.
    UE4 Playlist: • Unreal Engine 4
    Unreal Website: www.unrealengine.com
    Chapters:
    0:00 Intro
    0:31 Setup
    1:38 Niagara System Collision Test
    2:00 Niagara System Export Particle Data
    2:20 Understanding Export Particle Data
    3:20 Using Export Particle Data
    4:53 Callback Handler Parameter and User Parameter
    5:31 Blueprint Setup
    6:14 Blueprint and Callback Handler
    7:28 Niagara Callback Interface and Function
    8:03 Get Exported Particle Data
    8:43 Use Exported Particle Data
    9:24 Test Print String
    10:04 Bells and Whistles / Velocity Based on Collision
    12:04 Test Velocity Collision
    12:34 Light Renderer and Scale Color
    13:24 Test Light Renderer
    13:58 Light Intensity User Parameter
    14:31 Blueprint Set Light Intensity
    15:54 Lerp Intensity and Timeline
    17:18 Flip Flop and Recap
    17:48 Final Test

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

  • @TallGuyProds
    @TallGuyProds 16 วันที่ผ่านมา +2

    Excellent Tutorial overall : )
    Just a note for UE5.4 onwards: Setting VariableName for SetNiagaraVariableByString (Object) to "User_BPCallBack" wasn't working for me in UE5.4. Fix was to set it to "BPCallBack", matching the exact string in User Parameters of the Niagara System, which is quite a sensible (and less error prone) choice on Epic's end.

  • @lordkelvin1
    @lordkelvin1 2 ปีที่แล้ว +7

    Amazing tutorial on this. Hard to learn the dark arts of Niagara without these kinds of breakdowns.

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

    This tutorial is pure money. I've been thinking about this but have no idea how to do it till I saw your video.

  • @Dort_Dort
    @Dort_Dort 15 วันที่ผ่านมา

    Wonderful explanation at every step, big thanks.

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

    Absolutely wonderful tutorial, still using this in UE5. Thank you so much!

  • @Kynolin
    @Kynolin 2 ปีที่แล้ว +2

    Great tutorial! It appears it even works with emitter simulation stages, but I had to add a spawn burst instantaneous to get my scratch module to do something. My emitter only had one emitter sprite for using Grid2D, no particles. All it needed was a burst value of 1, and then I could write out my emitter variables to a BP. Very cool!

  • @mb.3d671
    @mb.3d671 3 ปีที่แล้ว

    incredible, did not know how detailed that data can be. Ive seen an unreal talk on parts of that data too. great job.

  • @TheNapkuchen
    @TheNapkuchen 3 ปีที่แล้ว +2

    This was extremly useful, ty!

  • @simonsaysgray
    @simonsaysgray 2 ปีที่แล้ว

    thank you so much. never would have found that out on my own :D

  • @AlenHR
    @AlenHR 3 ปีที่แล้ว

    duude, i spent most of yesterday tinkering with plexus effect in niagara. tried to mash something up in custom niagara module, but that kinda failed being able to access only current particle data, and then i started complicating by using multiple modules in sequence to write and manipulate with data, and i did not like that.
    next step was to try accessing particles data from blueprint and then this came along. i love you

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

    Bro, Thank you!

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

    I just used this information to detect a skill (an in-game beam attack) particle collision and generate a hit explosion in C++.
    Thank you so much for this.
    Unreal Engine documentation is so bad.

  • @jeremiechicoine3011
    @jeremiechicoine3011 2 ปีที่แล้ว

    Great info thanks a lot this just made my day your channel is a godsend!

  • @abilalp9104
    @abilalp9104 3 ปีที่แล้ว

    Great tutorial. Rare tutorial.

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

    Great tutorial!! Thanks for making it :D

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

    Thanks a lot for this tutorial !

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

    Nice tutorial. Working in 5.1

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

    This is such a useful video

  • @Twatwane
    @Twatwane 23 วันที่ผ่านมา

    thanks bro

  • @IstyManame
    @IstyManame ปีที่แล้ว +1

    Wait do you think there is a way to hook the collision data to the metasounds system to simulate actually accurate rain sound in the virtual environment?

  • @cmdrconger9240
    @cmdrconger9240 3 ปีที่แล้ว

    Good stuff. Now I can finally debug my emitters and modules without having to guess what the hell is going on with the particle data.

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

    Thank you very much!

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

    What if this doesn't work at all after packaging the project? The collision itself works because I set CollisionValid with kill particles and I can see the particles being destroyed, but the event Receive Particle Data is not being activated... This works normally as long as I test it in-engine

  • @sergioleonmechelk5256
    @sergioleonmechelk5256 ปีที่แล้ว +3

    Hi, thanks for the tutorial, was super helpful. I have a question, i have several emitters, but this method does only work with the first emitter now. Is there a way how to send the data with the third or any other emitter. Maybe also just missing out on something. Thanks, Sergio

    • @DrN0VA.
      @DrN0VA. 11 หลายเดือนก่อน +1

      Did you ever figure this out?

  • @manbearfrink
    @manbearfrink 3 ปีที่แล้ว

    Oh man, I've been googling this all day and bam, you posted a video TODAY! What a lifesaver! So glad I can get the collision location now, but do you know if you can get the object it collided with? Or do you need to combine it with a trace?

    • @gamedevoutpost9270
      @gamedevoutpost9270  3 ปีที่แล้ว

      I haven't tried the line trace yet, but I imagine you could combine it with the velocity vector. I'll continue to look it!

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

      @Aaron Did you ever figure out a solution?

  • @user-yb5ft3kw5j
    @user-yb5ft3kw5j ปีที่แล้ว

    nice, how to create audience hand light effect by using particle system

  • @tarekwayne9193
    @tarekwayne9193 2 ปีที่แล้ว

    You know what I'd love to know? How to render DATA with Niagara from Unreal like in print to string...
    I'm sure it's possible but I haven't seen any info on it🤔

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

    how do I get this , to check if it Collision with the player,? currently it just a Collision with the floor, i did try to cast to player then do something but that does nt really work that way, any ideas /tips?

  • @user-ry3fq9il1y
    @user-ry3fq9il1y 3 ปีที่แล้ว

    Thanks man

  • @SebastienProduction1
    @SebastienProduction1 3 ปีที่แล้ว

    Thank you :)

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

    awesome

  • @boysun7682
    @boysun7682 3 ปีที่แล้ว +1

    cool

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

    Hello! Do you know anything about Niagara Data Interfaces? Let's say that I want to drive my particles with values from an array that I have in C++ or Blueprint (lets say a single float value). It appears there are functions for setting float arrays on the system, but I get crashes; also they are private in BP libraries so I can't use them from C++ to test there. This is in UE4.26.2. Thanks!

  • @flurishart612
    @flurishart612 2 ปีที่แล้ว +1

    Hi, great tutorial thx. One question though, do you know a way to do a cast with this method, so that it doesn't return data from all collisions, but only collisions that happened with a certain bp? Normally I would add a cast to node but I'm not seeing a way to do that with this setup.

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

      Have you found solution? I'm searching for similar stuff. I want the particle to return the actor reference to which it collides.

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

      @@sanketvaria9734 I don't believe I found a solution for this either. Surely there is a way but I couldn't figure it out.

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

      @@flurishart612 I did found a video but the person basically did a sphere trace for every particle, that scared the shit out of me. Not an efficient way of doing it.

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

    But how do I instead get reference to an object that the particle hits? For example let's say I have made bullets out of particles and I shoot at enemy, there are 10 enemy. I only want to call the event on enemy that the particle has hit.

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

      You most likely don't want to do it this way. You want to have an event in your character blueprint or projectile blueprint that spawns the effect.

  • @unrealengine5-storm713
    @unrealengine5-storm713 2 ปีที่แล้ว

    I don't understand..you export vector 2D for the sprite size..but yet it still returns a float?..huh

  • @DavidWKimber
    @DavidWKimber 3 ปีที่แล้ว

    Super cool! Question: How would I change particle material on collision?

    • @HuogoFuri
      @HuogoFuri 2 ปีที่แล้ว +2

      Since this is about a month old now - dunno if you managed to figure it out but it was an interesting question so I tried to see what I could do. The Renderer is kind of a special case and specifically the Material doesn't have a binding. There are 2/3 ways I found to do this:
      The easiest would be to use the "Renderer Visibility Tag" variable (think he even has a video in his playlist for it) to Toggle from one Renderer to the next. Since they share particle information in the same Emitter it would appear like you were swapping the material.
      If you're wanting to blend between 2 materials though it gets a bit more complicated, you can use the 4 available Dynamic Material variables to drive different parts of the material on collision and lerp between the values (since Dynamic Mats are Vec4 you basically get 16 floats to work with).
      If you need more than that you'll have to set up other Material Parameters and use the Renderer "Material Parameter Bindings" I think.

    • @DavidWKimber
      @DavidWKimber 2 ปีที่แล้ว +1

      @@HuogoFuri Yeah, I went with the renderer visibility tag method (I was helping a buddy figure it out, so that's what HE went for actually). I did discover another method too, whereby you create a Material Interface user parameter, then in the renderer you assign it under the Material User Param Binding. From there I can access this in a blueprint and 'do stuff' as well, which is pretty nifty.
      Thanks for looking into it! The blend option would actually be a cool experiment given what he's doing specifically, so I'll bring that up too :)

  • @GRGC25
    @GRGC25 3 ปีที่แล้ว

    been searching for this all day! Thank you!
    Also, I'm trying to make a decal spawn based on where the particle colided. like a blood stain for a game, any idea how to solve for the decal rotation?

    • @blastforge
      @blastforge 3 ปีที่แล้ว +1

      Use the normal of the collision surface and create an orientation quaternion from Axis Angle to Quaternion node

  • @Full_Zeb
    @Full_Zeb 2 ปีที่แล้ว

    I want to spawn particles within the range of a particles lifetime 0.3 - 0.6 how would I spawn particles at the locations of all particles?

  • @GordonSeal
    @GordonSeal 3 ปีที่แล้ว

    You don't need to write "user." in front of the variable name, Niagara should find the correct one anyway, unless there's some difference with object variables.

    • @gamedevoutpost9270
      @gamedevoutpost9270  3 ปีที่แล้ว +1

      Between versions I've had issues so I've continued to write it explicit out of habit, although you're correct!

  • @user-lq5cp7bv9f
    @user-lq5cp7bv9f 2 ปีที่แล้ว

    Excuse me
    4.27 Has the add velocity of particle update been removed?

    • @LegitLord2000
      @LegitLord2000 2 ปีที่แล้ว

      Yea, any tutorials that use this, just add a scale velocity in particle update and they work together. Wouldn’t work in this case tho cuz of all the variables

    • @user-lq5cp7bv9f
      @user-lq5cp7bv9f 2 ปีที่แล้ว

      @@LegitLord2000 It was so
      I'll try and compare this part

  • @sonicbenja8853
    @sonicbenja8853 3 ปีที่แล้ว

    it dosen`t show me the export to blueprint help

    • @jeremiechicoine3011
      @jeremiechicoine3011 2 ปีที่แล้ว

      you need to add it to the particle update stage , just click the + by ParticleUpdate and type export , this is the only result it should return

  • @nodelayfordays8083
    @nodelayfordays8083 3 ปีที่แล้ว

    Your project says 4.25 but the demo has to be 4.26 because they didn't include that module until 4.26.

    • @gamedevoutpost9270
      @gamedevoutpost9270  3 ปีที่แล้ว +1

      You're right! The title of the level has just persisted from a copy. Its 4.26.

    • @nodelayfordays8083
      @nodelayfordays8083 3 ปีที่แล้ว

      @@gamedevoutpost9270 I am curious though what were your results on 4.25 if you tried this? They have the store data node and you can make your own custom version of their export module but I couldn't get it to work. just curious if you tried and succeeded or if this really is a 4.26 feature only.

    • @gamedevoutpost9270
      @gamedevoutpost9270  3 ปีที่แล้ว

      I mean with enough energy you could do it. It was really a case of "why not just update if it's stable." There were a range of issues in 4.25, like texture objects worked in 4.24, but were broken in 4.25. They fixed and fleshed out things in 4.26.

    • @nodelayfordays8083
      @nodelayfordays8083 3 ปีที่แล้ว

      @@gamedevoutpost9270 Hmm not really a case of energy just a case of does the Store Data node in 4.25 work at all compared to Export Data node in 4.26. My results showed me it doesn't work at all in 4.25 and curious to see what success other have had if any.

  • @tree50maro
    @tree50maro 2 ปีที่แล้ว

    UE5 not allowing Add Velocity under Particle Update makes this challenging to replicate.

    • @grimbletron5964
      @grimbletron5964 2 ปีที่แล้ว +1

      I used Inherit Velocity instead, then set Velocity Source to Make Custom Vector from Bool :)