You basically wants to rotate the particles around the forward vector of the modelview matrix:
[code=pascal]
function Matrix_GetForward(const Matrix: TMatrix4f): TVector3f;
begin
Result.X:= Matrix[02];
Result.Y:= Matrix[06];
Result.Z:= Matrix[10];
end;
...
Vector:= Matrix_GetForward(BillBoardMatrix);
MatRotate:= Matrix_Rotation(Particle.Spin, Vector);
[/code]
I haven't tested this code in practice, but i think it should do the trick.
Bookmarks