Motorcillo 3D para Spectrum.

Foro dedicado a la programación en todo tipo de sistemas clásicos.
Avatar de Usuario
mentalthink
Amiga 2500
Amiga 2500
Mensajes: 2840
Registrado: 11 Abr 2010, 15:06
Gracias dadas: 45 veces
Gracias recibidas: 14 veces

Re: Motorcillo 3D para Spectrum.

Mensajepor mentalthink » 02 Oct 2012, 16:23

Buff pues si que es intersante si!!!, el problema es escanearlo...

Gracias Radastán, miraré a ver si hay suerte y existe en algún sitio... quizás en un FTP o algo, está esta colección.

Avatar de Usuario
Toniman
MSX Turbo R
MSX Turbo R
Mensajes: 263
Registrado: 12 Jul 2011, 19:32

Re: Motorcillo 3D para Spectrum.

Mensajepor Toniman » 02 Oct 2012, 16:35

mcleod_ideafix escribió:Ah! creo que ya lo tengo.

"v" define vértices en 3D. Eso estaba claro.
Las "vn" son las normales como dijimos. No las necesitamos.
"f" son los polígonos. El primer "f" por ejemplo es para pintar el cuadrado de la base de la pirámide. Los números entre // son los índices de los vértices que usa para dibujarlo, y el orden en que deben dibujarse. Hay un cuadrado (primer "f", que usa 4 vértices) y luego cuatro triángulos (las caras laterales de la pirámide) que usan 3 vértices cada una.

Tal como está el fichero, sí, es posible convertir eso a una lista de vértices 2D, pero habría que optimizar la generación para no generar líneas repetidas. Por ejemplo, en tu pirámide, cada triángulo que comprende una cara lateral tiene en común un lado con la base y otro lado con el siguiente triángulo. Habría que detectar estas repeticiones para no añadirlas al listado de vértices final. Esto se puede detectar fácilmente en la lista de "f" del fichero. Por ejemplo:

Código: Seleccionar todo

f 2//2 1//1 3//3 5//5

OK. Se convierte a un polígono que une los vértices 2-1-3-5-2 (cuatro líneas)

Código: Seleccionar todo

f 3//3 4//4 5//5

La línea que va de 5 a 3 (último a primer vértice) ya está incluida en el primer polígono (3 a 5), así que no se pinta. Se convierte por tanto a 3-4-5 (dos líneas)

Código: Seleccionar todo

f 4//4 3//3 1//1

La línea 4-3 está incluida en el polígono anterior (3-4). La línea 3-1 está incluida en el primer polígono (1-3). Este polígono se renderiza como 1-4 (una línea)

Código: Seleccionar todo

f 4//4 1//1 2//2

Análogo al anterior. 4-1 y 1-2 ya están incluidas en anteriores polígonos. Se renderiza como 2-4 (una línea)

Código: Seleccionar todo

f 5//5 4//4 2//2

Todas las líneas que se definen aquí ya está incluidas en polígonos anteriores. No se renderiza.

Total, 8 líneas hay que renderizar (lo mínimo como se puede comprobar, para dibujar una pirámide rectangular)


Que bien ;)

Entonces ¿podrias pintarla tal y como esta? necesito saber cuantas lineas de vblank lleva pintarlo para saber cuando porcentaje de CPU queda libre en un frame. en ASM por supuesto.

Sino te hago otro objeto en perspectiva o algo.
Y el ninja purpura sigue buscando nuevas aventuras.

Avatar de Usuario
mcleod_ideafix
Amiga 2500
Amiga 2500
Mensajes: 5316
Registrado: 06 Oct 2009, 04:12
Sistema Favorito: Spectrum 16Kb/48Kb
primer_sistema: Spectrum 16Kb/48Kb
consola_favorita: Vectrex
Primera consola: TV Games/Pong Clone
Ubicación: Jerez de la Frontera
Gracias dadas: 12 veces
Gracias recibidas: 54 veces
Contactar:

Re: Motorcillo 3D para Spectrum.

Mensajepor mcleod_ideafix » 02 Oct 2012, 16:47

Toniman escribió:Que bien ;)
Entonces ¿podrias pintarla tal y como esta?


Casi. Lo que no sé es la posición de la cámara y su vector. Es decir, qué orientación tiene la pirámide. La puedo dibujar desde arriba, desde abajo, desde un lateral, etc. Esto es necesario para poder hacer la transformación de perspectiva que nos dará los puntos 2D, pero si pretende que también haga eso, entonces tendrás que esperar un poco. Mi ofrecimiento de ayuda era con el ASM para que vieras cómo pintar líneas, no con la transformación de objetos 3D a 2D.
Recuerda: cada vez que se implementa un sistema clásico en FPGA, Dios mata a un purista

Avatar de Usuario
Toniman
MSX Turbo R
MSX Turbo R
Mensajes: 263
Registrado: 12 Jul 2011, 19:32

Re: Motorcillo 3D para Spectrum.

Mensajepor Toniman » 02 Oct 2012, 17:01

