Main Menu

mov_vse

Started by DCelso, March 11, 2010, 12:15:39 AM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

DCelso

Drumpi,
prueba esta nueva versión,he puesto en target lo siguiente,

b = vse_fget_angle(VoxSpaceIdents[id_voxelspace]->x,
VoxSpaceIdents[id_voxelspace]->y, x, y);

a = vse_fget_angle(0,
VoxSpaceIdents[id_voxelspace]->z/128, get_dist(VoxSpaceIdents[id_voxelspace]->x,VoxSpaceIdents[id_voxelspace]->y,x,y) , -z*2);


el dividir por 128 no se porqué ni el -z*2, puedes explicarmelo?
Monstruos Diabólicos

"A PAck of classic GAMEs For BennuGD" en desarrollo
http://code.google.com/p/apagame4be/

DCelso

voy a colgar el código aqui entero por si te ayuda, pero OJO no lo useis para compilarlo porque aún está muy verde
Monstruos Diabólicos

"A PAck of classic GAMEs For BennuGD" en desarrollo
http://code.google.com/p/apagame4be/

Drumpi

Te lo pruebo luego, que ahora estoy con Linux ^^U

Como te dije antes, esos valores son para corregir a ojo las deformaciones del voxel por la apertura del ángulo de la cámara y el tamaño de cada pixel de altura. Me explico mejor:

int vse_set_voxelspace ( int id_voxelspace, int angle, int jump, int scroll, int maxStep, int scale )

   Parámetros:

   * id_voxelspace:   Identificador de la escena a configurar
   * angle:               Ángulo de apertura de la cámara
   * jump:                  Columnas a dibujar por iteración (1,2 ó 4)
   * scroll:                 Indica si el mapa es cíclico
   * maxStep:           Profundidad máxima a la que se renderiza
   * scale                  Cantidad que se escalan las alturas

El ángulo de apertura de la cámara indica cuanto se va a ver. Una persona puede ver casi 180º a su alrededor sin mover los ojos. Los pájaros, al tener los ojos en los lados, pueden cubrir un ángulo mayor, superior a los 300º. Si miras por una ventana, tu ángulo de visión se reduce.
Si has visto algo de óptica, o has tirado fotos o eres aficionado al video, supongo que sabrás de que va el tema. Hay lentes que permiten ver con mayor o menor ángulo ¿has visto los videos de los skaters? usan una lente con un ángulo de visión enorme, pero eso provoca el efecto ojo de pez (en el centro las cosas se estiran hacia arriba y abajo, y en los extremos laterales se encogen).

Esta deformación afecta a la posición del sprite en pantalla, por lo que hay que inclinar más o menos la cámara.

También está el campo scale, que se explica en la ayuda:
Con scale indicamos por cuanto se amplifican las alturas del mapa de alturas, es decir, si usamos un scale 8 (el que hay por defecto) la altura que tendrá la punta más alta de un mapa de alturas será 255*8 = 2040 (referido a la posición del observador), es decir, que cuanto mayor sea scale las montañas serán más "puntiagudas", scale debe ser una potencia de 2 (1, 2, 4, 8, 16, ...)

Obviamente esto también afecta a la posición del sprite en pantalla.


Pero, supuestamente, en el código interno, todo esto ya se tiene en cuenta al calcular las posiciones y los ángulos y todo, por lo que el /128 y el *2 no deberían ser necesarios.
¿No te había explicado ya esto antes? ???
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)

Windgate

Arg, ¿Cómo me subís los test sin la .dll?

Voy a ver si por fin pruebo este módulo :S
Iván García Subero. Programador, profesor de informática, monitor de actividades culturales y presidente de TRINIT Asociación de Informáticos de Zaragoza. http://trinit.es

Windgate

Veamos, tengo un problema de índole sexual con este módulo:

- Intento compilar el test y me pide la vse.dll
- Descargo la dll y veo que se llama libvse.dll
- Renombro a vse.dll y me dice que vse_new_vexelworkspace no está definido

Un .zip con todo incluido pofavo... He estado siguiendo el hilo más o menos, pero ando un poco perdido...
Iván García Subero. Programador, profesor de informática, monitor de actividades culturales y presidente de TRINIT Asociación de Informáticos de Zaragoza. http://trinit.es

