https://www.segasaturno.com/portal/viewtopic.php?f=33&t=4125&p=28556#p28556
-----------------------------------
FacundoARG
02 Octobre 2009, 06:54 AM

[Homebrew] [VDP1] Cargando Una Tetera De 3dStudio
-----------------------------------
Bien, a pedido de los marinos que siguen en este barco  :D  . 
Por fin traigo el tuto de como levantar un objeto en 3D, modelado a su gusto  :twisted: . Ando un poco complicado, es que se me rompió el rígido de la PC.  :P 

[align=center][youtube]imF5C82v1xc[/youtube][/align]

Si no sabes cómo empezar, mira este [url=http://www.segasaturno.com/portal/viewtopic.php?f=22&t=3932]link primero. Como simpre usaremos el ejemplo [b]S_2_2[/b] .


Bien, vamos a mostrar una tetera creada con [b]3Dstudio max 7[/b], es la que sale en la solapa teapot; obviamente le vamos a tener que bajar la cantidad de caras.

[img]http://www.segasaturno.com/portal/files/images/1077/teapot.png[/img]

Tampoco tocaremos el tema de herencia sobre los modelos, solamente la carga y el pintado.



Una vez creada la tetera, exportamos el archivo como [b]teapot.dxf [/b] :wink: 


Ahora viene un proceso tedioso, yo recomendaría hacer algún batch file para que lo haga automáticamente.

Primero arrojamos el archivo a [b]C:SaturnOrbitTOOLS
[/b]
Abrimos una ventana de comandos, y escribimos  [b]RB_SaturnDXF.EXE teapot.DXF -o teapot.DXF -x[/b]
Luego movemos el archivo a, [b]C:SaturnOrbitTOOLSSSSDK[/b]

En la misma ventana de comandos, escribimos y ejecuatamos [b]DXF2SG3.EXE teapot.DXF[/b]

Básicamente esto filta los datos innecesarios y ademas lo traduce a las coordenadas de SegaSaturn.

[hr]

Luego de esto, abrimos el archivo teapot.sg3 con el [b]3dEditor[/b] del SDK.
Podemos ver, que se ve la tetera. Bien ahora lo vamos a "[b]Save as[/b]" y colocamos la opción "[b].MDL[/b] "
Bien con esto obtenemos el archivo con todos los datos el cual debemos incluirlo en nuestro código. 
Esto ocupara Ram del sistema principal.


Un [b]MDL[/b], tiene la siguiente estructura:

[list]
[*] [b]POINT point_0[]  [/b]: vector que indica donde estan todos los puntos en el espacio.
[*] [b]POLYGON	polygon_0[] [/b]: vector que indica como esta unida cada cara.
[*] [b]ATTR	attribute_0[] [/b]: vector que indica por cada cara los atributos que posee, textura, grourad, etc.
[*] [b]XPDATA	xpdata_0[] [/b]: vector que indica el tamaño que ocupa en memoria.
[*] [b]OBJECT	object_0[][/b]: vector que contiene las coordenadas de origen sobre el objeto.
[/list]

Nuestra variable a manejas sobre este objeto es [b]xpdata_0[/b]

Bien ahora vamos con el código. Es muy sencillo incluir un modelo 3D.
Creamos una carpeta dentro del proyecto, "Polygon" donde incluiremos todos nuestros modelos. Lo colocamos ahí.

[hr]

Dentro de nuestro código debemos incluirlo.
[code]
#include "Polygon/teapot.mdl"
[/code]

cree estas variables para manejar la tetera.
[code]
  FIXED pos1[XYZ];
     ANGLE ang1[XYZ];     
    
    pos1[X]=toFIXED(0.0);
    pos1[Y]=toFIXED(35.0);
    pos1[Z]=toFIXED(220.0);
    
    ang1[X]=ang1[Y]=ang1[Z]=DEGtoANG(90.0);
    
[/code]

Dentro del [b]while[/b] principal
[code]
      slPushMatrix();
      //Guardamos en la pila la matriz actual
        {
           slTranslate(pos1[X],pos1[Y],pos1[Z]);
           //trasladamos el objeto a las posiciones espezificadas.
           
           slRotY(ang);
           //Lo rotamos de acuerdo al angulo.
           
           slPutPolygon((PDATA *)&xpdata_0);
           
           //lo mostramos
        }
        slPopMatrix();
      //Sacamos de la pila la matriz
[/code]        

Personalmente tuve un problema con este objeto y tuve que editarlo a mano (no queda otra opción), algunas coordenadas al ser tan precisas el [b]3Deditor [/b]las transforma como [b]#IND[/b], el cual deberemos reemplazarlo con [b]0000[/b]. 
Nuestro compilador no interpreta que es eso, y nos marca que no reconoce lo siguiente [b]-1.#IND[/b] entonces nosotros debemos cambiarlo por [b]-1.0000[/b] .
Con un editor de texto, lo hacemos en 2(dos) segundos.

El tema de las matrices es algo complejo, donde se puede usar la herencia entre los distintos objetos 3D. 
Requiere de otro tutorial más específico.

PD: envien un MP para el que quiera el proyecto y la iso. No quiero sobre cargar el foro  :roll: .


