Anyway, for anybody experiencing this problem in the future this is how I went about it:
- Inversing the ray by an objects world matrix that includes scaling(possibly also rotation) messes it up when it comes to doing a quick test against a bounding sphere. To overcome this create a new ray called boundingSphereRay or something and then transform it by the inverse of the objects translation matrix only.
- The bounding sphere must then be transformed with uniform scaling, I found the 'TransformBoundingSphere' function in the picking sample(not the triangle picking sample) very useful for this. Although make sure that the center position of the sphere is set to vector.zero to account for the rays inverse. Just to note I found it a good idea to add a translate boolean parameter to the function, false to have the returned sphere at vector.zero and true to translate the sphere to the objects position for use with the bounding frustum test.
- Finally you inverse your original ray by the objects world matrix(scaling and all) and test against the triangles.
Hopes this helps anybody in need and feel free to post if struggling.