Announcement

Collapse
No announcement yet.

Simple Scatter Plugin

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

    [SUPPORT] Simple Scatter Plugin

    Hello,

    this is the thread dedicated to reporting issues and suggestion about Simple Scatter Plugin: https://www.unrealengine.com/marketp...simple-scatter

    This post and thread will be updated with the relevant information as the time goes on.
    Last edited by Rawalanche; 02-04-2020, 03:44 AM.
    https://www.artstation.com/artist/rawalanche

    #2
    Hey. I really like the look of this product. The closest thing to ForestPack I’ve seen in Unreal. Awesome work!

    I will probably be purchasing it soon but I did wonder if it was currently possible to scatter certain meshes in the falloff areas of a defined scatter area? (either from a texture mask or spline falloff).

    For instance, in the support videos you show that you are able to affect the scale of the scatter meshes in the falloff areas of a soft image mask. That’s great. What you’re basically suggesting there is the plants/trees are younger/smaller the further into the falloff they get. This is perfect for grass and bushes where younger plants are just smaller versions of the adult plants. In trees however, a younger tree would be a totally different mesh to an adult tree.

    So in this instance, could you specify that adult trees grow in the white areas of the image mask and then a different mesh (the younger trees) grow in the grey falloff areas of the mask?

    If you can’t currently do that, might I add it as a suggestion as I think then you’ve got pretty much everything covered!

    Comment


      #3
      Originally posted by jamesfielddesigns View Post
      Hey. I really like the look of this product. The closest thing to ForestPack I’ve seen in Unreal. Awesome work!

      I will probably be purchasing it soon but I did wonder if it was currently possible to scatter certain meshes in the falloff areas of a defined scatter area? (either from a texture mask or spline falloff).

      For instance, in the support videos you show that you are able to affect the scale of the scatter meshes in the falloff areas of a soft image mask. That’s great. What you’re basically suggesting there is the plants/trees are younger/smaller the further into the falloff they get. This is perfect for grass and bushes where younger plants are just smaller versions of the adult plants. In trees however, a younger tree would be a totally different mesh to an adult tree.

      So in this instance, could you specify that adult trees grow in the white areas of the image mask and then a different mesh (the younger trees) grow in the grey falloff areas of the mask?

      If you can’t currently do that, might I add it as a suggestion as I think then you’ve got pretty much everything covered!
      The problem with these task specific features is that there are hundreds if not thousands of them. That would defeat the purpose of the scatter being simple and would turn it into something as ugly as the ForestPack UI, in terms of usability. It would start with "spawn different meshes on the edges" and would continue with "spawn different meshes based on attitude", then "spawn different meshes based on slope, because different bushes will grow on cliffs" and so on.

      I like to trade efficiency in very specific scenario for more simplicity and ease of use in majority of basic scenarios. Otherwise, the scatter would end up having 100's of "make this very specific scenario" buttons, knobs and multipliers.

      That being said

      What you want is quite doable:
      Click image for larger version

Name:	YoungTrees.jpg
Views:	136
Size:	577.6 KB
ID:	1718817
      Dark green cubes are stand ins for mature trees and bright green cubes are supposed to be young trees.
      I've created first scatter, where I've just used distribution map to drive only distribution, not scale of the mature trees:
      Click image for larger version

Name:	MatureTreesDistr.jpg
Views:	89
Size:	239.0 KB
ID:	1718818
      I have then made another scatter for young trees. Here I've color corrected the same distribution map to erode it a bit outwards, and then subtracted the distribution map of the mature tree scatter from it (R channel drives density, G drives scale):
      Click image for larger version

