I need to create particles on the surface of a model. I use MeshParticleEmitter with StartSpeed = 0. While I try it with static model, everything is ok, but when a model has an animation, particles are created on the place, where model was at the first frame of animation. What can I do to cope with it?
Today I was looking for an answer to the same problem.
Here my solution:
I created the following script:
using UnityEngine;
using System.Collections;
public class GetAnimatedMesh : MonoBehaviour {
public SkinnedMeshRenderer meshRenderer;
public Mesh mesh;
// Update is called once per frame
void Update () {
meshRenderer.BakeMesh(mesh);
}
}
with this script you have to do the following:
- drag & drop the script somewhere on the animated mesh object
- drag & drop your skinned mesh renderer into the slot
- drag & drop a mesh into the other slot
- drag and drop the same mesh also into your particle system as mesh for the emission shape
the important point is to use a “temporary mesh” , a mesh that you are not using otherwise in your project - because it will be overwritten with the current version of the skinned mesh renderer’s mesh.
In my case I just made a copy of my character, and then used the mesh of that copy as “temporary mesh”
hope this helps anyone who ends up here with a similar problem
Particle Playground is an asset I have used that allows you to have particles on skinned meshes that move when they update/animate:
http://polyfied.com/playground.php
It does it pretty well and has a lot of values you can tweak to get it right.
It is a bit of a premium priced asset though ($65).
Unfortunately there’s no good way to do that, since the animated mesh is not readable.