Пример #1
0
        /// <summary>
        /// Sets lights to imitate sunlight.
        /// </summary>
        private void SetLight()
        {
            Mogre.Light directionalLight = mSceneMgr.CreateLight("directionalLight");
            directionalLight.Type           = Mogre.Light.LightTypes.LT_DIRECTIONAL;
            directionalLight.DiffuseColour  = Mogre.ColourValue.White;
            directionalLight.SpecularColour = Mogre.ColourValue.Blue;
            directionalLight.Direction      = new Mogre.Vector3(0, -1000, 0);

            Mogre.Light pointLight = mSceneMgr.CreateLight("pointLight");
            pointLight.Type           = Mogre.Light.LightTypes.LT_POINT;
            pointLight.DiffuseColour  = Mogre.ColourValue.White;
            pointLight.SpecularColour = Mogre.ColourValue.Blue;
            pointLight.Position       = new Mogre.Vector3(0, 0, 0);

            pointLight                = mSceneMgr.CreateLight("pointLight2");
            pointLight.Type           = Mogre.Light.LightTypes.LT_POINT;
            pointLight.DiffuseColour  = Mogre.ColourValue.White;
            pointLight.SpecularColour = Mogre.ColourValue.Blue;
            pointLight.Position       = new Mogre.Vector3(0, 1000, 0);

            pointLight                = mSceneMgr.CreateLight("pointLight3");
            pointLight.Type           = Mogre.Light.LightTypes.LT_POINT;
            pointLight.DiffuseColour  = Mogre.ColourValue.White;
            pointLight.SpecularColour = Mogre.ColourValue.Blue;
            pointLight.Position       = new Mogre.Vector3(0, -1000, 0);

            Mogre.Light spotLight = mSceneMgr.CreateLight("spotLight");
            spotLight.Type           = Mogre.Light.LightTypes.LT_SPOTLIGHT;
            spotLight.DiffuseColour  = Mogre.ColourValue.White;
            spotLight.SpecularColour = Mogre.ColourValue.Blue;
            spotLight.Direction      = new Mogre.Vector3(-1, -1, 0);
            spotLight.Position       = new Mogre.Vector3(-50, 5000, -3000);
        }
Пример #2
0
 private void createLight(Mogre.SceneManager sm)
 {
     ambient                = sm.CreateLight("menuAmbient");
     ambient.Type           = Mogre.Light.LightTypes.LT_DIRECTIONAL;
     ambient.Position       = new Vector3(0, 2000, 0);
     ambient.Direction      = new Vector3(-0.8365f, -1, 0.5867f);
     ambient.DiffuseColour  = new Mogre.ColourValue(0.99f, 0.95f, 0.9f);
     ambient.SpecularColour = Mogre.ColourValue.White;
     ambient.CastShadows    = true;
     sm.RootSceneNode.AttachObject(ambient);
 }
Пример #3
0
        private void CreateImages(ObservableCollection <IconTextItem> retlist, bool skipCached)
        {
            retlist.Clear();

            Mogre.TexturePtr texture = Mogre.TextureManager.Singleton.CreateManual("EntityTex",
                                                                                   Mogre.ResourceGroupManager.DEFAULT_RESOURCE_GROUP_NAME, Mogre.TextureType.TEX_TYPE_2D,
                                                                                   256, 256, 0, Mogre.PixelFormat.PF_A8R8G8B8, (int)Mogre.TextureUsage.TU_RENDERTARGET);

            Mogre.RenderTexture rttTex   = texture.GetBuffer().GetRenderTarget();
            Mogre.SceneManager  sceneMgr = Mogre.Root.Singleton.CreateSceneManager("OctreeSceneManager", "EntityTexMgr");

            Mogre.Light dir1 = sceneMgr.CreateLight("DisplayLight");
            dir1.SetDirection(-1, -1, -1);
            dir1.SetDiffuseColour(1, 1, 1);
            dir1.Type = Mogre.Light.LightTypes.LT_DIRECTIONAL;

            Mogre.Camera RTTCam = sceneMgr.CreateCamera("EntityCam");
            RTTCam.NearClipDistance = 0.01F;
            RTTCam.FarClipDistance  = 0;
            RTTCam.AspectRatio      = 1;
            RTTCam.FOVy             = new Mogre.Radian(new Mogre.Degree(90));
            RTTCam.Position         = new Mogre.Vector3(0, 0, 1);
            RTTCam.LookAt(0, 0, 0);

            Mogre.Viewport v = rttTex.AddViewport(RTTCam);
            v.SetClearEveryFrame(true);
            v.BackgroundColour = new Mogre.ColourValue(0, 0, 0, 0);

            Mogre.StringVector list = Mogre.ResourceGroupManager.Singleton.FindResourceNames("ProjectResources", "*.mesh", false);

            IDictionary <string, string> entities = new Dictionary <string, string>(list.Count);

            foreach (string addstr in list)
            {
                if (entities.Values.Contains(addstr) == false)
                {
                    entities.Add(addstr, addstr);
                }
            }

            foreach (KeyValuePair <string, string> ite in entities)
            {
                string addstr     = ite.Key;
                string addstrFile = MogitorsSystem.Instance.CombinePath(MogitorsRoot.Instance.ProjectOptions.ProjectDir, addstr + ".png");

                if (!skipCached || !System.IO.File.Exists(addstrFile))
                {
                    Mogre.Entity entity = sceneMgr.CreateEntity("scbDisplay", addstr);
                    sceneMgr.RootSceneNode.AttachObject(entity);

                    Mogre.Vector3 vSize   = entity.BoundingBox.HalfSize;
                    Mogre.Vector3 vCenter = entity.BoundingBox.Center;

                    vSize += new Mogre.Vector3(vSize.z, vSize.z, vSize.z);

                    float maxsize = Math.Max(Math.Max(vSize.x, vSize.y), vSize.z);

                    vSize = new Mogre.Vector3(0, 0, maxsize * 1.1f) + vCenter;

                    RTTCam.SetPosition(vSize.x, vSize.y, vSize.z);
                    RTTCam.LookAt(vCenter.x, vCenter.y, vCenter.z);

                    rttTex.Update();
                    rttTex.WriteContentsToFile(addstrFile);

                    entity.ParentSceneNode.DetachObject(entity);
                    sceneMgr.DestroyEntity(entity);
                }

                retlist.Add(new IconTextItem(addstr.Remove(addstr.Length - 5, 5), addstrFile));
            }

            rttTex.RemoveAllViewports();
            Mogre.Root.Singleton.DestroySceneManager(sceneMgr);
            Mogre.Root.Singleton.DetachRenderTarget(rttTex.Name);
            Mogre.TextureManager.Singleton.Unload(texture.Name);
            Mogre.TextureManager.Singleton.Remove(texture.Name);

            list = null;
        }