private void createGraphicsStructures() {
		// Locales
		gameLocale = new Locale(new VirtualUniverse());
		wireframeLocale = new Locale(new VirtualUniverse());

		// Scene graph
		sceneBranchGroup = new BranchGroup();
		sceneBranchGroup.setCapability(Group.ALLOW_CHILDREN_EXTEND);
		sceneBranchGroup.setCapability(BranchGroup.ALLOW_CHILDREN_WRITE);
		sceneBranchGroup.setCapability(BranchGroup.ALLOW_CHILDREN_READ);
		gameLocale.addBranchGraph(sceneBranchGroup);

		wireframeSceneBranchGroup = new BranchGroup();
		wireframeSceneBranchGroup.setCapability(Group.ALLOW_CHILDREN_EXTEND);
		wireframeSceneBranchGroup
				.setCapability(BranchGroup.ALLOW_CHILDREN_WRITE);
		wireframeSceneBranchGroup
				.setCapability(BranchGroup.ALLOW_CHILDREN_READ);
		wireframeLocale.addBranchGraph(wireframeSceneBranchGroup);

		// View platforms
		BranchGroup viewPlatformMainBranchGroup = new BranchGroup();
		viewPlatformMainTransformGroup = new TransformGroup();
		viewPlatformMainTransformGroup
				.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
		ViewPlatform viewPlatformMain = new ViewPlatform();
		viewPlatformMain.setViewAttachPolicy(View.RELATIVE_TO_FIELD_OF_VIEW);
		viewPlatformMainTransformGroup.addChild(viewPlatformMain);
		viewPlatformMainBranchGroup.addChild(viewPlatformMainTransformGroup);
		gameLocale.addBranchGraph(viewPlatformMainBranchGroup);

		BranchGroup viewPlatform1BranchGroup = new BranchGroup();
		viewPlatformTopTransformGroup = new TransformGroup();
		viewPlatformTopTransformGroup
				.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
		ViewPlatform viewPlatformTop = new ViewPlatform();
		viewPlatformTop.setViewAttachPolicy(View.RELATIVE_TO_FIELD_OF_VIEW);
		viewPlatformTopTransformGroup.addChild(viewPlatformTop);
		viewPlatform1BranchGroup.addChild(viewPlatformTopTransformGroup);
		wireframeLocale.addBranchGraph(viewPlatform1BranchGroup);

		BranchGroup viewPlatform2BranchGroup = new BranchGroup();
		viewPlatformFrontTransformGroup = new TransformGroup();
		viewPlatformFrontTransformGroup
				.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
		ViewPlatform viewPlatformFront = new ViewPlatform();
		viewPlatformFront.setViewAttachPolicy(View.RELATIVE_TO_FIELD_OF_VIEW);
		viewPlatformFrontTransformGroup.addChild(viewPlatformFront);
		viewPlatform2BranchGroup.addChild(viewPlatformFrontTransformGroup);
		wireframeLocale.addBranchGraph(viewPlatform2BranchGroup);

		BranchGroup viewPlatform3BranchGroup = new BranchGroup();
		viewPlatformRightTransformGroup = new TransformGroup();
		viewPlatformRightTransformGroup
				.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
		ViewPlatform viewPlatformRight = new ViewPlatform();
		viewPlatformRight.setViewAttachPolicy(View.RELATIVE_TO_FIELD_OF_VIEW);
		viewPlatformRightTransformGroup.addChild(viewPlatformRight);
		viewPlatform3BranchGroup.addChild(viewPlatformRightTransformGroup);
		wireframeLocale.addBranchGraph(viewPlatform3BranchGroup);

		// Views
		viewMain = new View();
		PhysicalEnvironment physicalEnvironmentMain = new PhysicalEnvironment();
		PhysicalBody physicalBodyMain = new PhysicalBody();
		viewMain.setPhysicalEnvironment(physicalEnvironmentMain);
		viewMain.setPhysicalBody(physicalBodyMain);
		viewMain.setFrontClipDistance(0.1);
		viewMain.setBackClipDistance(100);
		viewMain.attachViewPlatform(viewPlatformMain);

		viewOrthoTop = new View();
		PhysicalEnvironment physicalEnvironment1 = new PhysicalEnvironment();
		PhysicalBody physicalBody1 = new PhysicalBody();
		viewOrthoTop.setPhysicalEnvironment(physicalEnvironment1);
		viewOrthoTop.setPhysicalBody(physicalBody1);
		viewOrthoTop.setFrontClipDistance(0.1);
		viewOrthoTop.setBackClipDistance(100);
		viewOrthoTop.attachViewPlatform(viewPlatformTop);

		viewOrthoFront = new View();
		PhysicalEnvironment physicalEnvironment2 = new PhysicalEnvironment();
		PhysicalBody physicalBody2 = new PhysicalBody();
		viewOrthoFront.setPhysicalEnvironment(physicalEnvironment2);
		viewOrthoFront.setPhysicalBody(physicalBody2);
		viewOrthoFront.setFrontClipDistance(0.1);
		viewOrthoFront.setBackClipDistance(100);
		viewOrthoFront.attachViewPlatform(viewPlatformFront);

		viewOrthoRight = new View();
		PhysicalEnvironment physicalEnvironment3 = new PhysicalEnvironment();
		PhysicalBody physicalBody3 = new PhysicalBody();
		viewOrthoRight.setPhysicalEnvironment(physicalEnvironment3);
		viewOrthoRight.setPhysicalBody(physicalBody3);
		viewOrthoRight.setFrontClipDistance(0.1);
		viewOrthoRight.setBackClipDistance(100);
		viewOrthoRight.attachViewPlatform(viewPlatformRight);

		// Canvases
		GraphicsConfiguration graphicsConfiguration = SimpleUniverse
				.getPreferredConfiguration();

		canvasGame = new Canvas3D(graphicsConfiguration);
		canvasMain = new Canvas3D(graphicsConfiguration);
		canvasOrthoTop = new Canvas3D(graphicsConfiguration);
		canvasOrthoFront = new Canvas3D(graphicsConfiguration);
		canvasOrthoRight = new Canvas3D(graphicsConfiguration);

		// Picking Canvases
		pickCanvasMain = new PickCanvas(canvasMain, gameLocale);
		pickCanvasMain.setMode(PickInfo.PICK_GEOMETRY);
		pickCanvasMain.setTolerance(5.0f);
		pickCanvasOrthoTop = new PickCanvas(canvasOrthoTop, gameLocale);
		pickCanvasOrthoTop.setMode(PickInfo.PICK_GEOMETRY);
		pickCanvasOrthoTop.setTolerance(5.0f);
		pickCanvasOrthoFront = new PickCanvas(canvasOrthoFront, gameLocale);
		pickCanvasOrthoFront.setMode(PickInfo.PICK_GEOMETRY);
		pickCanvasOrthoFront.setTolerance(5.0f);
		pickCanvasOrthoRight = new PickCanvas(canvasOrthoRight, gameLocale);
		pickCanvasOrthoRight.setMode(PickInfo.PICK_GEOMETRY);
		pickCanvasOrthoRight.setTolerance(5.0f);

		// Lights
		lights = new ArrayList<LightObject>();
		lightsBranchGroup = new BranchGroup();
		lightsBranchGroup.setCapability(BranchGroup.ALLOW_CHILDREN_EXTEND);
		lightsBranchGroup.setCapability(BranchGroup.ALLOW_CHILDREN_WRITE);
		sceneBranchGroup.addChild(lightsBranchGroup);

		// Rigid Bodies
		rigidBodiesBranchGroup = new BranchGroup();
		rigidBodiesBranchGroup.setCapability(BranchGroup.ALLOW_CHILDREN_EXTEND);
		rigidBodiesBranchGroup.setCapability(BranchGroup.ALLOW_CHILDREN_WRITE);
		sceneBranchGroup.addChild(rigidBodiesBranchGroup);

		wireframeRigidBodiesBranchGroup = new BranchGroup();
		wireframeRigidBodiesBranchGroup
				.setCapability(BranchGroup.ALLOW_CHILDREN_EXTEND);
		wireframeRigidBodiesBranchGroup
				.setCapability(BranchGroup.ALLOW_CHILDREN_WRITE);
		wireframeSceneBranchGroup.addChild(wireframeRigidBodiesBranchGroup);

		// Graphics controller
		graphicsController = new GraphicsController();
	}