Create particles on the surface of animated model

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:

  1. drag & drop the script somewhere on the animated mesh object
  2. drag & drop your skinned mesh renderer into the slot
  3. drag & drop a mesh into the other slot
  4. 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.