Exemple #1
0
        public void CameraTerra()
        {
            Ponto4D         centro = terra.GetBBox().obterCentro;
            Transformacao4D t      = terra.GetMatriz();

            centro = t.MultiplicarPonto(centro);
            Vector3 v = new Vector3((float)centro.X, 0, (float)centro.Z);

            camera.Eye = v;
        }
Exemple #2
0
        protected void atualizarMatrizFilhos()
        {
            Transformacao4D tempMundoFilho = this.matriz.MultiplicarMatriz(this.matrizMundo);

            foreach (Objeto obj in this.objetosLista)
            {
                obj.setMatrizMundo(tempMundoFilho);
                obj.atualizarMatrizFilhos();
            }
        }
Exemple #3
0
        protected override void OnLoad(EventArgs e)
        {
            base.OnLoad(e);
            GL.ClearColor(Color.Black);
            GL.Enable(EnableCap.DepthTest);
            GL.Enable(EnableCap.CullFace);

            //TODO: o que faz está linha abaixo?
            GL.Hint(HintTarget.PerspectiveCorrectionHint, HintMode.Nicest);
            GL.GenTextures(1, out texture);
            GL.BindTexture(TextureTarget.Texture2D, texture);
            GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureMinFilter, (int)TextureMinFilter.Linear);
            GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureMagFilter, (int)TextureMagFilter.Linear);

            BitmapData data = bitmap.LockBits(new System.Drawing.Rectangle(0, 0, bitmap.Width, bitmap.Height),
                                              ImageLockMode.ReadOnly, System.Drawing.Imaging.PixelFormat.Format32bppArgb);

            GL.TexImage2D(TextureTarget.Texture2D, 0, PixelInternalFormat.Rgba, data.Width, data.Height, 0,
                          OpenTK.Graphics.OpenGL.PixelFormat.Bgra, PixelType.UnsignedByte, data.Scan0);

            bitmap.UnlockBits(data);

            // ___ parâmetros da câmera sintética
            eye = new Vector3(50, 50, 50);
            at  = new Vector3(0, 0, 0);
            far = 100.0f;

            // Matriz sol
            Transformacao4D matrizSolNova = new Transformacao4D();

            matrizSolNova.AtribuirTranslacao(40, 0, 0);
            matrizSol = matrizSolNova.MultiplicarMatriz(matrizSol);
            // Atribui filho terra ao sol
            matrizTerra = matrizSol.MultiplicarMatriz(matrizTerra);

            //cria terra
            Transformacao4D matrizTerraNova = new Transformacao4D();

            matrizTerraNova.AtribuirEscala(0.3, 0.3, 0.3);
            matrizTerra = matrizTerraNova.MultiplicarMatriz(matrizTerra);
            // Matriz atribui filho lua a terra
            matrizLua = matrizTerra.MultiplicarMatriz(matrizLua);

            //cria lua
            Transformacao4D matrizLuaNova = new Transformacao4D();

            matrizLuaNova.AtribuirEscala(0.1, 0.1, 0.1);
            matrizLuaNova.AtribuirRotacaoY(Transformacao4D.DEG_TO_RAD * 20);
            matrizLua = matrizLuaNova.MultiplicarMatriz(matrizLua);
        }
Exemple #4
0
        protected override void OnLoad(EventArgs e)
        {
            base.OnLoad(e);
            GL.ClearColor(Color.Black);
            GL.Enable(EnableCap.DepthTest);
            GL.Enable(EnableCap.CullFace);

            GL.Hint(HintTarget.PerspectiveCorrectionHint, HintMode.Nicest);

            // Sol
            GL.GenTextures(1, out textura);
            GL.BindTexture(TextureTarget.Texture2D, textura);
            GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureMinFilter, (int)TextureMinFilter.Linear);
            GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureMagFilter, (int)TextureMagFilter.Linear);

            BitmapData dataSun = bitmapSun.LockBits(new System.Drawing.Rectangle(0, 0, bitmapSun.Width, bitmapSun.Height),
                                                    ImageLockMode.ReadOnly, System.Drawing.Imaging.PixelFormat.Format32bppArgb);

            GL.TexImage2D(TextureTarget.Texture2D, 0, PixelInternalFormat.Rgba, dataSun.Width, dataSun.Height, 0,
                          OpenTK.Graphics.OpenGL.PixelFormat.Bgra, PixelType.UnsignedByte, dataSun.Scan0);
            bitmapSun.UnlockBits(dataSun);

            // Terra
            GL.GenTextures(2, out textura);
            GL.BindTexture(TextureTarget.Texture2D, textura);
            GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureMinFilter, (int)TextureMinFilter.Linear);
            GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureMagFilter, (int)TextureMagFilter.Linear);

            BitmapData dataEarth = bitmapEarth.LockBits(new System.Drawing.Rectangle(0, 0, bitmapEarth.Width, bitmapEarth.Height),
                                                        ImageLockMode.ReadOnly, System.Drawing.Imaging.PixelFormat.Format32bppArgb);

            GL.TexImage2D(TextureTarget.Texture2D, 0, PixelInternalFormat.Rgba, dataEarth.Width, dataEarth.Height, 0,
                          OpenTK.Graphics.OpenGL.PixelFormat.Bgra, PixelType.UnsignedByte, dataEarth.Scan0);
            bitmapEarth.UnlockBits(dataEarth);

            // campo de visão da câmera sintética
            Visao  = new Vector3(50, 50, 50);
            Target = new Vector3(0, 0, 0);
            Longe  = 100.0f;
            Perto  = 1.0f;

            // Matriz sol
            Transformacao4D matrizSolNova = new Transformacao4D();

            matrizSolNova.AtribuirTranslacao(40, 0, 0);
            Sol = matrizSolNova.MultiplicarMatriz(Sol);
            // terra passa a ser "filho" do sol
            Terra = Sol.MultiplicarMatriz(Terra);

            //cria terra
            Transformacao4D matrizTerraNova = new Transformacao4D();

            matrizTerraNova.AtribuirEscala(1.5, 1.5, 1.5);
            matrizTerraNova.AtribuirTranslacao(20, 0, 0);
            Terra = matrizTerraNova.MultiplicarMatriz(Terra);
            // Matriz atribui filho lua a terra
            Lua = Terra.MultiplicarMatriz(Lua);

            //cria lua
            Transformacao4D matrizLuaNova = new Transformacao4D();

            matrizLuaNova.AtribuirEscala(0.3, 0.3, 0.3);
            Lua = matrizLuaNova.MultiplicarMatriz(Lua);
        }
Exemple #5
0
 public void setMatrizMundo(Transformacao4D matriz)
 {
     this.matrizMundo = matriz;
     this.atualizarBbox();
 }