Here’s an F# iOS 8 Scene Kit port of the C# code from the Xamarin blog, ported with some help from Larry O’Brien.
namespace FSHelloSceneKit open System open MonoTouch.UIKit open MonoTouch.Foundation open MonoTouch.SceneKit type FSHelloSceneKitViewController () = inherit UIViewController() let CreateDiffuseLightNode (color: UIColor, position: SCNVector3, lightType: NSString): SCNNode = new SCNLight ( Color = color, LightType = lightType ) |> fun lightNode -> new SCNNode ( Light = lightNode, Position = position ) override this.ViewDidLoad () = let scene = new SCNScene () let view = new SCNView (this.View.Frame, Scene = scene, AutoresizingMask = UIViewAutoresizing.All, AllowsCameraControl = true) new SCNCamera (XFov = 40.0, YFov = 40.0) |> fun c -> new SCNNode (Camera = c, Position = new SCNVector3(0.0F, 0.0F, 40.0F)) |> scene.RootNode.AddChildNode let material = new SCNMaterial () material.Diffuse.Contents <- UIImage.FromFile ("monkey.png") material.Specular.Contents <- UIColor.White new SCNNode( Geometry = SCNSphere.Create(10.0F), Position = new SCNVector3(0.0F, 0.0F, 0.0F) ) |> fun node -> node.Geometry.FirstMaterial <- material; node |> scene.RootNode.AddChildNode new SCNLight ( LightType = SCNLightType.Ambient, Color = UIColor.Purple) |> fun lightNode -> new SCNNode ( Light = lightNode ) |> scene.RootNode.AddChildNode [| ( UIColor.Blue, new SCNVector3 (-40.0F, 40.0F, 60.0F) ); ( UIColor.Yellow, new SCNVector3 (20.0F, 20.0F, -70.0F) ); ( UIColor.Red, new SCNVector3 (20.0F, -20.0F, 40.0F) ); ( UIColor.Green, new SCNVector3 (20.0F, -40.0F, 70.0F) ) |] |> Seq.map (fun (color, pos) -> CreateDiffuseLightNode(color, pos, SCNLightType.Omni)) |> Seq.iter scene.RootNode.AddChildNode this.View.Add(view)
You can read more about Scene Kit on the Xamarin blog.