Unreal Engine 5.4 PCG - New Features Ep 1 - Array of meshes

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

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

  • @CGDealers
    @CGDealers 6 месяцев назад +4

    Great information! Thanks for sharing as I've been digging very deep in your PCG Electric Dreams demo to break it down for my community. Great video for the 5.4. Keep it coming :)

    • @adrienlogut3482
      @adrienlogut3482  6 месяцев назад +2

      Glad it was helpful! But it's not my demo haha more talented people than me worked on this x)

    • @CGDealers
      @CGDealers 6 месяцев назад

      @@adrienlogut3482 Never the less love your work and info you provide. Learned a lot from you and I'm spreading the knowledge. Keep it up!

  • @tallere1781
    @tallere1781 4 дня назад

    God tier tutorial jesus i thought that i would have to download the source code and make a mesh array pin so that i could easily change meshes in blueprints

  • @soonhosong2711
    @soonhosong2711 3 месяца назад +1

    This is so incredible! I was making some PCG and watching some RUclips tutorial and UE version was 5.2 in the tutorial and I was using 5.4 and it doesn't works because of version updated. but this tutorial helped me to sole the problem. Thank you so so so much!

  • @OnkAnCa64
    @OnkAnCa64 6 месяцев назад +1

    Excellent, thanks for this new serie. I'm working on PCG with data assets on 5.3 but sadly UE freeze randomly when I tweak values on data asset. I hope it'll be more stable on 5.4

  • @overdrawxyz5125
    @overdrawxyz5125 6 месяцев назад

    Great tutorial and nice presentation!

  • @pinsandneedles8562
    @pinsandneedles8562 6 месяцев назад +1

    Thank you very much for doing these videos!
    I am having trouble opening my map which contains a pcg volume with a graph, I get this error when opening it: "Assetion Failed: InstanceReorderTable.IsEmpty()" It is in the Engine/Source/Runtime/Engine/Private/InstancedStaticMesh/ISMInstancDataManager.cpp file, line 1021. When looking at the code, I couldn't really make sense of it except that it has something to do with the function "MarkForRebuildFromLegacy". I was wondering if this has something to do with the pcg as I get the same error when dropping the pcg graph in a new level. After deleting the pcg, I still cannot open the level though.

    • @adrienlogut3482
      @adrienlogut3482  6 месяцев назад

      That's weird, especially if you have deleted PCG. I've never seen that error unfortunately :(
      Could it be an issue with your mesh?

    • @pinsandneedles8562
      @pinsandneedles8562 6 месяцев назад

      @@adrienlogut3482 Hmm, I am gonna look into it a bit more but I don't really think it has something to do with my meshes. It could be one of my blueprints though because I have some in the level that use instanced static meshes but I already disabled all of the code in those xD. Yeah, its really weird, thank you very much for answering though!

  • @roberttaylor4696
    @roberttaylor4696 5 месяцев назад

    Great video! Maybe we could get a tutorial on how to make a loop graph? It would help my understanding a lot! I'm trying to get landscape layers by a string array in my BP to apply an attribute filter but I'm just lost. I have no idea how to even begin to set it up.

    • @adrienlogut3482
      @adrienlogut3482  5 месяцев назад +1

      It's the next video in the pipes ;)

    • @roberttaylor4696
      @roberttaylor4696 5 месяцев назад

      @@adrienlogut3482 great, cause I spent 2 hours trying to figure that out and had to just have like 10 variables instead of having the one array. Hopefully its my instance but I'll take whatever I can get.

    • @adrienlogut3482
      @adrienlogut3482  5 месяцев назад

      I can give you a hint for your case. Use the Attribute Partition on $Index for splitting your single attribute set with multiple entries to multiple attribute sets with a single entry. Loop is looping on the data in the data collection (the dropdown in the attribute list view) not looping on the elements of a given data (like points or entries in an attribute set)

    • @roberttaylor4696
      @roberttaylor4696 5 месяцев назад

      @@adrienlogut3482 I appreciate it but right now it’s gibberish. I can wait and see what you produce and try to figure it out from there. Sadly I’m a visual learner.

  • @theuniverseupsidedown
    @theuniverseupsidedown 2 месяца назад

    Avesome. Thank you very much

  • @redtroll80
    @redtroll80 6 месяцев назад

    thanks for all vids dude

  • @alicechaix7936
    @alicechaix7936 Месяц назад

    Hi ! Thank you very much for your great tutorial :) ! I have an error message on the static mesh spawner "Attribute 'Mesh' is not in the metadata" and because I'm a beginner I don't understand where the problem comes from :/ . How can I fix it please ?

    • @adrienlogut3482
      @adrienlogut3482  Месяц назад

      Hey! It's pretty easy, it means you don't have an attribute named "Mesh" in the incoming point data of you static mesh spawner. In the tutorial, meshes are assigned to point with the match and set attribute, and you can inspect the result of the match and set to see the name of the attribute :) just use that one in the static mesh spawner!

  • @Alternatywny_1
    @Alternatywny_1 10 дней назад

    1:41 I’m stuck at this point in the film. When I debug, nothing appears on the map. Additionally, nothing is displayed in the window at the bottom left either, as if something is broken in my engine, and I don’t know how to fix it. I’ve spent a long day trying to figure it out. Would you be able to help me with this? Thanks in advance!
    Edit: When I'm inspecting surface sampler there is "no data available" information :((
    But when I'm doing literally same pcg in 5.3 version it works very good.

    • @Alternatywny_1
      @Alternatywny_1 10 дней назад

      I randomly found the solution somehow. There's something called PCG Volume (which I had never heard of or don’t remember), and I didn’t use it to generate objects. It’s a strange thing because I don’t recall using something like this before. But it could be that I used it once, and then when I made a sample of that map for other projects, I completely forgot about the existence of this PCG Volume, which is why nothing was working. But I feel great that I found the solution myself after struggling with it for almost a day, haha.

    • @adrienlogut3482
      @adrienlogut3482  9 дней назад

      PCG volume is the simplest way to have PCG working :) in the video I drag the graph in the map which automatically create a PCG volume with this graph assigned.
      If you tried with a custom actor, that's different ;) PCG needs bounds to generate that's what I explain in the second part!

  • @MrNsyi
    @MrNsyi 4 месяца назад

    Thank you Adrien, any way to configure the DataAsset file using a BluePrint ? (Set ??? Parameter or Get Actor Property) ?

    • @adrienlogut3482
      @adrienlogut3482  4 месяца назад +1

      Yes Get Actor Property is the right way to query the value on a given actor :)

    • @MrNsyi
      @MrNsyi 4 месяца назад

      @@adrienlogut3482 Thank you and very usefull features + very good video

  • @cyj4300
    @cyj4300 4 месяца назад

    Thanks for this great video! but I want to know if I added new variables in the Structure, how to get it in the PCG Graph?

    • @adrienlogut3482
      @adrienlogut3482  4 месяца назад

      Might want to have a look to the next video in the series ;)

    • @cyj4300
      @cyj4300 4 месяца назад

      @@adrienlogut3482 Thank you ! I got it !

  • @visusarts
    @visusarts 24 дня назад

    Great video. Is there perhaps any way to do this with Packed Level Actors instead of Static Meshes?

    • @visusarts
      @visusarts 24 дня назад

      Basically is there a way of achieving this with Spawn Actor node instead of Static Mesh Spawner?

    • @adrienlogut3482
      @adrienlogut3482  23 дня назад

      Spawn actor can also use an attribute for spawning, it's Spawn Attribute setting on the node. The rest of the logic is the same, you assign a path to an actor to spawn to each point.

    • @visusarts
      @visusarts 10 дней назад

      @@adrienlogut3482 Thank you so, much I finally did get it working with Packed Level Actors. I did notice one issue is that when I use the Spawn Actor node in a blueprint with splines, and I want to add a point on the spline with normal ATL-Drag method in editor it crashes unreal. This doesn't happen with Spawn Static Mesh node. If I clear the pcg I can then add the spline points and regenerate without crashing, so is their a small setting I am perhaps missing? Using UE 5.4.4.

    • @adrienlogut3482
      @adrienlogut3482  10 дней назад

      You're not the only one that reported that, I have this on my stack will try to fix it for 5.5

    • @visusarts
      @visusarts 10 дней назад

      @@adrienlogut3482 Oh great, thank you so much again :)

  • @mclothmann
    @mclothmann 13 дней назад

    Could this also be done with level instances? I havent been able to get that to work, meshes works like a charm tho :D

    • @adrienlogut3482
      @adrienlogut3482  13 дней назад +1

      Yes it's possible though a bit more complex. You can convert level instances to PCG data assets. The selection process is the same as meshes, but to spawn them you have to use the Load PCG data asset node and use the copy points node. From there you can spawn the associated meshes.
      I don't know if you can spawn level instances directly as actors too, if that's another possibility

    • @mclothmann
      @mclothmann 13 дней назад

      @@adrienlogut3482 Ye its weird, I have the exact same setup but instead of meshes a PCG data set in my structure, no matter what I do the Load PCG data node keep throwing a "unable to load PCG data" ? - I already found a way to do it by using a int multi selection node but this way you have all the PCG data assets loaded in the graph at all times. So doing it with data assets would be more beneficial haha. Anyhow, thanks for the quick reply! Your work is impressive

    • @mclothmann
      @mclothmann 12 дней назад

      @@adrienlogut3482 After a bit more trouble shooting I actually got this to work! Thanks for the guidance! Funny enough, I was watching the advanced PCG vid from Unreal fest and they went over the same approach, i just skipped it lol

  • @Markebarca
    @Markebarca 5 месяцев назад

    Thanks, I was waiting for this feature. Do you know how to filter meshes which exceed a spline? For example I sample on interior of a spline. Sometimes the bounds exceeds the spline because of transform or random point offset. I want to filter these things. It is very important for interior systems.

    • @adrienlogut3482
      @adrienlogut3482  5 месяцев назад

      You can try to project the points on the spline interior sampler or the new Surface from Closed Spline, with the option to not Project anything in the projection node.
      Any point that is outside the interior will be discarded that way.

  • @michaelchickson8734
    @michaelchickson8734 5 месяцев назад

    Hello, thank you for your videos! Sorry if this is a dumb question but is it possible for the PCG to ignore certain collision shapes for point generation? For example a static mesh building with a pcg volume on top where the points generate around the static meshes boundries.

    • @adrienlogut3482
      @adrienlogut3482  4 месяца назад

      Yes of course! Have a look at Episode 4, close to the end, I show how to exclude a house from the generation

  • @eligijuspranskunas3509
    @eligijuspranskunas3509 2 месяца назад

    wow

  • @필살마그마웨이브
    @필살마그마웨이브 5 месяцев назад

    감사합니다!

  • @PsijicV
    @PsijicV Месяц назад

    Hello, I don't see any points generated - how should I fix it?

    • @PsijicV
      @PsijicV Месяц назад

      Found: I use default floor instead of landscape

  • @carlosrivadulla8903
    @carlosrivadulla8903 6 месяцев назад

    are the new clonners pcg graphs?

    • @adrienlogut3482
      @adrienlogut3482  6 месяцев назад

      New clonners? What is that?

    • @carlosrivadulla8903
      @carlosrivadulla8903 6 месяцев назад

      @@adrienlogut3482 the motion design mode now has cloners and effectors. Wondering if they are just PGC under the hood

    • @adrienlogut3482
      @adrienlogut3482  6 месяцев назад

      Not that I know no

  • @Gamer_Bastian
    @Gamer_Bastian Месяц назад

    Hi Adrien, great video as always! May I ask a question here: I struggle a bit with the "Attribute Filter" node - I simply want to filter all points against a threshold, lets say $Position.Z > 1000. I can easily do that using a "Constant Threshold" and set the value - but how can I parameterize that, e.g. using a parameter? I dont know what to put into the "Threshold Attribute" pin to achieve that without hardcoding it.

    • @adrienlogut3482
      @adrienlogut3482  Месяц назад +1

      It's pretty easy actually! If you uncheck Constant Threshold you have a new pin Filter that appears. That's for another data that will be used as the threshold. So if you plug an attribute set (like with a Graph Parameter or a Create Attribute node) into the filter pin, you can set the threshold attribute to @Last or the exact name of your attribute in the attribute set for it to be used as a filter

    • @Gamer_Bastian
      @Gamer_Bastian Месяц назад

      @@adrienlogut3482 Perfect - "@Last" was the part I was missing - thx a lot, worked like a charm!

  • @melic-chazaryan2769
    @melic-chazaryan2769 3 месяца назад

    Please tell me, these PSG cubes are tied to the slope of the landscape, parallel to the plane, and the tied trees stand stably to the plane of the slope (trees on the slope do not rise directly with the slope), but at 5.3 it was vertical. HOW to make trees stand vertically on a slope?

    • @adrienlogut3482
      @adrienlogut3482  3 месяца назад

      It has not changed between versions, if you need them to stay vertical, add a transform point with an absolute rotation of 0,0 on XY (and potentially any number for Z for random rotation)

    • @melic-chazaryan2769
      @melic-chazaryan2769 3 месяца назад

      @@adrienlogut3482 Thanks a lot

  • @TheProgrammer
    @TheProgrammer 6 месяцев назад +1

    Thanks!

  • @Max_Stupa
    @Max_Stupa 6 месяцев назад +1

    Thanks Adrien!

  • @astralstormgamestudios1259
    @astralstormgamestudios1259 3 месяца назад

    Is there any optimizations gains to do it like that? Instead of the "old" way to use static mesh spawner and put the meshes there?

    • @adrienlogut3482
      @adrienlogut3482  3 месяца назад +1

      No it's the same cost (perhaps a little costlier because of the attribute indirection)
      It's just the basics to create generic graphs. If you don't need to have generic stuff, you can stick with the hard-coded way.

    • @astralstormgamestudios1259
      @astralstormgamestudios1259 3 месяца назад

      @@adrienlogut3482 Thanks, you nailed the answer ✌️

  • @mihaiwilson
    @mihaiwilson 3 месяца назад

    Thanks so much, this is a great improvement! I'm wondering if you have any recommendation on how one might do this, but where each weighted mesh is pulled randomly from an array of its own kind (eg, when a tree is selected - it pulls randomly from an array of that type of tree)?

    • @adrienlogut3482
      @adrienlogut3482  3 месяца назад +1

      You could extend the data asset with a weight for each mesh. Then you can provide this weight attribute in the match and set settings :)

    • @mihaiwilson
      @mihaiwilson 3 месяца назад

      @@adrienlogut3482 Thanks, I but I'm thinking more of a per-array weight as opposed to a per-mesh weight, but I don't see how/if the data could flow? Imagine if the mesh variable in the struct is an array instead of a single mesh.

    • @adrienlogut3482
      @adrienlogut3482  3 месяца назад +1

      The selection could be first a weighted selection for a type of mesh. Here that would be Tree, Rock and Grass. Then when the selection is done, you chain another match and set with the array of meshes for a given mesh.

    • @mihaiwilson
      @mihaiwilson 3 месяца назад

      @@adrienlogut3482 Oh interesting, thanks I will give that a shot!

  • @KADstudioArchitect
    @KADstudioArchitect 4 месяца назад

    I do till 1:44 but there is no preview cubes

    • @adrienlogut3482
      @adrienlogut3482  4 месяца назад

      There is nothing fancy, so either your volume is too small, you don't have a landscape, you haven't generated your PCG component or you haven't selected the right debug object.

    • @KADstudioArchitect
      @KADstudioArchitect 4 месяца назад +1

      @@adrienlogut3482 Correct, I forgot debug mode, thanks

  • @pure9190
    @pure9190 23 дня назад

    Is there a way for me to use pcg setting similar to mesh array in video and change the pcg setting instance at any time

    • @adrienlogut3482
      @adrienlogut3482  23 дня назад

      The logic I show there works for any Object, as I'm working with paths. It would work with Actors, or any object actually.

    • @pure9190
      @pure9190 22 дня назад

      ​@@adrienlogut3482 Thank you very much for your reply. The problem I encountered was that pcg setting assets needed to be instantiated before it could be used normally, and this operation was completed automatically when I dragged pcg setting into pcg graph. I could not find a way to create pcg setting instance manually. And what I get through the path is only a pcg setting path reference, not the model and material path in it

    • @adrienlogut3482
      @adrienlogut3482  21 день назад

      IIRC you can right click on a node and create an instance out of it

    • @pure9190
      @pure9190 15 дней назад

      I found the answer, just use PCG Data Assets instead of PCG Setting, right click the Asset operation in the level to create PCG Data Asset from the level, then use Load PCG Data Asset node in PCG Graph, use blueprint variable to override the asset input, You can freely change the Data Asset you use

  • @mihaiwilson
    @mihaiwilson 3 месяца назад

    Man, you're a lifesaver. Thanks so much.

  • @diaryofjane22
    @diaryofjane22 6 месяцев назад

    Hey man, I just wanted to say thank you for your videos and all that you do! I literally downloaded Unreal Engine 5 after learning about PCG, with no development experience whatsoever. Your videos are a HUGE gift, and are extremely helpful. If there's anything more we can do to support you, please say it! Otherwise, I'll keep looking forward to whatever you put out.
    If I could ask one question, and I know it isn't your expertise, but: I'm getting a bit discouraged with tree performance. Everything with development is going well, especially using PCG, but trees like the Spruce trees from your spline tutorials seem to destroy performance. Do you have any tips or advice for this?

    • @adrienlogut3482
      @adrienlogut3482  6 месяцев назад +1

      Yeah I'm not entirely sure. I think I enabled Nanite on those, but I can't remember. You can see the very high density provided in the Electric Dreams Demo. You could try to use World Partition and partition your generation so it is less demanding at runtime.

  • @arvidvanmeerendonk1330
    @arvidvanmeerendonk1330 6 месяцев назад

    Hey Adrien, thanks for all the videos :) I’m getting better and better at learning PCG, without having any experience with blueprints or programming beforehand. I’m after a specific effect though, which I don’t know how to achieve in PCG. Basically I’m trying to build a custom node/ sub graph that has two inputs, which each take in a selected group of points: one is a group of points, in which each point is facing the nearest point of the group, that goes into the second input. Is there maybe a way to reach you for a more in depth look into that problem? That would be so great :) And I’d be very thankful!

    • @adrienlogut3482
      @adrienlogut3482  4 месяца назад

      It seems like you want the Distance node, with the same data set plugged in both pins. If you output the distance as a vector, you can then use a Make Rot from X, using this attribute and write into $Rotation, so that the point will look at the closest point.

  • @AkitaMix
    @AkitaMix 3 месяца назад

    Amazing! Thank youuuuu

  • @SimplifyUE
    @SimplifyUE 3 месяца назад

    Hi Adrien, thank you so much for doing the videos! It just means a lot to have learning resources from someone who has worked on the system.
    5.4 was a breakthrough for PCG graphs IMO, arrays and data assets are just a game changer.
    You guys on the PCG team are amazing

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

      Except we cant get tags from meshes in packed level instances easily.......... like we could before.......

  • @tristrissse
    @tristrissse 6 месяцев назад

    10:55 Does this attribute have data type Soft Object Reference?

    • @adrienlogut3482
      @adrienlogut3482  6 месяцев назад

      It's the type of my Data asset, and it is an object reference here, but it can be a soft too.

  • @GDGF815
    @GDGF815 6 месяцев назад

    how to make a landscape consisting of hexagons using PCG?

    • @adrienlogut3482
      @adrienlogut3482  4 месяца назад

      That's pretty complex and not really suited for PCG at the moment. You'll have to create your own nodes to create/manipulate hexagon shapes.

  • @maschinelab8598
    @maschinelab8598 6 месяцев назад

    Pretty cool! Thanx!

  • @n1lknarf
    @n1lknarf 6 месяцев назад

    Can the data asset value be changed at runtime?

    • @adrienlogut3482
      @adrienlogut3482  6 месяцев назад

      Yes it can! But you'll have to manually regenerate because there won't be any callback at runtime

  • @TheProgrammer
    @TheProgrammer 6 месяцев назад

    Could you make this series in continuity of the serie of how to use PCG i could be great to show case these feature on the precedent project

    • @adrienlogut3482
      @adrienlogut3482  6 месяцев назад

      Are you talking about the small project I did for the splines?

    • @TheProgrammer
      @TheProgrammer 6 месяцев назад

      @@adrienlogut3482 No I was talking about the last series about PCG, you could update the project with the new features

    • @adrienlogut3482
      @adrienlogut3482  6 месяцев назад

      Not sure which series you are talking about then ^^ as stated the tuto assets are on my GitHub and it has all the material from the previous videos, starting from the Short Episode 1.

    • @TheProgrammer
      @TheProgrammer 6 месяцев назад

      @@adrienlogut3482 I'm talking about the series of videos you made on the PCG on RUclips, your previous videos

    • @adrienlogut3482
      @adrienlogut3482  6 месяцев назад

      They are standalone "maps", and all available in the repository :) But I plan to have at some point a gathering of all techniques to something a bit more complex.

  • @chaosordeal294
    @chaosordeal294 6 месяцев назад

    I have been watching PCG for years, and I think it's essentially worthless without automatic LoD. I don't believe that PCG can generate Nanite meshes, so I could just ignore LoD. Am I missing something? RMC does this, but you have to guess your own documentation, which makes that fairly useless, as well.

    • @adrienlogut3482
      @adrienlogut3482  6 месяцев назад

      We can spawn Nanite meshes, that's what was done in the Electric Dreams demo for example.
      Building HLODs for the whole world generated with PCG is not yet easy to do, but we provided a builder in 5.4 to automate the generation on very big worlds.
      After that, it's pretty much what UE is capable of with World Partition. You can see in the State of Unreal how we generated the tiles for Lego Fortnite.

    • @n1lknarf
      @n1lknarf 6 месяцев назад

      ​​@@adrienlogut3482 But nanite meshes set using pcg graphs don't recognize the nav mesh. Not sure if I'm missing a setting in the nanite mesh or in the nav mesh. There's no issues using non-nanite meshes.

    • @chaosordeal294
      @chaosordeal294 6 месяцев назад

      ​@@adrienlogut3482 I misremembered. My actual issue is that you can't create Nanite meshes at runtime, so you can't build a procedural world out of Nanite meshes unless they are 100% prefabs (which I am considering doing). I would imagine morphing a Nanite mesh at runtime would either error out, or break all the Nanite features, creating an unpredictable visual mess.

    • @adrienlogut3482
      @adrienlogut3482  6 месяцев назад

      @@chaosordeal294 Depends on what you want to generate. We don't have landscape generation (since landscape is read only from PCG point of view), but you can run the generation at runtime. We also have Hierarchical Runtime Generation for 5.4

    • @chaosordeal294
      @chaosordeal294 6 месяцев назад

      @@adrienlogut3482 Unfortunately I can find almost zero information about HRG, as it is very new, but I will keep an eye as docs are created. very much appreciate the responses