With ARCore 1.0, raycasts against feature points include an orientation meant to approximate the surface. See https://developers.google.com/ar/discover/concepts#oriented_points You can see how Google's Unity plugin does this in their HelloARController.cs: Code (csharp): TrackableHit hit; TrackableHitFlags raycastFilter = TrackableHitFlags.PlaneWithinPolygon | TrackableHitFlags.FeaturePointWithSurfaceNormal; if (Frame.Raycast(touch.position.x, touch.position.y, raycastFilter, out hit)) { var andyObject = Instantiate(AndyAndroidPrefab, hit.Pose.position, hit.Pose.rotation); ... Note if the raycast hits a FeaturePointWithSurfaceNormal, then the hit.Pose.rotation will include the orientation of the surface.