DCelso

esta es la peúltima versión de la lib que tengo
http://forum.bennugd.org/index.php?action=dlattach;topic=1225.0;attach=1004
la colgué hace unos cuantos hilos atrás.
Y la última versión se conseguiría añadiendo
http://forum.bennugd.org/index.php?action=dlattach;topic=1225.0;attach=1006
esta otra lib.

A ver si me explico, "vse.dll" es la versión que viene en el bennupack, simplemente es un port de la vse 0.80 de tristan.
Luego yo he dividido el código fuente en dos dlls independiente libvse.dll que es la librería que tiene todas las funciones vse implementadas y luego un mod_vse.dll que es un wrapper de libvse para bennugd.
Así que si usas vse.dll solo necesitas este archivo y poner import "vse" en tu prg, pero no es la versión de mi port, sino la de supongo que de l1nk3rn3l.
Si quieres usar mi versión necesitas mod_vse.dll  y libvse.dll y poner import "mod_vse" en tu prg.

Tu lo que has hecho es intentar usar mi libvse.dll como si fuere el vse.dll del bennupack, o lo que es lo mismo has intentado usarlo como módulo bennu, y no lo es, el módulo bennu es mod_vse.dll pero internamente llama a las funciones de libvse.dll, de haí el nombre de "wrapper"
Espero que quede claro ahora que estamos todos un poco empanaos últimamente :D.

Drumpi, tienes razón ya lo dijiste, pero si quito el /128 no se ve nada en la scenne y si quito el -z*2 y pongo solo z sin el menos ni el por dos entonces al saltar el sonik la camara no lo sigue bien, salta bastante.
Espero que mires el ejemplo a ver si los resultados son los esperados.
Monstruos Diabólicos

"A PAck of classic GAMEs For BennuGD" en desarrollo
http://code.google.com/p/apagame4be/

Drumpi

Pues he sobreescrito la libvse y... bueno, poco a poco. Ahora sí se puede ir por detrás de la escena sin que la cámara se vuelva loca, siempre apunta a la escena... aunque si la cámara se acerca demasiado a su target empieza a apuntar hacia arriba.
Lo de desaparecer el sprite sigue ahi ¿has tocado algo fuera de la vse_target? bueno, ya lo miraré. Y es curioso pero desaparece el sprite cuando la cámara supera la Y de este ¿guarda relación con lo anterior?.

Con el código puedo mirarlo tranquilamente, aunque ahora mismo tengo demasiados frentes abiertos :S (tres con el proyecto, la demo de VSE para Splinter, esto... y alguna cosa más que no merece la pena contar).
Qué raro que hayas recurrido a funciones de Bennu en lugar de escribir las operaciones directamente.
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)

DCelso

#97
no, que va, he escrito las operaciones directamente, el getdist ese que ves y el getangle son funciones hechas por mí en c, pero así hago que se vea más claro y tal. He probado pruebas de rendimiento con el test y no afecta a los FPS por si lo decías por eso.

En cuanto a la desaparición del sprite, ¿Que prueba has hecho para conseguirlo en el platf3d? O ha sido en el test06 solamente.

Y sí, además del target, modifiqué el render para que no mostrara las líneas esas que salían antes.
También modifiqué la lógica de agrandar y extrechar el sprite automáticamente para que cuando el map del sprite fuese tan chico que valiera 0 no cascase la lib.
También toqué todo el código para eliminar algunas variables no usadas, código muerto, cambios de algunas lógicas para que se vieran más claras o aportaran mejoras en el rendimiento, etc. Así que puede que algun cambio afecte al sprite, pero vamos no debería.

Tenía algunas cosas pendientes antes de soltar el código por eso era tan reacio a dejarlo pero si va a servir para que me ayudes pues lo dejo.
Queda esto por hacer
* Fallo que hace que el sprite desaparezca.
* Ver si el comportamiento de target está bien.
* Fallo de renderizado de texturas de 16 bits.
* Soporte de texturas de 32 bits. (Aunque esto no se yo si para el suelto tiene mucho sentido, pero como bennu las soporta ¿por qué no esta lib? :D)
* Organización interna de algunas funciones, y modularización de algoritmos repetitivos.
Monstruos Diabólicos

"A PAck of classic GAMEs For BennuGD" en desarrollo
http://code.google.com/p/apagame4be/

