Try using the
<window>.screenToWorld command. Is this what you're looking for?
Code:
import viz
import vizact
viz.go()
viz.link( viz.Mouse,viz.addTexQuad(viz.SCREEN,texture=viz.add('crosshair.png')) )
def addBall():
ball = viz.addChild('ball.wrl',cache=viz.CACHE_CLONE)
line = viz.MainWindow.screenToWorld(viz.mouse.getPosition())
pos = vizmat.MoveAlongVector(line.begin,line.dir,10)
ball.setPosition(pos)
vizact.onmousedown(viz.MOUSEBUTTON_LEFT,addBall)
viz.mouse(viz.OFF)