Monday 13 October 2014

Hydra Particle System update 13/10

Quick update on some of the things I missed in my last blog post!

[Collision]
Collision has now been implemented, you can choose between 3D and 2D collision modes for each emitter, select what the particles will collide with and the effect the collision will have on the particles. Video of 2D collision here.

[Emission Shape]
Shape emission has also been implemented, and we are currently in the process of adding and testing bezier curve emission. Users should be able to place and reposition points in the scene [or using the inspector] to create a shape of their choosing to emit from.  The curve can be a closed or open shape in the 3D space. Video here of bezier curve being used in the editor. We are also discussing the possibility of having particles emit/travel along the placed bezier curve.

[Texture Sheet Animation]
Particles can now be animated from a texture sheet, it gives the user the chance to be very precise when it comes to the look and development of specific particle effects, such as the smoke dispersion example above.



















[Colours]
Though colours have been a part of the particle system for a while, the colour blending has now been completely rewritten. We previously had settings that were hardcoded such as colour-over-speed and colour-over-camera-proximity. Now you can control the order in which the colours are blended and layer them up. This also gives us the opportunity to add more modes at a later date. As you can see from the above screenshots [right] there is an expansive variety of colour blending options to choose from.

I have been testing the optimisation in our most recent version of Hydra Particles on my PC and can successfully have up to 2200 particles on the screen before the FPS begins to dip below 60. We have also had some testing done for us on Android platform with the following results:

Testing on a Samsung Galaxy S3 with APK v0.2.0

600 particles at 60FPS
900 particles at 60FPS
1200 particles at 35FPS
1500 particles at 25FPS
1800 particles at 20FPS
2100 particles at 15FPS

Between 600 and 1500 particles it runs pretty smooth, even when at 25FPS. Nevertheless for a mobile device 600 particles on screen are already a lot of particles, and at the current performance speed is truly top notch.

Surprisingly and contrary to what I was expecting, when activating the collider it doesn't slow down at all the performance. 

Thursday 2 October 2014

Hydra Particle System Update 02/10


[.gif of flames test using Hydra Particle system]

It has been a few months since my last update on our particle system, but it has come so far since then!

We have set up some performance tests set up for the emitter for both Web and Android to allow for people to try it out for themselves.

Not only is it now crammed full of new features and had an interface upheaval, but it has been optimised considerably to run quicker on a number of different platforms. We have also decided to cut down the number of different renderers we were going to offer, since the benefits didn't quite out-way the draw backs. We are working solely using the Mesh Renderer now [baked] which combines all the particle into one single mesh.

[New interface]
Inspector has been tidied up considerably to make the Emitter easier to work with.

[Quaternion Rotation]
Per-particle rotational value, with the opportunity to lock the rotation and angular velocity to a specific axis. Works with curves/constant values


[Freeze position/rotation in an axis]
We have added the option to fix the positions and rotations to a specific axis which is excellent for working with 2D.

[A number of new forces]
A few additional forces have been added to give a wider range of ways to manipulate the particles.

Directional - Directional force simply adds a specified velocity to the particle velocity (useful for things like wind).
Gravity - A directional force that applies the gravitational force specified in the project physics settings.
Gravity Well - Attracts particles based on proximity to the gravity well.
Target Force – Similar to Gravity Well. Rotates the velocity towards or away from the force center - based on proximity.
Look at Force - Turns particles to face the force position when in proximity to it
Dampen Force – Lose or gain velocity over time.
Turbulence - Uses simplex noise to offset the particle velocity

Sunday 13 July 2014

Hydra Update 13/07


 We now have the option to set up billboard particles which follow the camera as an alternative to 3D mesh ones that we have been working on up until now.


I have slowly been testing and documenting the particle system and trying to make shaders using the node-based Shader Forge plugin. I am currently trying to set up a shader that will allow parts of a mesh to glow whilst not diminishing the original diffuse colours as this first example I tried, though the emssion 'glow' seems more prominent:


Thursday 3 July 2014

Hydra Update 03/07

 We've been working on organising our particle system in a more effective manner.
 Below is a breakdown of some of the components we are currently implementing. The particles system is being designed with 3D particles in mind, though we are hoping to implement billboard particles too at a later time.

EMITTER

Emission - number of models per sec
Simulation - Slow mo/fast forward
Energy - life span

Velocity - Rate of speed at which the particles are emitted
Rotation - Choose the rotational axis that each particle will turn on and the velocity at which it rotates
Scale - Size to which the meshes scale to

- There is the option for most of these component pieces to be randomised

RENDERERS

We're going to be providing access to 3 separate renderer options, as they all have pros and cons for different uses. All renders will have the options for casting/receiving shadows, setting a mesh and setting materials

Baked
Efficient to draw just heavy on CPU side - slow processing - hard limit on number of verts

GL
Our first experiment with GL particle renderer was slow - disappointing
This should have been fast to process and should be fast to draw cant figure out why - should be the fastest and most efficient of the 3

Draw
Fast to process but generates a ton of draw calls - one draw call for each material used

FORCES

Gravity - This should act in accordance with the settings for gravity under Edit >> Project Settings >> Physics

Gravity Well - Can be attached to an object to pull the particles in






Codename 'Hydra'

Myself and a colleague have been considering some ideas for a new Unity3D particle system for a few weeks now, but not had much time to start any work on such an idea. Now I currently have no work commitments, which now gives me plenty of time to start planning out lay out the ground work for it.

Our goal is to create a system to support 3D particles as a plug-in for Unity3D. We want to try and reduce the draw calls as much as possible, searching for the most efficient method to do this to allow the user to get the most amount of detail possible, without the drop in frame rate. We want to give an alternative to the current built-in Shuriken system. More information to follow soon...

Thursday 10 April 2014

Comic

Lately I have been kept quite busy by work; not having very much time for personal projects and my team have also been busy with work and personal matters. I have been working with Foster on a potential comic idea though, it will be a very gradual process, but it's keeping my creativeness flowing. Hopefully I will be able to post more about this soon.


We shall be working on the story together, with Foster drawing most of the primary art and I shall be scripting and editing the line art. We are unsure whether it will be coloured or just black and white yet.
Early sketch...