Hi,*in another post* I found a way to achieve my goal of converting the coordinate position to camera space and then scaling it to a small size so that he appears first.

this is new code:

```
def Draw(self,op, drawpass, bd, bh):
if not op[c4d.S_MOTIONTRAIL_GTWO_DRAWENABLE]:
return c4d.DRAWRESULT_OK
#bd.SetMatrix_Matrix(None, c4d.Matrix())
pmg = ~bd.GetMg()
bd.SetMatrix_Camera()
all_pos = self.parameters['all_pos']
color_lis = self.parameters['color_lis']
point_size = op[c4d.S_MOTIONTRAIL_GTWO_POINTSIZE]
bd.SetPointSize(point_size)
for per_pos,color in zip(all_pos,color_lis):
bd.SetPen(color)
cnt = len(per_pos)
temp_lis = []
for i in xrange(cnt-1):
c = (pmg * per_pos[i]).GetNormalized() * 20
f = (pmg * per_pos[i+1]).GetNormalized() * 20
bd.DrawLine(c,f,c4d.NOCLIP_D)
temp_lis.append(c)
temp_lis.append(f)
bd.DrawPoints(temp_lis)
return c4d.DRAWRESULT_OK
```

why * 20 will work, * 1or 2 not work (c = (pmg * per_pos[i]).GetNormalized() * 20)?