I have a set of points in 3D space as chopChannels (x y z) and would like to project them in to screenSpace.
I already did this in my renderInteractionFramework using the tdu.Matrix class and tdu.Position.
I translated this in to a scriptCHOP to see if my core idea is right an it is working using the following code (quick and dirty example.)

The problem now comes when I try to translate this behaviour in to pure CHOPs.
First issue was getting the projectionMatrix in to ChopWorld. I wrote the folowing scriptCHOP, but tbh I am not sure if this is creating the correct matrix.

def onCook(scriptOp):
scriptOp.clear()
for colIndex, colValue in enumerate(
parent().projection(
parent().par.Aspectratio1.eval(), parent().par.Aspectratio2.eval()
).cols ):
for rowIndex, cellContent in enumerate( colValue ):
scriptOp.appendChan(f"m{rowIndex}{colIndex}").vals = [cellContent]
return

Now I use a translateCHOP and feed the projectionMatrix as the first input. But the values simply do not add up. I though maybe I need to switch the order of operator (mirroring the Matrix * Position order frm the script) But to no avail.

I suppose I can translate this to Numpy to increase speed for a larger number of points.

My main question is why I am failing doing this exact line in CHOPs using the translateCHOP.
How is the the translateCHOP using the Matrix-Input here differing from the pythonLine?
I use the worldTransform on another Point and the translateCHOP works as expected.