Name:	YoungTreesDistr.jpg
Views:	92
Size:	317.7 KB
ID:	1718819
      So now you have young trees not growing where the mature ones do, and young tree scale fading away from the edges of the forest. If you take the mature tree distribution texture and the adjustments made to it and wrap it in a material function which you reference in the distribution material of the young tree scatter, then distributions of both these scatter objects become linked and you don't need to manually keep them in sync.

      Also, the young trees are smaller so they required more density. Imagine having to do all of that in single scatter. Now people would not only require button to have different meshes on the edges, but also different instance density on the edges, and then different transform randomization on the edges, and then they would want same for the slopes, etc... It would get ugly really fast and could turn into another space shuttle cockpit dashboard thing that the ForestPack is. This approach, while a bit more laborious, does not compromise usability for less complex use cases, but does not stop you from flexible solutions like this one
      https://www.artstation.com/artist/rawalanche

      Comment


        #4
        Here, I've even made you a video showing how easy it is to swap and adjust the distribution if you link it via material function: You just swap the texture and it automagically grows a new forest with young trees on the edges with scale falling off outwards
        https://www.artstation.com/artist/rawalanche

        Comment


          #5
          Thanks for this! I take your point about keeping your feature as simple as possible. But I do maintain that it is quite a common scenario. That said, the interface would have to become more complicated then it needed to be.

          Your solution using materials seems to work perfectly using your current feature set.

          Thanks for taking the time to go through this!

          Comment


            #6
            We bought your plugin and love it.
            As i´, right now on it, just a quick question.

            How would you animate (if´s possible at all?!) the count of the instances using sequencer, i have to "delete" a forest in an animation and wonder how i do it cool =)

            Cheers, Andy
            Andy Probst
            Head of R&D / VR - Meilenstein Digital GmbH

            Comment


              #7
              Originally posted by andyxor View Post
              We bought your plugin and love it.
              As i´, right now on it, just a quick question.

              How would you animate (if´s possible at all?!) the count of the instances using sequencer, i have to "delete" a forest in an animation and wonder how i do it cool =)

              Cheers, Andy
              Well, the plugin is originally made just to scatter the instances, in a static manner, not really modify them after the fact, at runtime. That doesn't mean it's not possible, it just means that there's no option for that right in the UI. The scattering of large amounts of instances takes a while, so it would definitely be way too expensive to recalculate the distribution during the game or sequencer playback. So in order to do this, you will have to get more technical.

              It uses HISM component under the hood. So once you get a reference to the HISM component, the HISM component has functions which allow you to get the instance index of any instance you have overlapped with an object, or have hit with line trace, etc... So once you have the index, you can either use it to move the instance, or remove it. If you want to delete the entire forest at once, you can just delete/destroy the entire component, which would be as simple as getting the given component in blueprint and destroying it.

              Someone already asked a similar question a while ago, and I've made this simple example:
              https://imgur.com/a/i2p9YtC


              Here, I am using a raycast to get the HISM component, then get get the specific instance index using sphere overlap, and then I am able to either move or remove the instances.

              I could propose more specific solution if you are more specific about how exactly do you want to delete the entire forest. If you want entire forest to disappear from frame to frame, then why not just add the scatter object into sequncer and disable the "Visible" flag?
              https://www.artstation.com/artist/rawalanche

              Comment


                #8
                I like the example above, what i need to do is following.

                I do an animation for a 360 Video production, in the anim you see two virtual hands (like you see in VR productions) these hands delete the whole world around us, one by one. I also like to delete the forest in a cool way =)

                Can you give me a hint how you did it in the video ?

                Andy
                Click image for larger version

Name:	Forest.JPG
Views:	0
Size:	302.0 KB
ID:	1740498
                Andy Probst
                Head of R&D / VR - Meilenstein Digital GmbH

                Comment


                  #9
                  Originally posted by andyxor View Post
                  I like the example above, what i need to do is following.

                  I do an animation for a 360 Video production, in the anim you see two virtual hands (like you see in VR productions) these hands delete the whole world around us, one by one. I also like to delete the forest in a cool way =)

                  Can you give me a hint how you did it in the video ?

                  Andy
                  Click image for larger version  Name:	Forest.JPG Views:	0 Size:	302.0 KB ID:	1740498
                  The hint is above, in the imgur screenshot link Basically, if you have a vector of the area your hand is pointing at, all you need to do is to create sphere overlap from that location vector and remove those instances, as shown here: https://i.imgur.com/Ktt22f8.jpg
                  What you are really interested in is the topmost part of the graph, branching from InputAction LMB. The two on the bottom are for moving the trees. You are mostly concerned about the Get Instances Overlapping Sphere function. Center input is location where you are deleting the instances at, and Radius is how far from that point will distances be deleted. So if you call that every frame and have the vector location input for the center moving, you basically have a scatter eraser tool.

                  But if you are doing it every frame, I'd suggest doing the cast only only for the first time, and then caching reference to the HISM into some variable, as doing cast every tick can be expensive, especially for VR.
                  Last edited by Rawalanche; 04-02-2020, 09:20 AM.
                  https://www.artstation.com/artist/rawalanche

                  Comment


                    #10
                    Thanxx alot, will try it out =)

                    I will not do an active VR-App, i have to animate it by hand to look like it would be in VR (dont ask why ...:-))
                    The final thing will be a 360 degree video.

                    Andy Probst
                    Head of R&D / VR - Meilenstein Digital GmbH

                    Comment

                    Working...
                    X