About the proectile thing: Figure out the distance from the origin to the end of the barrel (use your 3d modelling program and figure it out manually) and translate the world accordingly..
for example:
End of barrel: 0,1,0
Center of cannon: 1,0,0
You'd translate the world 1 unit upward and one unit left before rendering the projectile. I understand this is a makeshift way, but I think it's probably the only way of doing this (another way would be to use Mesh.Intersect to find the end of the barrel and do what I said above)