• Domingo 6 de Julio de 2025, 13:03

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - ArquiTEC

Páginas: [1]
1
OpenGL / FORO PARTICIPATIVO
« en: Miércoles 12 de Noviembre de 2008, 18:51 »
EStoy buscando un foro español donde el debate de OpenGL sea dinamico. NO puede ser que solo unas decenas de personas usen este software en toda españa. Alguien sabe donde?.
Gracias

2
OpenGL / Re: Transformación De Coordenadas
« en: Domingo 9 de Noviembre de 2008, 10:20 »
Yo lo he programado a mano y me funciona permitiendome crear y desplazar objetos en la escena en el punto exacto donde he clickado. Desconocia la funcion gluUnProject a ver si realiza automaticamente todo lo que yo tuve que ingeniarme. Es complicado de explicar. La base teorica es que sabiendo las coordenadas exactas de la camara y del target o punto hacia donde mira, junto a la obertura angular; es possible imaginarse en el target "un plano" perpendicular a la direccion de vision, con su marco coincidente a la pantalla. Es posible transportar los pixeles 2D al hacer click, con las coordenadas exactas en este hipotetico plano. Una vez encontradas se traza una linea desde la camara a estas coodenadas y se sigue esta hasta llegar al plano de trabajo. Alli encontraremos las coordenadas exactas 3D. Ponte en contacto conmigo.Saludos

3
OpenGL / Re: Herramienta Cad Con Opengl En Linux
« en: Domingo 9 de Noviembre de 2008, 10:06 »
Comparto tu opinion gcascon.

Realizar una herramienta CAD desde el principio és extremadamente dificil. Yo inicé la implantación de OpenGL sobre Visual C# en Agosto y ahora en Noviembre "solo" he conseguido crear una aplicacion que permite moverse en 3D, generar, seleccionar y desplazar teteras.

Donde seria posible encontrar estas aplicaciones en Linux que comentais. Se podria analizar su codigo y "transportarlo" al Visual C#.

gcascon, podriamos colaborar y ayudarnos en pro a nuestras aplicaciones.

Un saludo a todos.

4
OpenGL / Re: Visualizacion 3D lenta.
« en: Sábado 8 de Noviembre de 2008, 13:15 »
Os paso la parte del codigo que redibuja, por ejemplo cuando se realiza un ZOOM.


METODOS EN LA CLASE FORMULARIO

private void view_MouseMove(object sender, MouseEventArgs e)  
        {
            if (e.Button == System.Windows.Forms.MouseButtons.Left) //Si estamos apretando el boton izquierdo del raton
            {
                if (IconoZoom.Checked) //Y el icono Zoom es el que esta activado
                {
                    if ((e.Y - PixelY) < 0 && Dist > 0.1F) Dist /= 1.03F;  //La variable Dist es la distancia entre la posicion de la camara y el target.
                    else if ((e.Y - PixelY) > 0) Dist *= 1.03F;
                    PixelY = e.Y;
                    CalcularComponentes();  //Esta funcion recalcula las nuevas coordenadas de la posicion de la camara basandose en el nuevo valor de Dist.
                    glDraw( );  //Aqui llamo al metodo para redibujar.
                }
        }

   public void glDraw(int a) //Metodo para dibujar, y esta como metodo del Formulario, asi se puede acceder a los objetos (teteras)
        {
            GL.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT);    
            GL.glMatrixMode(GL.GL_MODELVIEW);      
            GL.glLoadIdentity();      

            GL.gluLookAt(XCAM, YCAM, ZCAM, XC, YC, ZC, XPERV, YPERV, CosB); //Todos estos valores se han recalculado en la funcion CalcularComponentes

                //Este apartado (que sigue dibuja una cuadricula como base visual)
                GL.glBegin(GL.GL_LINES);
                GL.glColor3f(0.0f, 0.0f, 0.0f);
                GL.glVertex3f(0, 1.0f, 0.0f);
                GL.glVertex3f(0, -1.0f, 0.0f);
                GL.glVertex3f(-1.0f, 0.0f, 0.0f);
                GL.glVertex3f(1.0f, 0.0f, 0.0f);
                GL.glColor3f(0.55f, 0.55f, 0.55f);
                for (float b = 0.1F; b <= 1.1F; b += 0.1F)
                GL.glEnd();

            GL.glPushMatrix();

            foreach (Barra TeteraTemp in Teteras)  //Este bucle recorre la coleccion dinamica de teteras para visualizarlas
            {
                BarraTetera.glDrawTeteraa();
            }
            GL.glPopMatrix();
            view.SwapBuffers();
        }



