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; }
protected void atualizarMatrizFilhos() { Transformacao4D tempMundoFilho = this.matriz.MultiplicarMatriz(this.matrizMundo); foreach (Objeto obj in this.objetosLista) { obj.setMatrizMundo(tempMundoFilho); obj.atualizarMatrizFilhos(); } }
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); }
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); }
public void setMatrizMundo(Transformacao4D matriz) { this.matrizMundo = matriz; this.atualizarBbox(); }