A class for rendering lines in 3d.
Inheritance: Axiom.Graphics.SimpleRenderable
Ejemplo n.º 1
0
		public override void CreateScene()
		{
			// create a 3d line
			Line3d line = new Line3d( new Vector3( 0, 0, 30 ), Vector3.UnitY, 50, ColorEx.Blue );

			Triangle tri = new Triangle(
				new Vector3( -25, 0, 0 ),
				new Vector3( 0, 50, 0 ),
				new Vector3( 25, 0, 0 ),
				ColorEx.Red,
				ColorEx.Blue,
				ColorEx.Green );

			// create a node for the line
			SceneNode node = scene.RootSceneNode.CreateChildSceneNode();

			SceneNode lineNode = node.CreateChildSceneNode();
			SceneNode triNode = node.CreateChildSceneNode();
			triNode.Position = new Vector3( 50, 0, 0 );

			// add the line and triangle to the scene
			lineNode.AttachObject( line );
			triNode.AttachObject( tri );

			// create a node rotation controller value, which will mark the specified scene node as a target of the rotation
			// we want to rotate along the Y axis for the triangle and Z for the line (just for the hell of it)
			NodeRotationControllerValue rotate = new NodeRotationControllerValue( triNode, Vector3.UnitY );
			NodeRotationControllerValue rotate2 = new NodeRotationControllerValue( lineNode, Vector3.UnitZ );

			// the multiply controller function will multiply the source controller value by the specified value each frame.
			MultipyControllerFunction func = new MultipyControllerFunction( 50 );

			// create a new controller, using the rotate and func objects created above.  there are 2 overloads to this method.  the one being
			// used uses an internal FrameTimeControllerValue as the source value by default.  The destination value will be the node, which
			// is implemented to simply call Rotate on the specified node along the specified axis.  The function will multiply the given value
			// against the source value, which in this case is the current frame time.  The end result in this demo is that if 50 is specified in the
			// MultiplyControllerValue, then the node will rotate 50 degrees per second.  since the value is scaled by the frame time, the speed
			// of the rotation will be consistent on all machines regardless of CPU speed.
			ControllerManager.Instance.CreateController( rotate, func );
			ControllerManager.Instance.CreateController( rotate2, func );

			// place the camera in an optimal position
			camera.Position = new Vector3( 30, 30, 220 );

			debugText = "Spinning triangle - Using custom built geometry";
		}