Search Unity

Particle Playground

Discussion in 'Assets and Asset Store' started by save, Dec 4, 2013.

  1. save

    save

    Joined:
    Nov 21, 2008
    Posts:
    744


    What Particle Playground does

    Particle Playground 3 is a versatile particle effect editor for the Unity Engine which extends the capabilities of the Shuriken particle system. Along come abilities to build particles from skinned, procedural or regular meshes, images, paint, projection and splines - all live in the scene.

    Give your particles life through turbulent forces and let Manipulators guide them based on their position to give them new properties. The Event system give particles the ability to talk to other particle systems and game logic in the scene. Through the list of Snapshots you can load particle settings and jump through live particle states with transitions.

    Extensions in Package:
    Playground Recorder:
    Record, playback and time scrub particle systems. More info
    Playground Trails: Add versatile trails to your particles. More info
    Playground Splines: Draw bezier curves and let particles birth or target upon them. More info
    Playground Follow: Let GameObjects follow particles.

    Create and share
    Did you create something amazing? - Use the Preset Wizard to export presets as a UnityPackage and share with others. An exported preset will be stripped down to the core framework and run inside any project. License includes redistribution.

    Official website: http://playground.polyfied.com/ (demos available)
    Asset Store: http://u3d.as/5ZJ
    Manual: Particle Playground 3 - Next (includes reference)
    Reference: Particle Playground 3 - Script Reference
    Latest changes: Particle Playground - Version History (PDF)
    User group: https://groups.google.com/forum/?hl=en#!forum/particle-playground

    Feedback and support
    Make sure that you make your thoughts heard, feel free to give feedback or ask questions in this thread. The user group is a good way of staying connected where you'll get news and be able to talk with other particle enthusiasts.
    For more advanced support errands you're welcome to send a mail to support@polyfied.com.

    Videos



     
    Last edited: Dec 25, 2015
  2. Korindian

    Korindian

    Joined:
    Jun 25, 2013
    Posts:
    446
    Wow, great work, looks really useful. I just checked out the website and demo.

    Will most likely be picking this up for my next project.
     
  3. save

    save

    Joined:
    Nov 21, 2008
    Posts:
    744
    Thanks Korindian for inspiring words!

    I'm currently working on some videos which will show a couple of scenarios where the Playground can be useful, hoping to be able to publish first during next week so you can get a feel for the workflow.

    Also working on a source paint feature where you'll be able to paint emission positions as well. Much to be done, but really fun stuff! :)
     
  4. IanStanbridge

    IanStanbridge

    Joined:
    Aug 26, 2013
    Posts:
    333
    This looks great. Can it cope with the mesh being manipulated a runtime so you could make the particles follow a spline or mesh generated from a tube renderer or spline made with the curvy spline package for example ? Also can the color gradient be changed at runtime. I need to create an effect of a trail of plasma which can be controlled at runtime and also need to be able to change the color of this trail based on the color of any game objects the trail collides with during the game. I was wondering whether this would be suitable for that.
     
  5. save

    save

    Joined:
    Nov 21, 2008
    Posts:
    744
    Thanks Ian!
    Interesting question, I'll try to describe how that process is done. A World Object will store its data upon creation and then use the transform's TransformPoint to populate birth positions on each vertex. If you change a vertex position you will also have to change it on the World Object (of type WorldObject). This solution is due to performance.
    For instance:
    Code (csharp):
    1. PlaygroundParticles.worldObject.vertexPositions[int] = Vector3.zero;
    A Skinned World Object however will compute each vertex in realtime where you'll get live information each second frame (customizable with
    Code (csharp):
    1. Playground.skinnedUpdateRate
    if you want it every frame or less). This will work with no doubt as is, as long as your component is a Skinned Mesh.

    The color gradient can be changed at runtime, it's a regular Gradient where you'd use the SetKeys-function. Just changing the type of gradient is of course easier where you'd assign a new Gradient to your PlaygroundParticles.lifetimeColor.

    It should be suitable in current version to achieve what you want with a mesh. Using a spline is not currently available as a source - something to look into. Did this answer your question? Otherwise I'll elaborate as soon as I can! :)

    Edit: I'll also have a look at adding a helper function for updating a World Object's vertices position in realtime, I figure this will be highly usable for implementations where the World Object mesh is procedural. Thanks!
     
    Last edited: Dec 4, 2013
  6. IanStanbridge

    IanStanbridge

    Joined:
    Aug 26, 2013
    Posts:
    333
    Hi Save

    I'm assuming the mesh I would be creating wouldn't be skinned because I don't thing all of the flexibility I need from it could be done with bone animation alone. For example I need my plasma trail to be able to change length and so it's vertex count would change as a result as it got longer. I'm assuming as a result your particle playground would have to treat it as a new mesh when it's length changed. Could you give me a rough idea of how long it takes to process a new mesh at runtime. For arguments sake assume I have a 2000 polygon mesh would particle playground be able to cope with that being replaced 10 times a second for example ? Also could Particle Playground make use of the vertex colors or perhaps UV map textures of the mesh it was generating from ?

    I've also thought of another way I could possibly do it. I already know how to make game objects follow a spline so in theory if I told particle playground to emit particles from a sphere like you do in your example and point it at a spline. I could then attach attractive manipulators to each of these objects traveling along the spline to make them pull the particles around the spline that way.

    Do you think that would be a better idea ? How much does the number of manipulators affect the performance of particle playground ? Also can it cope with very strong forces from fast moving manipulators ? The faster I can move the manipulators along the spline the less I'm assuming I will need to cover the spline.

    Another question I have is regarding how particle playground generates particles from 2d images. Can it convert them at runtime or does it expect the images to have been converted first into a special format and how fast can it do that ? I was thinking about possibly using NumberFlow to generate textures procedurally at runtime and was wondering whether particle playground would be able to use them for particle animation ?

    I also have a suggestion , since your particle playground pools and reuses particles for performance am I right in thinking that there is very low overhead for example deleting a particle at a particular location and then replacing it with a different colored particle. If that's the case you could use that fact to have greater control over particle colors and could for example make the particle manipulators effect the colors of the particles too.
     
  7. save

    save

    Joined:
    Nov 21, 2008
    Posts:
    744
    Hi Ian!
    I like where this is headed, it's a must to support procedural meshes so I'll implement it as soon as I can, it'll be a checkbox in the Inspector UI. I think it will be ok to update something around that number quite often, but let me run some tests and get back to you on that. The robot in the demo is over 5k computed every second frame where a matrix is created along with other necessary vertex data.

    It supports UV-mapped textures in a state created from a mesh but not a world object at the moment. No vertex coloring for that matter either. Right now it's strictly pixel/uv or gradient. I'll add that to my tests later as well where I can extend the color features quite a bit I think.

    The manipulators aren't that expensive, they all live in the same calculation loop where they affect each particle by applying forces if they are within range. It's a very simple algorithm which is quick to iterate. It should cope in high-speed environments as well but I can't guarantee that it would work exactly as you would want it to. It sounds like an interesting use of them however! I think it's more safe to wait for procedural mesh support before you make a decision whether to buy or not. :)

    Interesting question about generating states at runtime, I think there would be a noticeable lag but it depends on the pixel amount, perhaps 32x32 is ok to deal with. The states are designed to be created at scene initialization so you won't experience lag when switching states. What you could do is refresh the state by rebuilding it which is available now, but I haven't tested it yet from a procedural perspective (such as NumberFlow or in other cases rendered textures at runtime).

    I really like your coloring suggestion, that sounds like a great use of manipulators! Let's see what I can come up with. Thanks for awesome ideas!
     
    Last edited: Dec 6, 2013
  8. lazygunn

    lazygunn

    Joined:
    Jul 24, 2011
    Posts:
    2,749
    While this isnt particularly useful to me as-is, i still want to see a very pretty video of it doing a variety of things as i think this could do very pretty and impressive things. So a pretty video in the OP asap please!
     
  9. save

    save

    Joined:
    Nov 21, 2008
    Posts:
    744
    Request granted! I haven't had the time yet but this is coming and I assure you it's as soon as possible. :)
     
  10. save

    save

    Joined:
    Nov 21, 2008
    Posts:
    744
    Finally got that video done! Time to focus on improvements. :)
    There's lots to be done before this is over, but I have to start somewhere. Next big update (v1.1) will increase by $20 as the current price ($30) is set to match its early release, just thought I'd let you know!
    I'm also looking for feedback and requests, just make a shout in here if you see areas where you'd want improvements.

    [video=youtube_share;coGGtI7PRSA]http://youtu.be/coGGtI7PRSA

    Edit: I should mention that every clip you see is in the Editor, you'll most likely get better performance at runtime (on desktop).
     
    Last edited: Feb 24, 2014
  11. lazygunn

    lazygunn

    Joined:
    Jul 24, 2011
    Posts:
    2,749
    That video was decent and er... worked well with my mindstate, good work
     
  12. MoHoe

    MoHoe

    Joined:
    Nov 5, 2012
    Posts:
    566
    "Make sure that you make your thoughts heard"

    My thoughts "Purchase time!!"

    Nice work Mr Save :)

    Edit: I'm now a proud owner of "Particle Playground" :)
     
    Last edited: Dec 7, 2013
  13. save

    save

    Joined:
    Nov 21, 2008
    Posts:
    744
    There's nothing like a little soft ambient beats and watching psychedelic points move on screen. :D

    Haha well thanks MoHoe! In that case make sure you use the updated manual (the one in the package is a bit rusty - I apologize).
    Edit: Thanks! Let me know if everything works out for you and if you come up with some sick uses. :)
    One thing I noticed today is that the Shuriken currently has a limitation of not rendering the particles when the object is out of view (sometimes). I'll mend this as soon as I can with rolling my own particle logic (that'll be needed for further work with Dx11 as well) - but till then a quick fix is to child the Particle Playground System to the Main Camera. Good luck man!
     
    Last edited: Dec 7, 2013
  14. lazygunn

    lazygunn

    Joined:
    Jul 24, 2011
    Posts:
    2,749
    I agree! the music and colours did that thing. Im gonna show this to a guy im sposed to be doing stuff for cause hes got the pursestrings on this one, i think he might dig it though

    Id probably look at some guy running just spouting particles for a bit though, Rez-tastic

    Can this thing do geometry particles? well whatever, looks awesome
     
  15. MoHoe

    MoHoe

    Joined:
    Nov 5, 2012
    Posts:
    566
    The updated manual is very well done :)

    I usually check if the asset scripts are in C# as I don't know javascript and don't intend to learn it (too much too learn when making games)
    But you did some sort of trickery with your particle demo, maybe even hypnotized me which made me purchase this asset without checking.

    Well I don't regret it :) I'll have to learn at some point.

    Any chance you will release a C# version?
     
  16. MoHoe

    MoHoe

    Joined:
    Nov 5, 2012
    Posts:
    566
    Oh forget about what I said about javascript, I didn't realize that I had so much control within the editor and I'm not looking to manipulate during runtime so it doesn't matter :)

    I just played around with the Particle Playground - Features demo... Awesome!! Performance is awesome too.. Nice work!!
     
  17. lazygunn

    lazygunn

    Joined:
    Jul 24, 2011
    Posts:
    2,749
    Understanding javascript is as trivial as c# in unity but i find javascript just looks sloppy and unstructured, its very ugly and amateurish looking and involves a lot of messing about putting javascript files in the plugins folder in order for things to work (and still then visual studio is a mess)

    I really wish, deeply, that everyone would just write everything in c# i promise you, it makes sense, its the best idea, everyone should do it

    Not so heavy hint
     
  18. Play_Edu

    Play_Edu

    Joined:
    Jun 10, 2012
    Posts:
    715
    You did it man.Awesome work.
     
  19. save

    save

    Joined:
    Nov 21, 2008
    Posts:
    744
    Thanks guys! Glad that it worked out without having to script MoHoe. You can call functions in Playground from c#, like lazygunn said you'd have to put it in a folder called Plugins under your Assets folder.

    Code (csharp):
    1. void Start ()
    2. {
    3.     // Get cranking with some particle mayhem in c#
    4.     Playground.Particle();
    5. }
    I find js easier to follow, but I guess it's because I come from web dev. from the beginning, I understand that people find c# more structured, but that doesn't cope with how my brain works. :D

    Sorry it doesn't handle spitting out geometry, that could hopefully be somewhere down the road when I implement the compute shaders. It's an interesting idea and that would be awesome, in fact just to be able to compute different structures than billboarded sprites would be very interesting - but I can't promise anything in that area before my programming skills are there as well. :)

    Thanks again for encouraging words!
     
  20. dstew

    dstew

    Joined:
    Aug 4, 2012
    Posts:
    28
    Will this system work with Unity Free/Standard? It is not clearly marked as to what version is required. Also, what platforms will this work on?
     
  21. save

    save

    Joined:
    Nov 21, 2008
    Posts:
    744
    Yes sorry that part is a bit unclear! It's available for Unity Free with no differentials from using Unity Pro.
    The asset is intended to be transparent towards all platforms, so far this is tested on Windows (standalone), Mac OS (standalone), Webplayer and iOS. In development it's tested on Windows 7 and Mac OS X Mavericks on Unity 4.3+ (Free and Pro).

    There will soon be a small update, smashing some small bugs and adding procedural mesh support (pricing will remain $30 for this release). :)
     
  22. save

    save

    Joined:
    Nov 21, 2008
    Posts:
    744
    Version 1.02 is sent to the Asset Store for review. This is a small update which mainly adds procedural mesh support.
    You can try it out here: Procedural Mesh Support Example. Happy molding!

    And as a standard for future updates I'm introducing a version documentation as well (not super exciting this release). :)
     
  23. dstew

    dstew

    Joined:
    Aug 4, 2012
    Posts:
    28
    Thanks for the information. Will get it.
     
  24. greggman

    greggman

    Joined:
    Nov 30, 2013
    Posts:
    19
    DOCS!!!!!!!!!!!!!!! :)

    The docs seem pretty sparse. Very engineer oriented. I hope you have time to write some "how to achieve effect ABC" or something along those lines

    Very cool!

    How do you make the particles respond to music like in the demo? I'm guessing you made a skinned plane and are moving the joints/transforms to the music or is there another way?
     
  25. greggman

    greggman

    Joined:
    Nov 30, 2013
    Posts:
    19
    Another question, probably a noob question but ....

    I made a particle system, it shows up with particles in both game view and scene view in edit mode. But when I press "Play" in Unity there are no particles in the game view but there ARE particles in the scene view.

    Any idea what I'm doing wrong?
     
  26. save

    save

    Joined:
    Nov 21, 2008
    Posts:
    744
    Thank you greggman! Yes I'd like to make some tutorials in a couple of videos, I just haven't had the time in between to do this yet. :)
    The particles isn't responding to the actual music (but you could do like you say - where you for instance let every vertex on a plane respond to a beat with GetSpectrumData). How I did it was to use a plane as World Object source, then overshoot the amount a lot (I think a plane is 121 points, I might have used around 5-6k). Then use the Overflow Offset in Z-direction and let Lifetime Velocity on Y-axis do a curve that looked something like this:

    $animationcurve-y.png

    Lastly a lifetime sorting of type linear, which will create that sequential pattern.

    This might be the standard Shuriken issue where the GameObject that has the Shuriken component is out of view (http://answers.unity3d.com/questions/218369/shuriken-particle-system-not-rendering-particles-w.html). If you have a look in the example scene "Features" you can see how I parent the transform of the Particle Playground System to the main camera. This is a dirty solution but it fixes the problem for now. This behavior will disappear when I detach it from using Shuriken - it's a bit down the road. :)

    Let me know if it's not working out, there's probably a quick solution to it.
     
    Last edited: Dec 10, 2013
  27. Becoming

    Becoming

    Joined:
    May 19, 2013
    Posts:
    781
    Looks very cool! Price is just great aswell! Like others mentioned already, i would also rather see it in C# but still very impressive, the video too :)
     
  28. save

    save

    Joined:
    Nov 21, 2008
    Posts:
    744
    Thanks Becoming! I understand that c# users is keen to use c# all the way in their project. I hope that with a bit more elaborate script documentation from my end it'll be ok to run this from the Plugins folder, the functions and classes would be called the same way. I've commented all the functions and it uses a wrapper class called Playground, which hopefully makes it a bit easier to use and read between languages.
    Anyhow thanks for encouraging words, they mean a lot! :)
     
    Last edited: Dec 10, 2013
  29. IanStanbridge

    IanStanbridge

    Joined:
    Aug 26, 2013
    Posts:
    333
    It's great that you added procedural mesh support and the performance looks pretty good with it as well. I was also playing around with the attract manipulators and had an idea to make them more powerful. Would it be possible to add a similar type of manipulator except make it an iterate node director. Basically make it so that you can place these nodes down in a path and make it where when the particles are first emitted they are attracted to only the first node but when they reach that node the node changes them to be attracted to the second node rather than the first and then the second node changes them to be attracted to the third node and so on. I'm guessing there would be a bit of a performance because the system would need to maintain which particles were attracted to which node which is why it would just be an option so you didn't always take a performance hit if you didn't need it. If you added this along with the ability to have the nodes effect color you would then have a very power system that would be able to very easily control the position and color of particles at all times. At present with unity it is very difficult to have easy control over particle colors if you need to change their speed because the color controls are man;y linked to changes over lifetime rather than position. Another suggestion would be able to have a manipulator that limited particles movements away from the procedural meshes so you could then use the other manipulators with these meshes to make particles flow along the surfaces of the procedural meshes and other such effects.

    Another point is make particle playground in what ever programming language you are most comfortable with , I don't see the need to convert it to C# . If people want it in C# they can just use one of the java script to c# converters on your source anyway. As long as you can call and reference particle playground from the other unity languages it shouldn't matter as the compiled performance is similar in Unity. All languages have pro's and cons and the best programmers are those that aren't loyal to any of them and happily switch if there is a feature of another language or performance benefit in using another. In Unity javascript and C# are fairly interchangeable so using either is fine.
     
  30. save

    save

    Joined:
    Nov 21, 2008
    Posts:
    744
    I really like this comprehensive feedback, it's great to get fresh thoughts into the project!
    The procedural abilities do open up for some really good advantages and interesting usability. Performance is good thanks to Unitys speed of iterating through built-in arrays. :)

    I dig the node idea, if I understand you correctly I think this could be done with a spline approach as well, the thing we were into earlier. Each node in the spline could have variables for coloring the passed particles for instance. I'm thinking what a nice way to do light bulbs along a spline which are all animated, Christmas decoration lights-ish. Let's se what I can do with this a bit down the road.

    Love the idea to strain the particles to their origin position, here I'll be able to use delta positioning as well to create a spring effect.

    The framework will be continued in JavaScript. :)

    Thanks man, great ideas and insights!
     
  31. save

    save

    Joined:
    Nov 21, 2008
    Posts:
    744
  32. lazygunn

    lazygunn

    Joined:
    Jul 24, 2011
    Posts:
    2,749
    Great work so far chap, i cant afford to grab it yet what with the time of year and so much stuff to buy! But the price is great and you're really putting some great stuff in

    I wouldn't mind the js and plugins folder stuff at all IF i was using monodevelop, but i'm using visual studio and unless someone can offer a solution, the problem is the intellisense or whatever its called goes dead for any js based classes/functions etc and it cant find anything, so coding slows to a crawl while i even find out where to captitalise, nevermind spell or try to find out what somethings called or even if it actually exists. Maybe there's some easy solution but at the moment using js with c# is frustrating in vs and now i'm used to vs, monodevelop just puts me off doing anything at all. Even the indentation is obnoxious.

    Hah, sorry though, this thing looks great, and i'll keep following it
     
  33. save

    save

    Joined:
    Nov 21, 2008
    Posts:
    744
    Thanks lazygunn! No worries, make sure to get it before v1.1 if you want it cheaper, otherwise there'll probably be greater deals further down the road. :)
    I hear you on the js issue, intellisense is one of those god given things. I like the latest MonoDevelop (4.0.1) a lot, it's much more fluid, did you try that out?
    Anyhow thanks man! I'll keep at it.
     
  34. Krileon

    Krileon

    Joined:
    Oct 30, 2012
    Posts:
    642
    This seams like it can do what TC Particles does, but at a more budget friendly price. Do you think some of the below can be accomplished with Particle Playground? It seams like it can based off the demo, but just want to be sure. I like the idea of particle effects being actual particle effects instead of a bunch of billboard images spawned over and over.

    http://forum.unity3d.com/threads/172251-TC-Particles-Making-special-effects-special-again

    I hate to ask you for comparisons, but there's not a free version for either so I've no way of actually trying both in my project.
     
  35. save

    save

    Joined:
    Nov 21, 2008
    Posts:
    744
    That's ok Krileon, it's a good thing you ask! Currently TC Particles is much more technically advanced than Particle Playground. I think the intentions are a bit different, and I think that will become more clear as PP evolves. What PP is centered around is handling different input sources for creating the particles, on top of that there are a couple of different ways to manipulate them over time with Transforms in the scene.

    I don't know if it makes a difference in your choice for future use, but here's what you can expect in the nearest future.
    Next up is being able to paint emission sources with parenting to transforms in the scene, what that basically does is that you can paint on a surface and let particles flow out of that spot (imagine an aquarium breaking its glass, a gasoline line bursting into flames). I'll also try to implement splines as a source where you can strain the particles along wires.
    I'll always make sure that PP will scale, the support will still be there for mobile/dx9 when I finally hit dx11 support, it's a really important matter.

    If you're looking for next-gen right now and target desktop, with sick particle effects out of the box, I'd go directly for TC Particles! I'm a huge fan of TC. :) If you see use for the things I've described now then try the Playground, and if you do and don't like it please let me know what you found unappealing. It's an evolving process where feedback is of great use to improve it. :)

    Let me know if you need any more info, a scenario would help in that case where I could say what works and don't right now out of the box. Thanks man!
     
  36. Krileon

    Krileon

    Joined:
    Oct 30, 2012
    Posts:
    642
    I see, it absolutely sounds like something I can make use out of. I can also make use of TC Particles, lol. Looks like I'll need to wait a bit longer and just grab both! Thanks for your reply!
     
  37. lazygunn

    lazygunn

    Joined:
    Jul 24, 2011
    Posts:
    2,749
    I really would love to grab it, but i reckon it'll be worth the extra in the future i think! Especially if you get onto the dx11 gpu side of things, this would be absolutely great, cause then it would fit right into things where i'm in charge of paying for things

    I have used the new monodevelop and it's a big step up but for my uses it still cant really hold a candle to vs, especially as i get very singleminded about workflow and a lot of things i do (although dont necessarily program myself) involve c++ and switching between is very demotivating

    But then again, for all my moaning if its just a couple of things you have to use the plugins folder for its bearable, so its just principle really, but not really worth you worrying about too much

    The painting thing is a great idea, theres another guy doing a general mouse recording thing which i suggested these things to: being able to use a graphics tablet pen for the input instead of a mouse, so you could be more accurate and use pressure to define some aspect of the paint (width would be useful in this case i'd imagine), and if it recorded the order it was painted in, and recorded the time taken through the stroke (like if the stroke slows, that is recorded) then in the gasoline example, a flame could travel up the paint, slow where you slowed with the painting, and add intensity or area based on pressure, or really give a choice of parameters for any of these factors, that would be extremely useful
     
  38. save

    save

    Joined:
    Nov 21, 2008
    Posts:
    744
    Hehe well alright that sounds like a good thing! :)

    I understand, the big release will be when I involve compute shaders for sure because then it actually can handle all the crazy amount of particles that is needed for some of the sources to work at its best (images for instance). I really appreciate the feedback however you're giving and those brush abilities do sound much interesting. I would have to find a way to implement pressure, right now it's a bit risky to involve another third party this early but I definitely see this being an option later on.
    Interesting idea to be able to time the painted strokes. I'm thinking especially where the painted areas are easy to work with from code - and "ignite" with different methods (a nearest neighbor sorting would be interesting here). Let's see what I can make out of it, there's probably a couple of alpha iterations before I find a good workflow to this.

    I would like to work some on the inspector gui as well, define the structure a bit better with a bit more appealing layout. Then iterate on gizmos to give better scene info, especially when there's live painting going on in the scene. Much to do, but I think it's important to have an appealing visual way of working in the scene.
     
  39. lazygunn

    lazygunn

    Joined:
    Jul 24, 2011
    Posts:
    2,749
    I just went and looked at the price of this again and realised its probably a good idea to get it soon. It's going to be very useful, thats a fact, and if you get into gpu land, it becomes an investment

    One of the effects i need to figure out atm is a volcano, its not a small undertaking because it's to be enormous and realistic (its in a later stage so not so much spouting lava, more an 8km high smoke plume). If it seems this could help i'll probs ask you advice on it after i've bought it

    I'm buggiing everyone i feasibly can on this subject
     
  40. save

    save

    Joined:
    Nov 21, 2008
    Posts:
    744
    Sounds like a good plan! Yes of course, just ask away. :) Right now when there's no painting abilities, given that this is a type of stratovolcano - I'd suggest to either let it emit from a sphere at the top of the volcano (at the vent) or using a mesh that fills the area of emission. Then you'll probably have good use of lifetime forces (in X and Z where you could move the end nodes of the curves a bit to simulate small turbulence), a bit of damping, small gravity, small local velocity and a higher initial velocity. Lifetime color could go from light grey - almost black - grey.
    If you want to interact with it (airplane / heli flythrough) you could always attach a manipulator to that object.

    I'll update with a couple of shaders and materials next round, I imagine vertex lit would be good to have in your case.

    PP doesn't support texture animation right now, but it will once I detach it from Shuriken where I'll roll my own uv-offset. Here I'm thinking ability to scramble uv-offset as well, which will create a dynamic way of presenting textures on the particles but keep same drawcalls at a minimum of computing cost. This would make you able to have different images (even if you don't plan to cycle an animation) in one particle system.
     
    Last edited: Dec 13, 2013
  41. lazygunn

    lazygunn

    Joined:
    Jul 24, 2011
    Posts:
    2,749
    I'll show you a video to illustrate exactly why the idea intimidates me, in terms of the conceot of the game (my fiancee is co-authoring and she'll be calling the shots based on how shes attaching symbolism/context/meaning to everything which is why compromises are hard to face, shes just not going to be be confident about it uless she can relate the imagery to the vision. Keeps me on my toes at least

    The eruption is based on tne 2010 iceland events that shut down northern european airspace, anyways a video! aside from playing some kind of crazy talk volumetrics in there, particles seem the sane choice, especially as the plume rises into the atmosphere and then is pushed strongly along the jetstream



    All the water thats combusting into steam way under the surface causing enormous explosions further to the base, which sounds like something your asset would be great for, the plume is so massive, changing tone, evolving and filtering light is quite something (nevermnd interior lighting and lightning inside the plume) it's just a huge undertankig it seems to me, but frankly the entire project is born of a wish to surprise (narratively it's got some huge surprises we've figured so far) but Im finding how to actually do challenging effects before i turn unity on

    This kind of think would be a pain i the arse with shuriken on its own, it seems like your emitters would give much more power (like a very large but periphery plume expand in severaldirections

    I think the particles would indeed have to be animated but im not sure a great deal (Assuming youre referring to flicking through a texture atlas) but i'm mpre concerned about how many particles would be needed, which makes me lean to a GPU implementation if possible

    I do have quite a handy selection of transparent images to use for all parts of the development and it does pose an interesting challenge eh! Your asset is a deal atm if you commit to your roadmap and its going to be useful as hell given what my plans are, so i wouldnt worry about volcano and advise before you have my money, and like every asset fawner im asking too much of the dev right this instance, but yeah that could be pretty impressive

    The guy i'm helping out snazz his own videogame would be interested i think so maybe he can pay, but i hope whoevers paying is doing it soon haha
     
  42. lazygunn

    lazygunn

    Joined:
    Jul 24, 2011
    Posts:
    2,749
    Ahh and yes, a fast vertexlit shader would probably be the answer in this situation

    The whole 'game' (it more like a slightly more interative Dear Esther than a real game' is planned probably as having minimum spec of my machine or at least a 560ti, so i ca have fun and everyoes assets being used can enjoy watching their work get a great showcase.
     
  43. save

    save

    Joined:
    Nov 21, 2008
    Posts:
    744
    Much interesting concept!

    I wonder if PP alone really is sufficient enough in doing this with a realistic result. I think the concept of volumetrics are of great essence when approaching this issue. Have a look at this example: http://stevencraeynest.wordpress.com/2013/03/29/easy-volumetric-explosion-in-unity3d/ - which is a remake of the Dx11 volumetric explosion in Dx9. In any case it's an inspiring technical easy approach in achieving something that appears really advanced.

    I imagine combining smoke particles with this kind of geometry+shader approach, where you're able to manipulate the smoke over time and work with its velocity would make you able to do something that is similar to the video. This is probably a couple of days work as it involves a lot of testing and iteration though.

    The roadmap is set in stone as long as me and my family is healthy. :)

    I love the concept of those kind of games (Dear Esther is a great game), adventurous and open minded. You just got me hooked hehe. :)
    Version 1.1 will have some extra content in regards of shaders, textures and materials.
     
  44. lazygunn

    lazygunn

    Joined:
    Jul 24, 2011
    Posts:
    2,749
    If you have or can borrow an OR, play dear esther with it. The water's all messed up but the rest of it is mindblowing, probs the most beautiful thing ive ever had deivered to my eyes via a computer, i think you just take a deep breath every 4 seconds and look around gawping as some new feature becomes visible. Huge fan of that type of game, dear esther was maybe a primitive but visually beautiful enough affair to get people playing and enjoying the whole conceot/delivery/pacing etc

    Any ways dont want to derail too much, yeah i was talking to a graphics programmer mate over a couple of days (When I first showed him what i wanted to do he went 'wow er.. il have to think on that') but he's behind the volumetric approach too, Fluidity, on the assets store could be great for it, i suppose would have to tal to the author, he did a pyroclastic explosion type thing that i might be able to reengineer for the billowing smoke.. theres so much stuff going on in it but it would really be quite something to pull off, my plan is to shut people crticising unity's graphics up forever

    There may be spot effects particle playgroud could be great for with the volcano, whule the main body of the plume is probbly going to look wrong close up with particles, various ground effects and effects that wont get too close to you would be fine

    My main thought for this was actually in the animation of the main character, i was looking at tc particles and it looks like an amazing package but too dear and overkill for things where i'd like to use images as emitters, for vents and suchlike, even grinding joints, and from your videos to emit and disperse systems would be good for the main character switching modes and other systems kicking in, as it's animated for seamless changes into a wheeled vehicle or a rotor based aircraft. The fun thing about these kind of assets is finding fun ways to use them, i find it amazing how often something that would never otherwise occur to me pops into my head when i see an effect i want to make.
     
  45. save

    save

    Joined:
    Nov 21, 2008
    Posts:
    744
    Your intentions sounds very interesting! I agree that it's not Unity's fault of the graphical content and quality of the products, it's really in the hands of the artists. I'm sorry for this somewhat short answer as I'm on my phone, but I'd be happy to continue the conversation in a pm later. Do you have a dev thread for your project? Would be nice to follow it.

    Just as a heads up, last couple of days I've focused on these features for PP:
    • Adding support for realtime painting as source. All emission sources has a parent so they follow position and rotation of GameObjects in the scene.
    • Controlling the flow in percentage of all available particles without rebuilding particle data arrays.
    • Nearest neighbor lifetime sorting. Imagine a water ripple effect on any source.
    • Control in Scene View of altering behavior for manipulators.

    Next up is creating customizable brushes to paint with and a couple of neat materials.
    Detaching it from Shuriken will be in the release after that, where highly customizable uv-offset will be available. Hopefully also splines as source. :)
    I'll make sure to have a video for upcoming releases, it's a bit easier to get ideas how you can use it instead of reading about the features.
     
  46. IanStanbridge

    IanStanbridge

    Joined:
    Aug 26, 2013
    Posts:
    333
    Hi Save the new features sound interesting. I'm not sure decoupling Particle Playground from Shuriken would be a great idea though unless it could link back into it again as if it is based on shuriken it will gain any of the additions that Unity add to it as well. I think in general people prefer tools that enhance existing Unity functions rather than ones that entirely replace them unless they are implementing features unity is unlikely to implement themselves. If you are planning to gpu accelerate it it might be better to wait and see how unity chooses to GPU accelerate in a cross platform manner rather than writing it in directx 11 for example and limiting to Windows and Xbox platforms. It's pretty likely that behind the scenes Unity is probably working on that system at the moment and will then upgrade both the particle and physics system to use it. I'm guessing they will either use Opencl or make their own system and then have unity compile it into the different standards in a similar way to how they deal with shaders at the moment. It would be better to see how the PS4 does gpu acceleration in Unity before working on it unless you don't mind rewriting it latter . Also bear in mind that gpu accelerated particle systems aren't always better as they use up resources on the gpu which could be better used for graphics and add latency if those particles need to be interactive as part of the gameplay. In consoles the gpu is far less likely to have spare resources than the cpu as in games usually the gpu is the limiting factor not the cpu at the moment. That's why I'm assuming unity will likely switch to something like opencl as it can use gpus and cpus simultaneously. It's also cross platform and supported on mobile.

    Also one thing I noticed about your procedural mesh generator when running on mobile. The good news is it runs surprisingly well on mobile , the bad is that when you first select the sphere in your demo to start changing the mesh the frame rate drops to about 2 frames per second for a few seconds. After that though it lets you continue to change it without a performance hit. Is there something you are not caching in it to cause this ? It looks like it is suffering the same issue you get with using audio clips before they are in memory on mobile which you can fix by preloading them.

    Also regarding the direction node based manipulator I mentioned. It's not exactly the same as a spine system it's actually more flexible and probably easier to code than a spline system. Basically it is exactly like your existing attract manipulators which work reliably even while being moved proceduraly so are quite flexible. The only difference is that the system would also need to be able to detect when particles were within a certain distance of the node and then change certain properties about them including which other nodes they were attracted to. If you wantted to do a spline system you could simply make the particles no longer attracted to the node they were in and instead attracted to the next node. They could also do far more than that though because you could put logic into these nodes without a performance hit, For example you could easily add a path split function that simply told 50 percent of the particles that entered it to go towards node 5 and turn green and 50 percent of them to go towards node 7 and turn blue. In turn node 5 might make all particles than enter it increase in size and node 7 might make them smaller. Using this system you could very simply create any particle manipulation you wanted. All you would have to do is ensure the code that determined how close a particle was to a node was efficient and cache and index all the particle properties such as color and size etc in a similar way to how you pool your particles for efficiency at the moment anyway.
     
  47. lazygunn

    lazygunn

    Joined:
    Jul 24, 2011
    Posts:
    2,749
    Definitely won't start a project thread until i'm confident i actually have something, but watch this space!
     
  48. save

    save

    Joined:
    Nov 21, 2008
    Posts:
    744
    First of all thanks for superb feedback! It's of great use to get insights from other developers while I'm trying to make the best out of PP.

    Decoupling from Shuriken
    Thanks for bringing that up, I do understand the issues you're mentioning with rolling yet another particle system in Unity. Currently why I see benefit in doing so is that I'll have complete control over the entire workflow, even from structuring each particle. I imagine that there's a great possibility here for me to optimize yet another round of how the particles are handled in built-in arrays - and connect it directly to the current arrays. Right now PP only uses the billboarding technique from the Shuriken particles where some abilities are lost which I can't control due to the access level of a Shuriken particle. For instance UV-offset, where I can see a usage in letting particles have scrambled UV-offset over their lifetime which would create a richer variety to the particles appearance. There's also a smaller issue where you have to select the Particle Playground System before it can be rendered in the Scene. Of course also the Compute Shader features for later. I'd like to have more precise control of how this is presented in its workflow. I like the Shuriken particle system, but it's not fully compatible with where PP is and wants to go.

    Much interesting on the OpenCL, problem is I don't know when or even if. I've tried to setup a dialogue with Unity from the day I released. I've gotten some responses but I'm hoping to have a richer dialogue with them where we can talk about the roadmaps for both Unity and PP, so I can make the best decisions in where this is headed. I think there's a platform for that communication further into this project, it's still in its infancy and I understand that there's still much to prove - and improve. :)

    However, I hate to do something drastic, so there's a lot of tests and conversations before I actually release something of this matter. It's just that I see great opportunities from where PP is today in reworking it this way.

    Frame drop when creating a World Object
    I'm happy to hear that it's working good after initiating a World Object. What I think happens is that the memory has to be rewritten for a couple of built-in arrays (vertexPositions and normals) that is created when you create a new World Object. This is blazing fast when you have enough memory and CPU - but it's another story for mobiles, and the Features scene were never really intended from my end to leave the desktop platform.
    What you can do if you want to change World Object during simulation is to create your World Objects on beforehand (for instance in Start) and then assign it to the worldObject slot in the Particle Playground System.

    Code (csharp):
    1.  
    2.  
    3. // Variables (preferably outside of your function)
    4. var yourParticleSystem : PlaygroundParticles;
    5. var wo1 : WorldObject;
    6. var worldObjectTransform : Transform;
    7.  
    8. // Assign an already existing Particle Playground System
    9. yourParticleSystem = Playground.reference.particleSystems[0];
    10.  
    11. // Create a new World Object
    12. wo1 = Playground.WorldObject(yourParticleSystem, worldObjectTransform);
    13.  
    14. // Assign a World Object
    15. yourParticleSystem.worldObject = wo1;
    16.  
    For mobiles caching is king for sure. :)
    I'll make sure to do some profiling as well on mobiles before next release, I'm glad you brought it up so I can pay extra attention there.
    (For next release I've added GetParticles (i : int) : PlaygroundParticles to the Playground wrapper as well.)

    Node Manipulators
    Thank you for elaborating, I'm sorry I misunderstood when you brought their abilities up the first round. This sounds extremely interesting, I love the idea of channeling particles this way. I'll have a look in how I could represent that logic... I would want it to be easily extendible as the abilities are so broad. There has to be about a million usages for this - so this is going in! :)
    I see a great use in having nodes as a source as well, where emission would be controlled from a complete /or parts of/ a spline, it's a bit similar to what will be introduced with the paint - but with a higher control level of emission's position distribution.

    I hear you, it's an ambitious and interesting project, and I'm a real sucker for adventurous games. Feel free to pm when you launch that thread. :)
     
    Last edited: Dec 18, 2013
  49. toto2003

    toto2003

    Joined:
    Sep 22, 2010
    Posts:
    502
    hello save
    i really enjoy particle playground, it is really powerfull and had a lot of fun with it, as i m still beginning with coding i got a hard time to make the particle display on play when there other shiruken particle on the scene, i see that there other poeple getting the same problem i try to check the feature exemple but with my limited scripting knowledge i only manage to write this
    but i didn t manage to play my preset particle that i create on the editor...

    any help would be appreciated

    thanks
     
  50. save

    save

    Joined:
    Nov 21, 2008
    Posts:
    744
    Hi toto!
    I'm glad to hear you enjoy it. I'm having a hard time replicating the issue, rendering several different particle systems (both regular Shuriken and PP's together in one scene) works well on initiation here.
    I'm wondering what settings you are using, are you able to send me your project? Preferably with the situation as isolated as you can. If so, please send it to support@polyfied.com.

    A current issue that is coming from the Shuriken particles is that the particles won't display when the GameObject is out of view. Depending on where your camera is pointing this could be what's causing this. That's why I parent it to the camera in the example scene. This is one of the really good reasons why I'd like to decouple from Shuriken in an update later on. Could it be this problem you're experiencing?


    Please see this example for a very simple usage in script:

    Code (csharp):
    1. private var particles : PlaygroundParticles; // Cached variable of our Particle Playground System
    2. private var sphere : GameObject; // Cached variable of a Sphere (as source)
    3. var particleMaterial : Material; // Set material in Inspector (for instance Playground Additive Round Material)
    4.  
    5. function Start () {
    6.     // Create and assign a new PP System to 'particles'
    7.     particles = Playground.Particle();
    8.    
    9.     // Create a Sphere as source
    10.     sphere = GameObject.CreatePrimitive(PrimitiveType.Sphere);
    11.    
    12.     // Set sphere as source to particles
    13.     Playground.WorldObject(particles, sphere.transform);
    14.    
    15.     // Set source to WorldObject of particles
    16.     particles.source = SOURCE.WorldObject;
    17.    
    18.     // Set a different material
    19.     Playground.SetMaterial(particles, particleMaterial);
    20.    
    21.     // Set Initial Local Velocity
    22.     particles.initialLocalVelocity = Vector3(10,10,10);
    23.  
    24.     // Set particle system childed to the camera
    25.     particles.particleSystemTransform.parent = Camera.main.transform;
    26.     particles.particleSystemTransform.localPosition = Vector3(0,0,1);
    27. }
    Is that script working for you in Play mode?

    Next update you'll be able to create your own presets as well, which also will be easy to instantiate through code - hopefully this will create an easier workflow to create pre-designed particle systems.

    Let me know how it works out for you, in any other case make sure to send me a support errand with your project attached. Thanks!
     
    Last edited: Dec 22, 2013