示例#1
0
        void LoadMeshes()
        {
            LoadDefaultTextures();

            try
            {
                string        pcube                = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Geometry", "cube.obj");
                RSMI.Importer importer             = new RSMI.Importer();
                List <RSMI.Containers.Mesh> meshes = importer.Parse(pcube);

                if (mat == null)
                {
                    mat = new Material.PBRMaterial
                    {
                        Metallic  = defaultBlack,
                        Albedo    = defaultDarkGray,
                        Occlusion = defaultWhite,
                        Roughness = defaultBlack,
                        Height    = defaultWhite,
                        Thickness = defaultBlack,
                        Emission  = defaultBlack
                    };
                }

                if (tessMat == null)
                {
                    tessMat = new Material.PBRTess
                    {
                        Metallic  = defaultBlack,
                        Albedo    = defaultDarkGray,
                        Occlusion = defaultWhite,
                        Roughness = defaultBlack,
                        Height    = defaultBlack,
                        Thickness = defaultBlack,
                        Emission  = defaultBlack
                    };
                }

                if (meshes.Count > 0)
                {
                    cubeMesh = meshes[0];
                    cube     = new MeshRenderer(meshes[0]);
                    cube.Mat = mat;

                    if (UIPreviewPane.Instance != null)
                    {
                        UIPreviewPane.Instance.SetMesh(cube);
                    }
                }

                string psphere = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Geometry", "sphere.obj");
                importer = new RSMI.Importer();
                meshes   = importer.Parse(psphere);

                if (meshes.Count > 0)
                {
                    sphereMesh    = meshes[0];
                    sphere        = new MeshRenderer(meshes[0]);
                    sphere.Mat    = mat;
                    lightMesh     = new MeshRenderer(meshes[0]);
                    lightMesh.Mat = lightMat;
                }

                string prounded = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Geometry", "cube-rounded.obj");
                importer = new RSMI.Importer();
                meshes   = importer.Parse(prounded);

                if (meshes.Count > 0)
                {
                    cubeRoundedMesh = meshes[0];
                    cubeRounded     = new MeshRenderer(meshes[0]);
                    cubeRounded.Mat = mat;
                }

                //NOTE TO SELF: Recreate the cylnder 3D object with better UV
                string pcyl = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Geometry", "cylinder.obj");
                importer = new RSMI.Importer();
                meshes   = importer.Parse(pcyl);

                if (meshes.Count > 0)
                {
                    cylinderMesh = meshes[0];
                    cylinder     = new MeshRenderer(meshes[0]);
                    cylinder.Mat = mat;
                }

                string pplane = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Geometry", "plane.obj");
                importer = new RSMI.Importer();
                meshes   = importer.Parse(pplane);

                if (meshes.Count > 0)
                {
                    planeMesh = meshes[0];
                    plane     = new MeshRenderer(meshes[0]);
                    plane.Mat = mat;
                }
            }
            catch (Exception e)
            {
                Log.Error(e);
            }
        }
示例#2
0
        public void Release()
        {
            if (renderStack != null)
            {
                renderStack.Release();
                renderStack = null;
            }

            if (materialSettings != null)
            {
                materialSettings.Save();
            }

            if (lightMat != null)
            {
                lightMat.Release();
                lightMat = null;
            }

            if (defaultBlack != null)
            {
                defaultBlack.Release();
                defaultBlack = null;
            }

            if (defaultWhite != null)
            {
                defaultWhite.Release();
                defaultWhite = null;
            }

            if (defaultGray != null)
            {
                defaultGray.Release();
                defaultGray = null;
            }

            if (defaultDarkGray != null)
            {
                defaultDarkGray.Release();
                defaultDarkGray = null;
            }

            HdriManager.Release();

            if (tessMat != null)
            {
                tessMat.Release();
                tessMat = null;
            }

            if (mat != null)
            {
                mat.Release();
                mat = null;
            }

            if (sphere != null)
            {
                sphere.Release();
                sphere = null;
            }

            if (cube != null)
            {
                cube.Release();
                cube = null;
            }

            if (cylinder != null)
            {
                cylinder.Release();
                cylinder = null;
            }

            if (cubeRounded != null)
            {
                cubeRounded.Release();
                cubeRounded = null;
            }

            if (plane != null)
            {
                plane.Release();
                plane = null;
            }

            if (custom != null)
            {
                custom.Release();
                custom = null;
            }

            if (lightMesh != null)
            {
                lightMesh.Release();
                lightMesh = null;
            }

            if (glview != null)
            {
                FHost.Child = null;
                glview.Dispose();
                glview = null;
            }
        }