Drumpi

Perdona que no le dedique más tiempo a la librería, pero es que estoy realmente liado, y en casa no me dejan ni trabajar :S

Respecto a la prueba del sprite, en el test06 he visto que pasa cuando se mueve un poco más a la izquierda del centro de la pantalla. Pero en el plataf3d lo que he hecho es mover la cámara hacia la escena (pulsando QA), alejándolo ligeramente con DE, verás que cuando la cámara se pone detrás del sprite (como si se jugase a un Crash Bandicoot) desaparece.
Sospecho que pasa lo mismo con el test06, porque la cámara está con cierto ángulo y todo eso, no lo se, ya digo que no me dejan ni respirar.
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)

Windgate

Lo he probado, es tremendamente simple, pero me ha gustado, algo así de simple debería funcionar en GP2X y otros dispositivos que no soportarían un render 3D real.

Os doy el merecido karma DCelso y Drumpi, ¿Alguien más? xD

Para el test sería interesante mostrar la pantalla más grande, es tan pequeña y tan pixelado lo que se ve que si no te lo dicen no parece que sea pseudo-3D
Iván García Subero. Programador, profesor de informática, monitor de actividades culturales y presidente de TRINIT Asociación de Informáticos de Zaragoza. http://trinit.es

Drumpi

Yo de momento no he hecho nada, DCelso es el que está arreglando el código.
También deberías darle el karma a linkernel, que fue el primero en portarlo. Por lo visto DCelso no quiere los karmas que se merece :D :D :D

Lo de mostrar la pantalla más grande, basta con cambiar el tamaño del mapa que se crea para usarlo. Y eso de que no parece 3D, es porque no has movido la cámara :P
Lo de que no esté tan pixelado ya es más difícil, es como pedírselo al modo7.
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)

DCelso

Quote from: Drumpi on March 19, 2010, 02:19:43 PM
Yo de momento no he hecho nada, DCelso es el que está arreglando el código.
También deberías darle el karma a linkernel, que fue el primero en portarlo. Por lo visto DCelso no quiere los karmas que se merece :D :D :D

Lo de mostrar la pantalla más grande, basta con cambiar el tamaño del mapa que se crea para usarlo. Y eso de que no parece 3D, es porque no has movido la cámara :P
Lo de que no esté tan pixelado ya es más difícil, es como pedírselo al modo7.
Con esta afirmación parece que he basado mi código en el port de l1k3rn3l cuando no es así. Mi port está basado directamente en la lib v.80 de tristán para fenix.
Yo me enteré de que estaba portado después de haber hecho mi port :(, y fué debido a que freeyourmind intentó portarlo porque drumpi afirmó en varias ocasiones que sería genial tener un port de vse para bennu, y al no conseguirlo me sugirió que lo intentara yo.
Ni Druimpi ni free ni yo conocíamos el port del bennupack si lo hubiéramos sabido alguno seguro que este port (el mío) de vse nunca hubiera existido.

En cuanto a los karmas, a ver, lo que no quería era que me die¡ran karmas por portar una lib que ya estaba portada de antes a bennu.
Pero ahora por las modificaciones creo que sí me los merezco (¿No?):D. Bueno, también Drumpi por su ayuda en los test y en sus conocimientos en trigonometría para 3D.
Y free por "obligarme" a meterme en estos lares, y a SplinterGU por BennuGD y a tí por probarlo, y a ....
Monstruos Diabólicos

"A PAck of classic GAMEs For BennuGD" en desarrollo
http://code.google.com/p/apagame4be/

FreeYourMind

#102
Es lo que ya he afirmado antes, los Karmas os estan afectando el espirito, será mejor tener cuidado  ;D

Por otro lado, me duele más que ni habeis probado mi logo/efecto usando el size_y, maldito efecto karma   :-[

DCelso

hombre, todos estamos liados y ya con la imagen pues nos hacemos una idea :D
Monstruos Diabólicos

"A PAck of classic GAMEs For BennuGD" en desarrollo
http://code.google.com/p/apagame4be/

FreeYourMind

Que va, es que la imagen no dice nada del efecto... Es de los que hay que verlos... Sin excusas vamos, lo pruebas en 5 segundos, llamando el dcb y listo...