Hi,
Yes I was refering to the first video on the first page. I was wonder which technique he used.
I think I’ve read somewhere that he used ray-cast. Ah, there it is…
I think that is the answer to what technique he used.
It’s one of our in-house engines at Ubisoft, so not competition.
Fixed the collision now. I’m sure I didn’t have to explicitly cook the collision before, but anyway, you can pull the branch and it’ll work now.
Looks like I’ll have some free time this weekend to do a little work on this again.
I’ll add an event you can handle when the update completes this weekend.
Sweet! Thanks.
In-house engines, no wonder you had a lot to focus on.
Sounds good. And btw, if this where to be used in a commercial product, what license does your plugin go under?
EDIT:
The in my case by adding the cook there. Is that it’s slowing down the process of making 10 planets. It’s closing up to the point where it takes too long to make. That is not this plugins fault, that’s for sure. But I’m going to see if I can add a component to my setup that cooks those meshes in their own thread or something.
But for a single world, the MeshComponent->CookCollisionNow() works great.
Also, the first world that’s made has 2 runtime mesh components pr worldface while the rest has only 1 pr worldface.
In my case, that adds up another 100 components.
I know, it’s a lot of meshes and probably way too inefficient, but it’s the part of the process where we make things work, even tho it’s ugly, then polish and make things look good at a later stage.
Oh nice ! Thanks
So you used line trace in your videos to get the Z value of the landscape to spawn instanced static meshes? or you added a procedural foliage spawner volume to each tiles? an other technic?
Collision cooking is on the game thread…it’s slow. No way around that at present, just keep your mesh sizes down.
Yep I just used a line trace to find the position and rotation to spawn instanced static meshes on the terrain.
I’m currently adding all the RuntimeMeshComponents in one big array. Will there be any issues if I make a new thread to handle the cooking?
The array is made trough blueprint, but I can access it through code. I know it works in the game thread, and I don’t see an to make a new thread to handle this, or even multiple threads to speed up the cooking.
Are all those static meshes?
If I recall correctly, there is a way to use a volume to place foliage. If they haven’t removed that option that is…
EDIT:
This should work in 4.15 as far as I know. By using the event to spawn this should be possible I think.https://youtube.com/watch?v=lWfKe07tuq8
More EDIT:
Here is a thread that says it should work in 4.15:
Generating foliage with procedural foliage volume drains system memory, and takes forever - World Creation - Epic Developer Community Forums
Yep, that’s what I meant by “procedural foliage spawner volume”. I will try both once mid-gen add this event and give my results here.
I will try to use the radius of a collision sphere to generate foliage only on tiles closest to player pawn.
Hey,
is it possible to change the terrain material parent to a material instance?
Are there any limitations or what exactly is the reason for material parents? Material instances should be more flexible, right?
Im also not able to create a dynamic material instance via BP…
Is there a way to flatten the edges of the map? For islands etc.?
Maybe radial noise map or something similar…
anyway, thanks for the nice plugin bruh! I would even pay for it… especially for multiplayer support <3
Added Radial module. You’ll need to pull the latest UnrealFastNoise for it.
Islands:
Can also be used to make a Death Star
Added two delegates to CGTile,
One fires when the Mesh Updates is called
One fires when the LOD opacity transition is complete
DECLARE_DYNAMIC_MULTICAST_DELEGATE_TwoParams(FTileMeshUpdated, int, previousLOD, int, newLOD);
DECLARE_DYNAMIC_MULTICAST_DELEGATE_TwoParams(FTileTransitionComplete, int, previousLOD, int, newLOD);
I’ve merged CG_WORLD branch into now, I won’t develop in that branch any more.
At the moment I create a dynamic material instance from the parent provided as I need to manipulate the opacity values at runtime for the LOD dithering.
That’s awesome!
Will see if I can pull/download the and implement my own code into the new .
It should be relatively easy tho.
EDIT:
I guess it’s called clone, not pull. I’m kinda new to this source control thing. Still learning.
That delegate setup I initially uploaded won’t have been much use to you, I’ve updated now. The CGTerrainManager now broadcasts :
DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FTileMeshUpdated, ACGTile*, Tile);
When a tile is updated.
That’s good. A that will be useful for sure. Good for when populating the planets on a later stage of the world building.
The code I’ve implemented checks when all the tiles for a world is done, then runs an BlueprintImplementableEvent.
It’s nothing fancy, but it gets the work done.
And it’s handy when having multiple planets.
Ok I’ve added this to CGWorld which broadcasts when the world is fully rendered.
DECLARE_DYNAMIC_MULTICAST_DELEGATE(FDrawComplete);
I don’t really have time to imagine or create any uses for this plugin at the moment…so feel free to keep posting requests and I’ll drop them in when I get a .
It’s all good. I’m not expecting you to add all sorts of features I’m throwing at you. hehe. But thank you very much!
I’m using those as opportunities to learn some code on my own. And as you add these kind of things. I can learn to see how it’s suppose to be done.
You are my hero! seriously…
a fast and easy solution, perfect!
thank you sooo much! <3
hmm… that means the material is already instanced?! well, maybe the reason why i cant instance it again
can I get a reference to the terrain material instance in BP somehow? (i could set all my material parameters manually via BP then… this is time consuming and not really flexible but still better than nothing)
the problem is: I already got a complex terrain material and because of the complexity its a lot of work to search & change the parameters (manually by hand inside the material editor)
you mentioned the LOD dithering…
and if i dont use LODs at all? Im generating small maps without LODs… I dont need big maps and LOD support actually…