/// <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(); }
/// <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); }); }