No raycasting or collision detection was added.
A raycast could be done by finding the intersection between a ray and a triangle. Well, all the triangles (or less if a spatial partition is utilized) and just keep the closest. You just need the triangles of the mesh to be transformed to world space for each object. Currently that is done on the gpu, so it would have to be done on the cpu.
In some cases you can do something simpler. Say you just have a heightmap you can query the z at some xy with an array or something. Like say you have the mesh made up in blender you can render the zbuffer from above and load that image to query zheight from pixels. Only 255 levels so it may be a bit coarse.
Another idea is if you are just using primitive shapes you can do a raycast with signed distance fields (SDF). I made a simple C3 example of this somewhere. It could be useful in some cases.
If you just need the position of a point on a mesh, you can position another object relative to a different one and you can get the transformed position from expressions. It's probably not what you're after though.