Nuevas NORMAS para el foro

Curso Hacker
Bienvenido(a), Visitante. Favor de ingresar o registrarse.
¿Perdiste tu email de activación? - ſeptiembre 06, 2008, 09:18:23
Boton Buscar
Inicio Ayuda Ingresar Registrarse
Visita: Articulos - Juegos Gratis - Da Foros

Comunidad Underground Hispana  |  Programacion  |  Programación  |  Carbide C/C#/C++  |  Tema: Graficos 3d [ayuda] 0 Usuarios y 1 Visitante están viendo este tema. « anterior próximo »
Páginas: [1] Ir Abajo Imprimir
Autor Tema: Graficos 3d [ayuda]  (Leído 252 veces)
neoxero
Recien Llegado
*
Desconectado Desconectado

Mensajes: 5


Ver Perfil Email
« en: Octubre 21, 2007, 05:38:25 »

hola pues me gustaria saber como poder manipular graficos en 3d en C# o VB ya que es un proyecto en la escuela pero pss nada mas no nos dicen ke podemos usar ni nada solo HAGALO =)
en fin si alguien tine idea de como o con kee espero su respuesta de antemano gracias!

PD: antes habia puesto un post de manipulacion de bitmaps pero ya no l o encontre =(   ese post era sobre manipulacion (rotar, zoom, translacion)  ya mas o menos lo saque tengo un codigo ke puedo compartir por si les interesa
En línea
Ni0
Gran Colaborador
*****
Desconectado Desconectado

Mensajes: 1365


Ni0-inside the source code

Ni0@el-hacker.org
Ver Perfil WWW Email
« Respuesta #1 en: Octubre 21, 2007, 10:39:59 »

hola, lo que se me ocurre son matrices, mira:
pantalla [700][800][900]

y lo usas como coordenadas x,  y,  z
y metes en la matriz lo que quieras, y si lo tomas siempre como que el primero (osea en donde estan los 700) es la X, el segundo (dond estan los 800) es la Y y el tercero (el de 900) es la Z, va a ser como una pantalla en 3D
creo, no se bien, que OpenGl te ayuda, en C hay unas librerias de open GL.

salu2!
En línea

Inside The Source Code




Para ver los enlaces debes ser usuario Crear Usuario o Hacer Sesion
Linux Registred User #460377
neoxero
Recien Llegado
*
Desconectado Desconectado

Mensajes: 5


Ver Perfil Email
« Respuesta #2 en: Octubre 21, 2007, 01:38:17 »

gracias nio !! 

ya baje varias paginas con ayuda sobre opengl  ya nada mas es saber ke es lo ke nos van a pedir para empezarlo a realizar !!
por cierto sabes C# ??

porque tengo el siguiente proyecto

Para ver los enlaces debes ser usuario Crear Usuario o Hacer Sesion
http://gtrejo.freeweb7.com/graficacion%20segunda.rar


pero has de cuenta ke lo ke me interesa de ahi es lo de el color o sombra a la derecha algo asi le puse al boton pero ese proceso dura muchisimo (30seg)  e leido que con lockbits se puede optimizar pero no se como se utiliza y por mas ke analizo un ejemplo ke encontre en internet nada mas no ya que en dicho ejemplo solo invierte el color de todos los pixeles y a mi eso no me interesa.
Bueno cheka el programa funcionando para ke veas mas o menos lo ke trate de hacer
En línea
Ni0
Gran Colaborador
*****
Desconectado Desconectado

Mensajes: 1365


Ni0-inside the source code

Ni0@el-hacker.org
Ver Perfil WWW Email
« Respuesta #3 en: Octubre 21, 2007, 01:54:40 »

30 segundos!!! Shocked eso si que es mucho!!
c# no se, solo se C, pero me fijo en que te ayudo
En línea

Inside The Source Code




Para ver los enlaces debes ser usuario Crear Usuario o Hacer Sesion
Linux Registred User #460377
Ni0
Gran Colaborador
*****
Desconectado Desconectado

Mensajes: 1365


Ni0-inside the source code

Ni0@el-hacker.org
Ver Perfil WWW Email
« Respuesta #4 en: Octubre 21, 2007, 01:59:28 »

me fije el archivo..., pero encontre como 3 ejecutables, y un codigo php, y varios codigo C#, no entiendo..., no creo que se programe totalemte distitno en C que en C#, pero tenias que dividir en tantas partes el codigo? y los tres exe? no lo entiendo.., jaja, quisa es porque estoy cansado, pero no entiendo porque tantos archivos, o bien, no lo entiendo porque no se C#, ahora que lo pienzo en C tambien se usan varios.., jeje.
te podre ayudar en como hacer algo, pero no te puedo dar un codigo en C#, es parecido en sintaxis y if, while, etc., saber si es mayor, menor, etc. pero hay cosas que no entiendo
salu2!
En línea

Inside The Source Code




Para ver los enlaces debes ser usuario Crear Usuario o Hacer Sesion
Linux Registred User #460377
neoxero
Recien Llegado
*
Desconectado Desconectado

Mensajes: 5


Ver Perfil Email
« Respuesta #5 en: Octubre 21, 2007, 05:18:57 »

 Cheesy Cheesy jeje no se de donde sakaste un archivo con codigo PHP jejeje y los ejecutables no importa bueno el ke podria servir seria GRAFICACION SEGUNDA.EXE nada mas ya los otros no!  y el archivo con codigo es Form1.CS ahi es donde esta el codigo hecho por mi y en C# los proyectos tienen extension CSproj =) 
Bueno a continuacion anexo el codigo que empleo para el desvanecido (proceso de 30seg  Cry

Form1.CS
Código:
        private void cmdcolorear_Click(object sender, EventArgs e)
        {
  Bitmap bm= new Bitmap(pbxoriginal.Image); // crear el objeto bitmap para uso de setpixel
 
            Color cact,csig ; //objetos tipo color para almacenar lo de los pixels

        int ymax, xmax;
        xmax = bm.Width - 1;
        ymax = bm.Height - 1;
        int x, y,z;
        int red, green, blue; //estos los use para establecer el incremento p desvanecido
   

        //' iniciando desvanecido
        for (y = 0;y<ymax;y++) 
            {for( x = 0;x<xmax;x++)
            {
         
                cact = bm.GetPixel(x, y);
              //sombra a la derecha
                if (x != xmax) 
                {
                    csig = bm.GetPixel(x + 1, y);  //aky es donde leo un pixel despues para detectar cambio de color

                    if (cact != csig)
                    {
                        if (csig.B == 255 & csig.G == 255 & csig.R == 255)
                        {//los incrementos
                            red = csig.R-cact.R;
                            green =  csig.G-cact.G;
                            blue =csig.B -cact.B;
                            red = Convert.ToInt16(red / 10); 
                            green = Convert.ToInt16(green / 10);
                            blue = Convert.ToInt16(blue / 10);

                            for (z = 1; z < 11; z++)
                            {
                                bm.SetPixel(x + z, y, Color.FromArgb(255, Convert.ToInt32(cact.R + red * z), Convert.ToInt32(cact.G + green * z), Convert.ToInt32(cact.B + blue * z)));
                               
                            }//end for Z setpixel
                            x = x + 10;  //le adelanto 10  x los pixeles agregados
                        }//end if detectar csig = blanco
                    }//end if cact!=csig
                   

                }//end if x!=xmax
             
                //sombra a la izquierda
             csig = bm.GetPixel(x + 1, y);
                if (cact.B == 255 && cact.G == 255 & cact.R == 255 & csig.R!=255 & csig.G!=255 & csig.B!=255)
                {
                    red = cact.R-csig.R  ;
                    green = cact.G- csig.G;
                    blue = cact.B- csig.B  ;
                    red = Convert.ToInt16(red / 10);
                    green = Convert.ToInt16(green / 10);
                    blue = Convert.ToInt16(blue / 10);
                    for (z = 0; z < 10; z++)
                    {
                        bm.SetPixel(x - z, y, Color.FromArgb(255, Convert.ToInt32(csig.R + red * z), Convert.ToInt32(csig.G + green * z), Convert.ToInt32(csig.B + blue * z)));
                       
                    }//end for Z setpixel
                   
                   
                }


            }//end for horizontal

        }
   
       
        //' Display the results.
        pbxpic.Image = bm;
        }//end color


 bueno cualquier duda sobre el codigo me avisas
En línea
Ni0
Gran Colaborador
*****
Desconectado Desconectado

Mensajes: 1365


Ni0-inside the source code

Ni0@el-hacker.org
Ver Perfil WWW Email
« Respuesta #6 en: Octubre 22, 2007, 03:03:20 »

estaba dormido, quisa no era PHP, pero algo parecido, es xlm o algo de eso, es el archivo form1.resx
y dice:
Código:
<?xml version="1.0" encoding="utf-8"?>
<root>
  <!--
    Microsoft ResX Schema
   
    Version 2.0
   
    The primary goals of this format is to allow a simple XML format
    that is mostly human readable. The generation and parsing of the
    various data types are done through the TypeConverter classes
    associated with the data types.
   
    Example:
   
    ... ado.net/XML headers & schema ...
    <resheader name="resmimetype">text/microsoft-resx</resheader>
    <resheader name="version">2.0</resheader>
    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
        <value>[base64 mime encoded serialized .NET Framework object]</value>
    </data>
    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
        <comment>This is a comment</comment>
    </data>
               
    There are any number of "resheader" rows that contain simple
    name/value pairs.
   
    Each data row contains a name, and value. The row also contains a
    type or mimetype. Type corresponds to a .NET class that support
    text/value conversion through the TypeConverter architecture.
    Classes that don't support this are serialized and stored with the
    mimetype set.
   
    The mimetype is used for serialized objects, and tells the
    ResXResourceReader how to depersist the object. This is currently not
    extensible. For a given mimetype the value must be set accordingly:
   
    Note - application/x-microsoft.net.object.binary.base64 is the format
    that the ResXResourceWriter will generate, however the reader can
    read any of the formats listed below.
   
    mimetype: application/x-microsoft.net.object.binary.base64
    value   : The object must be serialized with
            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
            : and then encoded with base64 encoding.
   
    mimetype: application/x-microsoft.net.object.soap.base64
    value   : The object must be serialized with
            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
            : and then encoded with base64 encoding.

    mimetype: application/x-microsoft.net.object.bytearray.base64
    value   : The object must be serialized into a byte array
            : using a System.ComponentModel.TypeConverter
            : and then encoded with base64 encoding.
    -->
  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
    <xsd:element name="root" msdata:IsDataSet="true">
      <xsd:complexType>
        <xsd:choice maxOccurs="unbounded">
          <xsd:element name="metadata">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" />
              </xsd:sequence>
              <xsd:attribute name="name" use="required" type="xsd:string" />
              <xsd:attribute name="type" type="xsd:string" />
              <xsd:attribute name="mimetype" type="xsd:string" />
              <xsd:attribute ref="xml:space" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="assembly">
            <xsd:complexType>
              <xsd:attribute name="alias" type="xsd:string" />
              <xsd:attribute name="name" type="xsd:string" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="data">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
              </xsd:sequence>
              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
              <xsd:attribute ref="xml:space" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="resheader">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
              </xsd:sequence>
              <xsd:attribute name="name" type="xsd:string" use="required" />
            </xsd:complexType>
          </xsd:element>
        </xsd:choice>
      </xsd:complexType>
    </xsd:element>
  </xsd:schema>
  <resheader name="resmimetype">
    <value>text/microsoft-resx</value>
  </resheader>
  <resheader name="version">
    <value>2.0</value>
  </resheader>
  <resheader name="reader">
    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </resheader>
  <resheader name="writer">
    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </resheader>
  <metadata name="ofd.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
    <value>17, 17</value>
  </metadata>
  <metadata name="$this.TrayHeight" type="System.Int32, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
    <value>39</value>
  </metadata>
</root>
ahi me fijo tu codigo
En línea

Inside The Source Code




Para ver los enlaces debes ser usuario Crear Usuario o Hacer Sesion
Linux Registred User #460377
Ni0
Gran Colaborador
*****
Desconectado Desconectado

Mensajes: 1365


Ni0-inside the source code

Ni0@el-hacker.org
Ver Perfil WWW Email
« Respuesta #7 en: Octubre 22, 2007, 03:30:11 »

no entiendo porque tarda tanto, el codigo lo entiendo, pero no entiendo porque tarda 30 segundos!!, jaja.
y digamos que el codigo "no te sirve", osea, si sirve, pero solo sirve para dibujos como el de prueba, si tenes un dibujo de, por ejemplo, un avion, tu codigo pone sombra en cualquier lado, quisa tendrias que poner que si el color es, por ejemplo, blaco, que ponga ahi la sombra.

salu2
En línea

Inside The Source Code




Para ver los enlaces debes ser usuario Crear Usuario o Hacer Sesion
Linux Registred User #460377
neoxero
Recien Llegado
*
Desconectado Desconectado

Mensajes: 5


Ver Perfil Email
« Respuesta #8 en: Octubre 22, 2007, 03:38:21 »

jejeje si mira segun e leido dura muchisimo debido a que lee la imagen directamente algo asi existe una funcion llamada lockbits pero aun no le se =( y esa lo ke hace es mandar la imagen a la memoria y modificarla ahi (algo asi como mediante punteros)  bueno y sobre lo de el avion pss eske es mejor empezar por lo basico no crees  Grin Grin ya que funcione bien este pss ahora si se podrian buscar las mejoras  de antemano gracias por tu disposicion y si sabes como hacerlo en C o C++ te lo agradeceria  Roll Eyes Roll Eyes

aaaa porke aun falta ke si son 2 figuras pegadas de color (ej verde y azul) ke en lugar de desvanecido cree una mezcla de los colores    Grin Grin
« Última modificación: Octubre 22, 2007, 03:43:10 por neoxero » En línea
Ni0
Gran Colaborador
*****
Desconectado Desconectado

Mensajes: 1365


Ni0-inside the source code

Ni0@el-hacker.org
Ver Perfil WWW Email
« Respuesta #9 en: Octubre 22, 2007, 03:49:19 »

jaja, mira, estudia a los bitmaps, osea, que contienen, entonces abris el bitmap como un archivo, no como imagen, y guardas la info en la memoria (que supongo que es lo que hace el lockbits), y entonces lo lees de la memoria.
en C yo haria eso.

me fijo si puedo hacer algo

sino, hace esto, con la funcion que obtiene un pixel del bitmap  guardas todos los bitmas en memoria, y de ahi lo lees el bitmap

hay matrices en C#?? en C se hacen asi:
Código:
int matriz_de_ejemplo [x][y];
donde x e y serian 2 variables o 2 numeros, en realidad no son x y, pero si lo tomas como tal tendrias un plano

salu2!
« Última modificación: Octubre 22, 2007, 03:52:40 por Ni0 » En línea

Inside The Source Code




Para ver los enlaces debes ser usuario Crear Usuario o Hacer Sesion
Linux Registred User #460377
Ni0
Gran Colaborador
*****
Desconectado Desconectado

Mensajes: 1365


Ni0-inside the source code

Ni0@el-hacker.org
Ver Perfil WWW Email
« Respuesta #10 en: Octubre 22, 2007, 03:51:59 »

no me di cuenta que al principio ya habia hablado de matrices, jaja xD
En línea

Inside The Source Code




Para ver los enlaces debes ser usuario Crear Usuario o Hacer Sesion
Linux Registred User #460377
neoxero
Recien Llegado
*
Desconectado Desconectado

Mensajes: 5


Ver Perfil Email
« Respuesta #11 en: Octubre 22, 2007, 04:23:40 »

jeje  bueno psss veremos ke pasa si kieres agregame al MSN
mi mail es : LOST__LINK @HOTMAIL.COM
En línea
Ni0
Gran Colaborador
*****
Desconectado Desconectado

Mensajes: 1365


Ni0-inside the source code

Ni0@el-hacker.org
Ver Perfil WWW Email
« Respuesta #12 en: Octubre 22, 2007, 10:50:08 »

te agrego ahora mismo

veo si te puedo hacer algo en C, pero ahora la escuela me mantiene ocupado, aparte de que estoy programando un programa con alesteir, y es largo...
pero veo si encuentro un espacio de tiempo para esto, ya que no es mucho

salu2!
« Última modificación: Octubre 22, 2007, 12:41:23 por Ni0 » En línea

Inside The Source Code




Para ver los enlaces debes ser usuario Crear Usuario o Hacer Sesion
Linux Registred User #460377
Páginas: [1] Ir Arriba Imprimir 
Comunidad Underground Hispana  |  Programacion  |  Programación  |  Carbide C/C#/C++  |  Tema: Graficos 3d [ayuda] « anterior próximo »
Ir a:  


Ranking-Hits
Powered by SMF 1.1.5 | SMF © 2006-2007, Simple Machines LLC