Example #1
0
        /// <summary>
        /// Initializes the scene for this model viewer.
        /// </summary>
        private async Task InitializeAsync()
        {
            await m_renderLoop.Scene.ManipulateSceneAsync((manipulator) =>
            {
                SceneLayer bgImageLayer = manipulator.AddLayer("BACKGROUND_FLAT");
                SceneLayer bgLayer      = manipulator.AddLayer("BACKGROUND");
                manipulator.SetLayerOrderID(bgImageLayer, 0);
                manipulator.SetLayerOrderID(bgLayer, 1);
                manipulator.SetLayerOrderID(Scene.DEFAULT_LAYER_NAME, 2);

                // Define background texture
                ResourceLink linkBackgroundTexture = new AssemblyResourceUriBuilder(
                    "SeeingSharpModelViewer", true,
                    "Assets/Textures/Background.dds");
                NamedOrGenericKey resBackgroundTexture = manipulator.AddTexture(linkBackgroundTexture);
                manipulator.Add(new FullscreenTextureObject(resBackgroundTexture), bgImageLayer.Name);

                // Define ground
                Grid3DType objTypeGrid       = new Grid3DType();
                objTypeGrid.TilesX           = 64;
                objTypeGrid.TilesZ           = 64;
                objTypeGrid.HighlightXZLines = true;
                objTypeGrid.TileWidth        = 0.25f;
                objTypeGrid.GroupTileCount   = 4;
                objTypeGrid.GenerateGround   = false;

                NamedOrGenericKey resGridGeometry = manipulator.AddGeometry(objTypeGrid);
                manipulator.Add(new GenericObject(resGridGeometry), "BACKGROUND");
            });

            await m_renderLoop.WaitForNextFinishedRenderAsync();

            await m_renderLoop.WaitForNextFinishedRenderAsync();

            await SetInitialCameraPositionAsync();
        }
Example #2
0
        /// <summary>
        /// Initializes the scene for this model viewer.
        /// </summary>
        internal async Task InitializeAsync()
        {
            await m_scene.ManipulateSceneAsync((manipulator) =>
            {
                SceneLayer bgImageLayer = null;
                bool isBgImageCreated   = false;
                if (manipulator.ContainsLayer(Constants.LAYER_BACKGROUND_FLAT))
                {
                    bgImageLayer     = manipulator.GetLayer(Constants.LAYER_BACKGROUND_FLAT);
                    isBgImageCreated = true;
                }
                else
                {
                    bgImageLayer = manipulator.AddLayer(Constants.LAYER_BACKGROUND_FLAT);
                }

                SceneLayer bgLayer = manipulator.AddLayer(Constants.LAYER_BACKGROUND);
                manipulator.SetLayerOrderID(bgImageLayer, 0);
                manipulator.SetLayerOrderID(bgLayer, 1);
                manipulator.SetLayerOrderID(Scene.DEFAULT_LAYER_NAME, 2);

                var keyPostprocess = manipulator.AddResource <FocusPostprocessEffectResource>(
                    () => new FocusPostprocessEffectResource(false));
                if (!manipulator.ContainsLayer(Constants.LAYER_HOVER))
                {
                    SceneLayer layerHover                      = manipulator.AddLayer(Constants.LAYER_HOVER);
                    layerHover.PostprocessEffectKey            = keyPostprocess;
                    layerHover.ClearDepthBufferBeforeRendering = true;
                    manipulator.SetLayerOrderID(layerHover, 3);
                }

                // Store a reference to the background layer
                m_bgLayer = bgLayer;

                // Define background texture
                if (!isBgImageCreated)
                {
                    ResourceLink linkBackgroundTexture = new AssemblyResourceUriBuilder(
                        "SeeingSharpModelViewer", true,
                        "Assets/Textures/Background.dds");
                    NamedOrGenericKey resBackgroundTexture = manipulator.AddTexture(linkBackgroundTexture);
                    manipulator.Add(new FullscreenTextureObject(resBackgroundTexture), bgImageLayer.Name);
                }

                // Define ground
                Grid3DType objTypeGrid          = new Grid3DType();
                objTypeGrid.TilesX              = m_tilesPerSide * 4;
                objTypeGrid.TilesZ              = m_tilesPerSide * 4;
                objTypeGrid.HighlightXZLines    = true;
                objTypeGrid.TileWidth           = 0.25f;
                objTypeGrid.GroupTileCount      = 4;
                objTypeGrid.GenerateGround      = false;
                objTypeGrid.XLineHighlightColor = Color4.GreenColor;
                objTypeGrid.ZLineHighlightColor = Color4.BlueColor;

                NamedOrGenericKey resGridGeometry = manipulator.AddGeometry(objTypeGrid);
                manipulator.Add(new GenericObject(resGridGeometry), Constants.LAYER_BACKGROUND);

                TextGeometryOptions textXOptions = TextGeometryOptions.Default;
                textXOptions.SurfaceVertexColor  = Color4.GreenColor;
                textXOptions.MakeVolumetricText  = false;
                textXOptions.FontSize            = 30;
                GenericObject textX = manipulator.Add3DText(
                    "X", textXOptions,
                    realignToCenter: true,
                    layer: Constants.LAYER_BACKGROUND);
                textX.Position = new Vector3((m_tilesPerSide / 2f) + 1f, 0, 0);

                TextGeometryOptions textZOptions = TextGeometryOptions.Default;
                textZOptions.SurfaceVertexColor  = Color4.BlueColor;
                textZOptions.MakeVolumetricText  = false;
                textZOptions.FontSize            = 30;

                GenericObject textZ = manipulator.Add3DText(
                    "Z", textZOptions,
                    realignToCenter: true,
                    layer: Constants.LAYER_BACKGROUND);
                textZ.Position = new Vector3(0f, 0f, (m_tilesPerSide / 2f) + 1f);
            });
        }