Ok, Mc_leod, espera que haga una cosa, solo quiero pintado de lineas, ahora en un rato te mando una cosa por aqui.
Y el ninja purpura sigue buscando nuevas aventuras.

Avatar de Usuario
mcleod_ideafix
Amiga 2500
Amiga 2500
Mensajes: 5316
Registrado: 06 Oct 2009, 04:12
Sistema Favorito: Spectrum 16Kb/48Kb
primer_sistema: Spectrum 16Kb/48Kb
consola_favorita: Vectrex
Primera consola: TV Games/Pong Clone
Ubicación: Jerez de la Frontera
Gracias dadas: 12 veces
Gracias recibidas: 54 veces
Contactar:

Re: Motorcillo 3D para Spectrum.

Mensajepor mcleod_ideafix » 02 Oct 2012, 17:18

Toniman escribió:Mc_Leod, yo cuando hago un objeto, me sale este codigo

Una curiosidad: este código, ¿qué programa lo genera?
Recuerda: cada vez que se implementa un sistema clásico en FPGA, Dios mata a un purista

Avatar de Usuario
Toniman
MSX Turbo R
MSX Turbo R
Mensajes: 263
Registrado: 12 Jul 2011, 19:32

Re: Motorcillo 3D para Spectrum.

Mensajepor Toniman » 02 Oct 2012, 17:42

El codigo del objeto anterior lo genero con Lightwave 3D, este que te mando lo he hecho renderizando una perspectiva y contando los vertices a mano en el programa de dibujo.

He creado 3 frames, cada frame tiene los siguientes vertices, pondre primero las coordenadas de los vertices horizontales y luego los verticales y diagonales, son coordenadas 2D de la pantalla del spectrum( : y x son lo mismo):

Frame 1
0:40 a 255:40
0:63 a 255:63
0:128 a 255:128
0:151 a 255:151

16:40 a 16:151
16:40 a 63:63
16:151 a 63:128
63:63 a 63:128
128:40 a 128x151
192x63 a 192x128
192x63 a 239x40
192x128 a 239x151
239x40 a 239x151

Bueno, con este frame ya podemos saber cuanto lleva en dibujarlo.
Y el ninja purpura sigue buscando nuevas aventuras.

Avatar de Usuario
mcleod_ideafix
Amiga 2500
Amiga 2500
Mensajes: 5316
Registrado: 06 Oct 2009, 04:12
Sistema Favorito: Spectrum 16Kb/48Kb
primer_sistema: Spectrum 16Kb/48Kb
consola_favorita: Vectrex
Primera consola: TV Games/Pong Clone
Ubicación: Jerez de la Frontera
Gracias dadas: 12 veces
Gracias recibidas: 54 veces
Contactar:

Re: Motorcillo 3D para Spectrum.

Mensajepor mcleod_ideafix » 02 Oct 2012, 18:03

Una prueba rápida en BASIC para probar el dibujo que me has dado...
listado_basic_prueba_render.png
listado_basic_prueba_render.png (10.98 KiB) Visto 7526 veces


Resulta en este dibujo:
resultado_render_basic.png
resultado_render_basic.png (5.34 KiB) Visto 7526 veces


Aunque es BASIC, te puedes hacer una idea de la velocidad ejecutando este programa (hasta que tenga escrita la versión para C/M).
Adjuntos
prueba_render_basic.zip
(1.88 KiB) Descargado 533 veces
Recuerda: cada vez que se implementa un sistema clásico en FPGA, Dios mata a un purista

Avatar de Usuario
Toniman
MSX Turbo R
MSX Turbo R
Mensajes: 263
Registrado: 12 Jul 2011, 19:32

Re: Motorcillo 3D para Spectrum.

Mensajepor Toniman » 02 Oct 2012, 18:21

Eso es exactamente el dibujo ;)

Muchas gracias.
Y el ninja purpura sigue buscando nuevas aventuras.

jepalza

Re: Motorcillo 3D para Spectrum.

Mensajepor jepalza » 02 Oct 2012, 19:31

mentalthink escribió:Pues a mi por lo que me toca me interesa mucho esto que comentáis sobre todo el libro que comenta Jepalza...


No, es este otro: (la portada está escaneada del mio original, si, si, de papel, de esos que ya no se llevan)
( y no debería decirlo, pero es fácil de buscar ;-) )
Edito: veo que radastan tambien ha contestado sobre el libro. Se nota a quienes nos ha gustado .... ;-)
Adjuntos
_portada.jpg
_portada.jpg (34.88 KiB) Visto 7519 veces

jepalza

Re: Motorcillo 3D para Spectrum.

Mensajepor jepalza » 02 Oct 2012, 19:35

Toniman escribió: Por favor Jepalza si te ha parecido que yo he dado señales de molestia en algun momento, no es asi, ya que yo creo que en un principio no me estaba explicando bien,.


No importa, ya ves que tampoco me lo he tomado mal, y he seguido ayudando en lo posible.


Volver a “Programación”

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 9 invitados