METODOS EN LA CLASE OPENGL
protected override void InitGLContext()
        {
            GL.glClearColor(0.21f, 0.21f, 0.21f, 1.0f);                            
            GL.glEnable(GL.GL_DEPTH_TEST);                                  
            GL.glHint(GL.GL_PERSPECTIVE_CORRECTION_HINT, GL.GL_NICEST);    
            GL.glShadeModel(GL.GL_SMOOTH);                            
            GL.glEnable(GL.GL_LIGHTING);                                  
            GL.glEnable(GL.GL_COLOR_MATERIAL);                            
            GL.glColorMaterial(GL.GL_FRONT, GL.GL_AMBIENT_AND_DIFFUSE);
            float[] LlumAmbient ={ 0.40f, 0.40f, 0.40f, 1.0f };
            float[] LlumDiffuse ={ 0.58f, 0.58f, 0.58f, 1.0f };
            GL.glLightfv(GL.GL_LIGHT0, GL.GL_AMBIENT, LlumAmbient);
            GL.glLightfv(GL.GL_LIGHT0, GL.GL_DIFFUSE, LlumDiffuse);
            GL.glEnable(GL.GL_LIGHT0);
        }  
     
public void SwapBuffers() //Realizo este metodo para poder acceder desde el formulario a la funcion propia SwapBuffer la cual esta declarada private.
 {
       this.SwapBuffer();
 }


CLASE TETERA
Esta clase de momento dibuja teteras, pero sera la base para poder en su dia crear todo tipo de objetos.

    public class Tetera: Object
    {
        public double X, Y, Z; //Coordenadas de la tetera
           
        public Tetera(double X1, double Y1, double Z1, uint SelB) //CONSTRUCTOR
        {
            X = X1; Y = Y1; Z = Z1;
        }
   
        public void glDrawTetera()
        {
            GL.glPopMatrix(); GL.glPushMatrix();
            GL.glTranslated(X, Y, 0);
            GL.glRotated(90, 1, 0, 0);
            GL.glutSolidTeapot(0.1);
        }
    }



Comentaros que he intendado generar 12 teteras sin recurrir al bucle que recorre la coleccion dinamica. Eso es, lo he realizado directamente en el metodo GlDraw, pero tambien el grafico sufre lentitud. Por lo que descarte que fuera la coleccion. Repasando apuntes y libros existe unas funciones como GlFlush que permiten gestionar los graficos, pero que no acabo de entender. Aqui como podeis ver solo se llama al metodo SwapBuffer, y no se si la cosa va por aqui. Gracias por vuestra ayuda.

5
OpenGL / Visualizacion 3D lenta.
« en: Jueves 6 de Noviembre de 2008, 12:50 »
Hola a Todos.

Estoy intentando generar una herramienta de CAD, usando OpenGL y Visual C#. He conseguido crear un espacio 3D interactivo (es decir, he creado botones para Orbitar, Zoom y PAn), pero me surge un problema. Indico que se visualizen los tipicos objetos TEAPOT ( teteras) y cuando estos llegan a una cantidad que supera las 10 unidades, la visualizacion empieza a volverse lenta y a trompicones. Considero que quedan muy lejos de ser muchos objectos para que mi ordenador tenga problemas. Alguien sabe a que es debido.

Mil gracias.

Páginas: [1]