Pues se me acaba de ocurrir una pequeña maldad, pero no sé si se puede hacer con luadev.
Necesitaría capturar una imagen de la pantalla, igual que el image.save, pero guardarla en la ram, no en un png.
He supuesto que hacer eso, debería ser casi instantáneo (no sé si lo sería) porque no hay que escribir en la tarjeta de memoria.
Suponiendo esto, imaginaos que esa función está dentro de un while true, por lo que actualiza constántemente esa imagen...
Entonces solo tendría que "blitearla" rotada 180º para crear, una especie de superficie reflectante.
Bueno se puede capturar en ram? alguien sabe? De todas formas le preguntaré a deviante.
Saludos
Pobre PSP
¡Probado!
¡Listo! Ya está testeado y todo. Al final la función era la que dijo Chime: mirrorv()
Se aplica así:
Esto es sólo un miniprogramita para que la idea quede clara, pero las aplicaciones de esta función son casi infinitas :D
Un saludo.
Me puse a hacer otras cosas y
Me puse a hacer otras cosas y ni lo probé jeje, tendría que ver si capturando la pantalla y usando esta función, el espejo se ve creible en una escena 3d, pero como el hecho de hacer un "screen.toimage" congela momentáneamente luadev, no se puede usar dentro de un while de cualquier manera.
Intentaré aprender a usar la opción multitarea a ver si haciendo el screen.toimage en otro proceso "de fondo" se evitan esos parones.
Pobre PSP
Has probado a hacer el
Has probado a hacer el screen.toimage cada cierto número de ciclos? Por ejemplo...
Eso tomaría la captura cada 10 ciclos de ejecución en lugar de hacerlo 1 vez por ciclo.
Si
Probé haciendo el screen.toimage cada 3 ciclos y no se ve muy bien, porque todo va perfecto hasta que le toca hacer una captura y da un tironcillo, se ve como un DVD o Blue-ray que estuviese rayado jeje.
Aunque ahora que lo pienso, si se limita la tasa de imágenes por ejemplo, a 30 fps, entonces no se nota nada, pero claro, a esa tasa de imágenes es a la que funciona ya de por sí, cuando hace una captura en cada ciclo, así que estamos en las mismas.
Pobre PSP
Joer, Rober...
No se como aún no te has animado a hacer alguna app para PSP, eres un coder genial, tio!
Gracias, pero que va, no soy
Gracias, pero que va, no soy tan coder como crees. No he desarrollado nada para psp que merezca la pena, por falta de ganas, de tiempo y porque ando enredado con un proyectillo en Android (vieras que code tan feo tengo allá xDDD).
Uffff...
Mis codes son también bastante feos... bueno, supongo que la práctica lleva a la perfección ;D
Yo el método que uso ahora
Yo el método que uso ahora mismo para programar es ir escribiendo el code y cuando todo se vuelve muy confuso empezar otro code nuevo basandolo en el anterior pero optimizando todo con mejores funciones y un code más reducido. Ha cada code que desecho le doy un nombre con su versión y lo guardo en el disco duro. Por ejemplo es lo que estoy haciendo con OpenShell, y ya tengo las v0.1, v0.2 y v.0.3. Es algo así como ir depurando el code continuamente.
Saludos.
Entiendo...
Gracias por el consejo, lo voy a probar ;D
De hecho no necesitas cargar
De hecho no necesitas cargar dos veces la misma imagen, ya que al parecer mirrorh y mirrorv se usan igual que rotate o resize (sus efectos permanecen hasta que se hace un reset), a saber:
No entiendo...
No entiendo muy bien eso del reset =S
image.reset elimina los
image.reset elimina los cambios hechos en una imagen. Es decir, si escalas, rotas, o espejas una imagen, así se va quedar hasta que no hagas un reset (toma en cuenta que esos efectos no modifican permanentemente la imagen que cargaste, por eso si los quieres conservar tienes que guardarla con image.save).
Pero entonces...
Si bliteas, mirrorv, y después bliteas... el primer blit no se transforma en un mirror también??
By Jorge_97
WTF??
Pues no ya que eso se queda almacenado en el Buffer y no se modifica para nada ;)
Nunca se puede retroceder en el CODE por así decirlo
Un saludo
Dos años en SCENEBETA
Click aquí para ver la Entrada de Bitácora.
No vale solo con girarla 180º...
El efecto espejo propiamente dicho es un "Volteo Vertical" en PS, que consiste en que los pixeles cambien de posición en la imagen de arriba hacia abajo (simetria axial), y eso es algo que he estado intentando mucho tiempo, desafortunadamente sin exito.
Un saludo.
Imagen = Plano 3D
Supongo que si haces un resize o scalefactor con un valor negativo en Y...
No...
Te lo confirmo, una vez también probé eso y sale como un 180º =/
Pues...
¿Y qué tal con un imagen:mirrorv()?
¿Puedes aportar algun dato
¿Puedes aportar algun dato sobre los parámetros y lo que hace? Gracias.
Pues...
Lee el comentario que acabo de poner justo en este instante, en teoría debería hacer el espejo vertical de una imagen, pero no recuerdo cómo funciona exactamente, esperemos a que Dovemac haga la prueba.
Saludos!
PSP FAT [5.00 M33-6] [6.60 ME] [Hard Moded] / Nintendo Wii [4.1U] [cIOS Hermes] [D2X cIOS] / iPhone 3G [4.2.1] [BB 05.13.04] [redsn0w] / iPod Touch 4 [6.1] [evasi0n]
07/05/10: Tuve el placer de llamarle con todo derecho "N00B" a molotovi xDDD
Recuerda: Sé el intérprete -_-
Esa función existe?? O___O
Es que no está documentada... dame una alegría chime y dime que no te confundes con otro lenguaje, por favor :DDD
Jajajjaja
No, no me confundo para nada, revisé un viejo archivo con todas las variables de lua extraídas (usando lo mismo que usaron para el post de funciones desconocidas) y allí estaba.
Ahora, nunca la he probado, pero supongo que puede ser así:
o así:
No recuerdo bien y no tengo la psp a la mano para probar, pero me suena más la primera forma que la segunda, te lo encargo.
Si te salta un mensaje de que se esperaba number, y recibió nil, supongo que será imagen:mirrorh(x, y) o algo así.
PD: También existe mirrorh.
Saludos!
PSP FAT [5.00 M33-6] [6.60 ME] [Hard Moded] / Nintendo Wii [4.1U] [cIOS Hermes] [D2X cIOS] / iPhone 3G [4.2.1] [BB 05.13.04] [redsn0w] / iPod Touch 4 [6.1] [evasi0n]
07/05/10: Tuve el placer de llamarle con todo derecho "N00B" a molotovi xDDD
Recuerda: Sé el intérprete -_-
lo voy a probar
Pero para hacer espejos en tiempo real como quería yo, necesitas la opcion screen.toimage, y probandola me di cuenta que ralentiza mucho lo demás... aunque a lo mejor si se usa la opcion de las "corutines"... jaja voy a ver si soy capaz.
Pobre PSP
Oops
Pequeño error, en los dos ejemplos puse mirrorh, y era mirrorv xD
Cuando esté me avisas plis ;D
Cuando esté me avisas plis ;D
Si es cierto, girarla 180º no
Si es cierto, girarla 180º no vale, pero de todas formas funciona lento, a no se que el screen.toimage solo capturase una parte de la pantalla, o lo hiciese a menor resolución.
De hecho los espejos en blender, funcionan reflejando el "mundo" a menor resolución, aunque usen técnicas de vectores más complicadas, pero bajar la resolución de la textura reflejada aumenta muchísimo el rendimiento y no se ve nada mal.
Pobre PSP
screen.toimage, te devuelve
screen.toimage, te devuelve una imagen lista para usarse con lo que hay en la pantalla.
Gracias!Si es un poco lento
Gracias!
Si es un poco lento siempre se puede hacer com pocas imágenes por segundo.. Bueno, a ver que tal.
Editado:
Pues si que funciona! aunque baja mucho el rendimiento, pero si funciona a 30 fps y el blit lo hacemos de parte de la captura, pues se ve muy bien :).
Saludos
Pobre PSP