protected override void OnRenderFrame(FrameEventArgs e) { base.OnRenderFrame(e); GL.Clear(ClearBufferMask.ColorBufferBit | ClearBufferMask.DepthBufferBit); Matrix4 modelview = Matrix4.LookAt(camera.Eye, camera.At, camera.Up); GL.MatrixMode(MatrixMode.Modelview); GL.LoadMatrix(ref modelview); #if CG_Gizmo Sru3D(); #endif for (var i = 0; i < objetosLista.Count; i++) { objetosLista[i].Desenhar(); } if (bBoxDesenhar && (objetoSelecionado != null)) { objetoSelecionado.BBox.Desenhar(); } Transformacao4D tr = new Transformacao4D(); tr.AtribuirEscala(50, 50, 50); Ponto4D pt = new Ponto4D(0, 0, 0); GL.LineWidth(5); GL.Color3(0, 0, 0); GL.Begin(PrimitiveType.LineLoop); for (var i = 0; i < movimentos.Count; i++) { for (var j = 0; j < qtMovimentos[i]; j++) { Ponto4D pt2 = tr.MultiplicarPonto(pt); GL.Vertex3(pt2.X, pt2.Y, pt2.Z); tr = tr.MultiplicarMatriz(movimentos[i]); } } GL.End(); objetoSelecionado.Matriz = objetoSelecionado.Matriz.MultiplicarMatriz(this.movimentos[i]); j++; if (j >= this.qtMovimentos[i]) { i++; j = 0; if (i >= this.movimentos.Count) { i = 0; } } this.SwapBuffers(); }
private void EyeRotate(float n) { Transformacao4D matA = new Transformacao4D(); matA.AtribuirTranslacao(camera.At.X, camera.At.Y, camera.At.Z); Transformacao4D matB = new Transformacao4D(); matB.AtribuirRotacaoY(n * Math.PI / 120); matA = matA.MultiplicarMatriz(matB); matB.AtribuirTranslacao(-1 * camera.At.X, -1 * camera.At.Y, -1 * camera.At.Z); matA = matA.MultiplicarMatriz(matB); this.camera.Eye = PontoToVector(matA.MultiplicarPonto(VectorToPonto(this.camera.Eye))); }