private static void Initialize2DUI(ScientificVisual3DControl scientificVisual3DControl)
        {
            SceneElement parent = scientificVisual3DControl.UIScene.SceneContainer;
            SimpleUIAxis uiAxis = new SimpleUIAxis(
                AnchorStyles.Left | AnchorStyles.Bottom,
                new Padding(10, 0, 0, 20), new Size(40, 40))
            {
                Name = "UI: Axis",
            };

            uiAxis.RectDirection = ERectDirection.XZ;
            parent.AddChild(uiAxis);
            scientificVisual3DControl.uiAxis = uiAxis;

            SimpleUIColorIndicator uiColorIndicator = new SimpleUIColorIndicator(
                AnchorStyles.Left | AnchorStyles.Bottom | AnchorStyles.Right,
                new Padding(80, 0, 80, 40), new Size(100, 15))
            {
                Name = "UI: Color Indicator",
            };
            ColorIndicatorData rainbow = ColorIndicatorDataFactory.CreateRainbow();

            uiColorIndicator.Data = rainbow;
            parent.AddChild(uiColorIndicator);
            scientificVisual3DControl.uiColorIndicator = uiColorIndicator;
        }
        internal static void InitializeUIScene(ScientificVisual3DControl scientificVisual3DControl)
        {
            if (scientificVisual3DControl == null)
            {
                return;
            }

            ColorCodedPickingScene UIScene = new ColorCodedPickingScene();
            SceneElement           root    = UIScene.SceneContainer;

            UIScene.IsClear = false;
            root.Name       = "UI Scene's container";
            root.Children.Clear();
            root.Effects.Clear();
            UIScene.OpenGL = scientificVisual3DControl.OpenGL;
            scientificVisual3DControl.UIScene = UIScene;

            Initialize2DUI(scientificVisual3DControl);

            InitializeUISceneAttributes(root);

            SetSceneCameraToUICamera(scientificVisual3DControl);

            UIScene.RenderBoundingVolumes = false;
        }
        internal static void InitializeScene(ScientificVisual3DControl scientificVisual3DControl)
        {
            if (scientificVisual3DControl == null)
            {
                return;
            }

            ColorCodedPickingScene scene = scientificVisual3DControl.Scene;

            scene.SceneContainer.Name = "Scene's container";
            scene.SceneContainer.Children.Clear();
            scene.SceneContainer.Effects.Clear();

            SceneElement root = scene.SceneContainer;

            InitializeSceneAttributes(root);

            scene.RenderBoundingVolumes = false;

            //SceneElement scientificModelElementRoot = new SceneElement()
            //{ Name = "Scientific Model Elements' root" };
            //scene.SceneContainer.AddChild(scientificModelElementRoot);
            //scientificVisual3DControl.scientificModelElementRoot = scientificModelElementRoot;
            ModelContainer container = new ModelContainer()
            {
                Name = "model space's container which contains models as children."
            };

            scene.SceneContainer.AddChild(container);
            scientificVisual3DControl.modelContainer = container;

            scientificVisual3DControl.CameraRotation = new SatelliteRotation();
        }
        internal static void SetSceneCameraToUICamera(ScientificVisual3DControl scientificVisual3DControl)
        {
            ScientificCamera camera = scientificVisual3DControl.Scene.CurrentCamera;

            if (camera == null)
            {
                throw new Exception("this.Scene.CurrentCamera cannot be null.");
            }

            scientificVisual3DControl.UIScene.CurrentCamera = camera;
            scientificVisual3DControl.uiAxis.Camera         = camera;
            scientificVisual3DControl.CameraRotation.Camera = camera;
        }