Thank you for this.

However, it only moves about a plane. I need to be able to move objects around in any direction - up, down, etc. Your examples fix the z value and direction. Although I am able to adjust it to move about in drag_new.zip it seems to jump to the extent of the raycast until it finds a wall and then circumscribes the boundary?

I can't seem to get it to accept:

dist = vec_dist(my.x,camera.x);
vec_set(temp,mouse_dir3d);
//vec_normalize(temp,600);
vec_normalize(temp,dist);

Which should set it to a constant distance from the camera.

What am I doing wrong?