Graphics Primitives

ClearAll[drawParticle,drawParticleX,readTrj];

drawParticle[pos_,dir_,radius_,color_,opacity_:1.0]:=Graphics3D[{Lighting-> "Neutral",Specularity[White,20],Opacity[opacity],
color,Sphere[pos,radius],Thickness[0.02],Darker[Orange],Arrowheads[0.02],Arrow[Tube[{pos+radius dir,pos+2radius dir},0.2]],
Tube[{pos-radius dir, pos-1.5 radius dir}, 0.2]}]

drawParticleX[pos_,dir_,radius_,color_,opacity_:1.0]:=Graphics3D[{Lighting-> "Neutral",Specularity[White,20],Opacity[opacity],
color,Sphere[pos,radius],Thickness[0.02],Darker[Orange]}]

Plots

ClearAll[trjPos,trjDir,radius,dt,anim,fname,skipSteps];

skipSteps = 0;
radius = 5;
dt = 50;

trjPos[[i,j]] : position {x,y,z} of particle i at time j
trjDir[[i,j]]  : swimming axis {e3_x, e3_y, e3_z} of particle i at time j

opp=0.1;
anim = Table[
Show[{ListPointPlot3D[{
trjPos[[1,Max[1,t-dt];;t]],
trjPos[[2,Max[1,t-dt];;t]],
trjPos[[3,Max[1,t-dt];;t]]}
,PlotStyle-> {Red,Blue,Darker[Green]},PlotRange-> {{0,64},{0,64},{0,64}},Ticks-> None,
BoxRatios-> {1,1,1}, ViewPoint-> {64,-48,26},ViewAngle->  0.98°],
drawParticle[trjPos[[1,t]],trjDir[[1,t]],radius-1,Red],
drawParticle[trjPos[[2,t]],trjDir[[2,t]],radius-1,Blue],
drawParticle[trjPos[[3,t]],trjDir[[3,t]],radius-1,Darker[Green]],
drawParticleX[trjPos[[4,t]],trjDir[[4,t]],radius-1,Black,opp],
drawParticleX[trjPos[[5,t]],trjDir[[5,t]],radius-1,Black,opp],
drawParticleX[trjPos[[6,t]],trjDir[[6,t]],radius-1,Black,opp],
drawParticleX[trjPos[[7,t]],trjDir[[7,t]],radius-1,Black,opp],
drawParticleX[trjPos[[8,t]],trjDir[[8,t]],radius-1,Black,opp],
drawParticleX[trjPos[[9,t]],trjDir[[9,t]],radius-1,Black,opp],
drawParticleX[trjPos[[10,t]],trjDir[[10,t]],radius-1,Black,opp],
drawParticleX[trjPos[[11,t]],trjDir[[11,t]],radius-1,Black,opp],
drawParticleX[trjPos[[12,t]],trjDir[[12,t]],radius-1,Black,opp],
drawParticleX[trjPos[[13,t]],trjDir[[13,t]],radius-1,Black,opp],
drawParticleX[trjPos[[14,t]],trjDir[[14,t]],radius-1,Black,opp],
drawParticleX[trjPos[[15,t]],trjDir[[15,t]],radius-1,Black,opp],
drawParticleX[trjPos[[16,t]],trjDir[[16,t]],radius-1,Black,opp],
drawParticleX[trjPos[[17,t]],trjDir[[17,t]],radius-1,Black,opp],
drawParticleX[trjPos[[18,t]],trjDir[[18,t]],radius-1,Black,opp],
drawParticleX[trjPos[[19,t]],trjDir[[19,t]],radius-1,Black,opp],
drawParticleX[trjPos[[20,t]],trjDir[[20,t]],radius-1,Black,opp],
drawParticleX[trjPos[[21,t]],trjDir[[21,t]],radius-1,Black,opp],
drawParticleX[trjPos[[22,t]],trjDir[[22,t]],radius-1,Black,opp],
drawParticleX[trjPos[[23,t]],trjDir[[23,t]],radius-1,Black,opp],
drawParticleX[trjPos[[24,t]],trjDir[[24,t]],radius-1,Black,opp],
drawParticleX[trjPos[[25,t]],trjDir[[25,t]],radius-1,Black,opp],
drawParticleX[trjPos[[26,t]],trjDir[[26,t]],radius-1,Black,opp],
drawParticleX[trjPos[[27,t]],trjDir[[27,t]],radius-1,Black,opp],
drawParticleX[trjPos[[28,t]],trjDir[[28,t]],radius-1,Black,opp],
drawParticleX[trjPos[[29,t]],trjDir[[29,t]],radius-1,Black,opp],
drawParticleX[trjPos[[30,t]],trjDir[[30,t]],radius-1,Black,opp],
drawParticleX[trjPos[[31,t]],trjDir[[31,t]],radius-1,Black,opp],
drawParticleX[trjPos[[32,t]],trjDir[[32,t]],radius-1,Black,opp],
drawParticleX[trjPos[[33,t]],trjDir[[33,t]],radius-1,Black,opp],
drawParticleX[trjPos[[34,t]],trjDir[[34,t]],radius-1,Black,opp],
drawParticleX[trjPos[[35,t]],trjDir[[35,t]],radius-1,Black,opp],
drawParticleX[trjPos[[36,t]],trjDir[[36,t]],radius-1,Black,opp],
drawParticleX[trjPos[[37,t]],trjDir[[37,t]],radius-1,Black,opp],
drawParticleX[trjPos[[38,t]],trjDir[[38,t]],radius-1,Black,opp],
drawParticleX[trjPos[[39,t]],trjDir[[39,t]],radius-1,Black,opp],
drawParticleX[trjPos[[40,t]],trjDir[[40,t]],radius-1,Black,opp],
drawParticleX[trjPos[[41,t]],trjDir[[41,t]],radius-1,Black,opp],
drawParticleX[trjPos[[42,t]],trjDir[[42,t]],radius-1,Black,opp],
drawParticleX[trjPos[[43,t]],trjDir[[43,t]],radius-1,Black,opp],
drawParticleX[trjPos[[44,t]],trjDir[[44,t]],radius-1,Black,opp],
drawParticleX[trjPos[[45,t]],trjDir[[45,t]],radius-1,Black,opp],
drawParticleX[trjPos[[46,t]],trjDir[[46,t]],radius-1,Black,opp],
drawParticleX[trjPos[[47,t]],trjDir[[47,t]],radius-1,Black,opp],
drawParticleX[trjPos[[48,t]],trjDir[[48,t]],radius-1,Black,opp],
drawParticleX[trjPos[[49,t]],trjDir[[49,t]],radius-1,Black,opp],
drawParticleX[trjPos[[50,t]],trjDir[[50,t]],radius-1,Black,opp]
},ImageSize-> 500
],
{t,1,1001,2}
];

Export["trj_squirm_phi0.1_a+2.avi", anim];