Hola a todos ^^
Vereís. Me he dado cuenta de que ha causa de que el manual de LuaDev está desactualizado, hay funciones en LuaDev recientemente implementadas que se desconocen. Por ello, haré un listado de las funciones de LuaDev que ya conozco y que no aparecen en el manual. A ver si me podeís indicar cuales faltan y así por lo menos tener una referencia para las funciones de LuaDev que no aparecen en el manual pero que aún así también podremos utilizar con el Eboot de LUADev más moderno. Te dejo también el manual de LUADev más reciente. Tienes al final del post todos los archivos para descarga directa desde el servidor privado de Scenebeta ;)
Por si acaso lo prefieres te dejo aquí las descargas desde mi cuenta de Ubuntu One (también son de descarga directa):
model.load( "ruta" ) --carga un archivo .obj con su respectivo mtl (texturas y colores) model.position( x, y, z ) --coordenadas x, y, z model.rotation( x, y, z ) --ángulo de rotación x, y, z en radianes (math.rad para convertir de grados a radianes) model.blit() --blitea el modelo en pantalla (no necesita ningún parametro)
Notas:
Transparencia: Para usar modelos 3D transparentes hay que crear primero el modelo 3D con partes transparentes. Luego exportarlo desde Sketchup y añadir este código: Modelo:alpha().
Cargar un modelo: Al cargar un modelo este debe estar dentro de una carpeta, de lo contrario crashea.
Las funciones position, rotation y blit necesitan que especifiquemos el modelo sobre el que queremos trabajar. Su uso es parecido al de las funciones para imágenes, a saber:
--Cargar modelo: modelo = model.load( "carpeta/modelo.obj" ) --Para usarlo: modelo:position( x, y, z ) modelo:rotation( x, y, z ) modelo:blit()
El origen está en el centro de la pantalla de la PSP. Los sentidos positivos de cada eje son: X hacia la derecha, Y hacia arriba y Z hacia atrás (hacia fuera de la pantalla de la PSP).
Las rotaciones son respecto al eje de coordenadas original del objeto (cuando lo creamos MUCHO cuidado con esto).
files.encrypt( archivo, contraseña ) --encripta un archivo files.decrypt( archivo, contraseña ) --desencripta un archivo
Notas:
Contraseña: Si no se especifica la contraseña, el archivo se encriptará con la contraseña interna de LUADev. Un archivo encriptado con la contraseña interna de LUADev no se puede desencriptar. Un archivo encriptado con una contraseña personalizada no se puede usar directamente en LUADev (se debe desencriptar antes de usarlo).
world.lightenabled( N, ENABLED ) -- enciende apaga luz. N = 1-4. ENABLED = true / false. (4 luces) world.lightambient( N, COLOR ) -- color de la componente "ambiental" de la luz numero N. world.lightdiffuse( N, COLOR ) -- color de la componente "difusa" de la luz numero N. world.lightspecular( N, COLOR ) -- color de la componente "specular" de la luz numero N. world.lightype( N, TIPO ) -- Cambiar tipo de luz numero N. Tipos: 1, direccional. 2, punto de luz. 3, foco. world.lightcomponent( N, COMPONENTES ) -- Cambiar componentes de luz. 1, amb + dif. 2, dif + spec. 3, desconocida. world.lightspotlight( N, EXPONENTE, CORTE) -- Solo focos. Cambia potencia y angulo de corte del foco. world.lightdirection( 4, X, Y, Z ) --Direccion de la luz N. (Sólo direccional o foco). (Vector UNITARIO) world.lightposition( N, X, Y, Z ) --Posicion de la luz N. world.ambient( COLOR ) -- Cambia el color ambiental. world.specular( COLOR ) -- Cambia el color specular. world.viewat( TAB1, TAB2, TAB3 ) -- Cambia la posicion de la cámara. world.perspective( fovy, ratio, near, far ) -- 3D Modo perspectiva (por defecto). world.ortho( left, right, bottom, top ) -- 3D modo ortogonal. world.fog( cerca, lejos, color ) -- Niebla. world.update() -- actualiza cambios en las luces / otros cambios en el modul
Notas:
Vector UNITARIO quiere decir que: raiz( X^2+Y^2+Z^2 ) == 1.
TAB1 = { x, y, z } (posicion de la camara)
TAB2 = { x, y, z } (punto al que miramos)
TAB3 = { x, y, z } (donde está el techo, (rotacion de la camara)). ( Normalmente { 0, 1, 0 } )
Cuando salga cerca / lejos quiere decir unidades. Por ejemplo en la
niebla, cerca y lejos es donde se empieza a ver niebla, y donde no se vé
un pimiento. (y el color de la niebla claro ). Con lejos = 0, niebla
off.
Para todos los comandos, SIN argumentos (excepto los que tengan
numero de luz, que en estos, sólo se pasará el argumento N ), devolverán
el valor actual. O sease: world.fog(); devolverá 3 valores.
world.lighttype(1) devolverá el tipo de luz de la luz numero 1.
world.ambient() devolverá el color de ambiente actual.
Para jugar con el 3D hay que tener las matemáticas algo claritas...
por ejemplo, normalizar un vector... (X,Y,Z). (hacerlo unitario)
( 34.21, 224.23, 12.45 ) seria... elevamos al cuadrado... (
1170.3241, 50279.0929, 155.0025 ) ... sumando ... 51604,4195 ... raiz
cuadrada... 227,16606150567474237336239880841, dividiendo cada
componente por separado por este valor... daria:
( 0.15, 0.98, 0.05 ) <- ahora ya es un vector normalizado, apunta hacia el mismo sitio, pero tiene módulo = 1.
math.vector.polar( x, y ) math.poly.testxy() math.poly.testlist() math.round( número_decimal ) -- Devuelve una aproximación de un número decimal, con lo que math.round(1.2) devolvería 1 y math.round(2.8) devolvería 3. tonumber( string ) --convierte un dato del tipo string al tipo number
zip.extract( directorio_del_zip, directorio_a_extraer, int_recursivo )
wlan.connected() --devuelve true o false según si estamos conectados a una red o no wlan.getconfigs() --devuelve una tabla con las conexiones configuradas. la tabla contiene los campos name y ssid para cada red wlan.init() --devuelve 1 si se realizó correctamente la conexión y otro valor si falló --[[ * Se puede llamar sin argumentos, en tal caso aparece el diálogo de selección de redes del XMB, bloqueando la ejecución del programa hasta que la conexión se realice (o surja un error xD). * Se puede llamar con un número como argumento, en tal caso se conectaría a la red especificada (1 para la 1ra conexión, 2 para la 2da y así) sin bloquear el ciclo del programa (digamos que es el modo avanzado de conexión). * Por último, se puede llamar con dos argumentos (ambos números). El 1er argumento indica la red a la que se va conectar y el 2do indica una espera máxima en segundos antes de que deje de intentar conectarse (en el XMB cuando se acaba el tiempo dice "Tiempo de espera agotado", sería algo parecido). Este modo muestra el diálogo de conexión del XMB, pero se conecta automáticamente a la red especificada (bloquea la ejecución del script) ]]-- wlan.ip() --devuelve la IP que nos asignaron wlan.mac() --devuelve nuestra direción MAC física de la PSP wlan.scan() --devuelve una tabla con las conexiones activas. --[[ ssid: ssid la conexión dtim: ?? bssid: bssid de la conexión rate: Información de la conexión bsstype: Tipo de conexión rssi: intensidad de la conexión info: información de la conexión channel: canal por el que emite atim: ?? localtime: ?? timestamp: ?? beacon: ?? ]]-- wlan.status() --según el estado de la red devuelbe un número --[[ 0 desconectado 1 escaneando 2 conectando 3 obteniendo IP 4 conectado 5 autorizando 6 intercambiando clave ]]-- wlan.statustext() --lo mismo que wlan.status() pero en vez de devolber números devuelbe los strings de arriba wlan.strength() --de 0 a 100 el nivel de la señal
tostring( cualquier_parametro ) --convierte un dato de cualquier tipo al tipo string
socket socket.connect(servidor, puerto par, puerto local) -- Crea un nuevo objeto Socket con protocolo TCP/IP. Si no se especifica el puerto local, abre un puerto aleatoriamente. socket socket.udp(servidor, puerto par, puerto local) -- Crea un nuevo objeto Socket con protocolo UDP. Si no se especifica el puerto local, abre un puerto aleatoriamente. nil socket.free(socket) -- Cierra y elimina el objeto Socket. boolean socket.isconnected(socket) -- Comprueba que el socket esta conectado. number socket.localport(socket) -- Devuelve el puerto local. number socket.peerport(socket) -- Devuelve el puerto par. number socket.packetslost(socket) -- Devuelve el número de paquetes perdidos. string socket.recv(socket, bytes) -- Lee los datos recibidos desde el socket. El numero de bytes es opcional number socket.send(socket, string) -- Envía un string mediante la conexión socket. Devuelve el numero de bytes enviados
os.sleep( segundos ) os.luadevsplash() --muestra el splash de LUADev os.luasplash() --muestra el splash de LUA
image.chipload() --sería un load de la imagen interna del logo de chipmunks image.gearload() --idem de arriba, rueda que usa la sphash de LUADev image.logoload() idem arriba logo de LUADev image.luaload() --logo de LUA logoload:zblit( x, y, z, angX, angY, angZ ) --blit en 3D (experimental, falla bastante)
chipmunk body mass new position cursor grab move new release init moment box circle polygon segment shape elasticity friction getbody newcircle newpoly newsegment space addbody addshape addstaticshape damping free gravity idlespeedthreshold iterations new pointqueryfirst pointqueryfirst_body resizeactivehash resizestatichash sleeptimethreshold staticbody step wiredraw debugmode debugprint debugset dump error fx add alpha color default none rgba sub gcinfo getfenv getfullmodulefunction getmetatable iif image chipload fastblit fxadd fxsub fxtint gearload logoload luaload zblit include ipairs lightstation load loadfile loadstring math bbox clamp inrect int poly rotate testlist testxy round vector cartesian magnitude polar model alpha buffer lshf mat stat module newproxy next debug debug getfenv gethook getinfo getlocal getmetatable getregistry getupvalue setfenv sethook setlocal setmetatable setupvalue traceback particles blit count enabled free init intensity limit new rand start stop socket connect free isconnected localport packetslost peerport recv send udp table foreach foreachi getn setn sort umd present video free info load wlan connected getconfigs init ip mac scan status statustext strength term world ambient envmapcolor envmapfx fog lightambient lightattenuation lightcomponent lightdiffuse lightdirection lightenabled lightposition lights lightspecular lightspotlight lighttype lookat ortho perspective shademodel specular update
Oh, perdón
Fallo mío
Ahí las tienes todas ( del
Ahí las tienes todas ( del EBOOT de GDP):
¿Sabes que formatos soporta
¿Sabes que formatos soporta el modulo de video?, esque yo tengo un Eboot que descarge el 9 De Junio y CREO que es más actual que el de GDP.
No te va a servir de nada,
No te va a servir de nada, solo podrás cargarlo y nada más, necesitas el que tiene DeV para reproducirlo.
Ha ok, gracias.
Ha ok, gracias.
Video.load??!!
Video.load??!!
WFT??
Haber si era verdad lo que dijo DeViaNTe de que ya teniamos lo de video, o algo así...
Pensad que es el EBOOT de GDP
Pensad que es el EBOOT de GDP y ya tiene casi un mes, DeV tiene un EBOOT cvon más funciones, especialmente de video.
pues eso
pues eso esta desde hace uuuuuuuuu x'D
eso del video load esta desde
eso del video load esta desde hace fuuuu... xDD
Pero solo obtenia la informacion del video y tal, del formato avi, el cual ara mismo no usa ese contenedor. Ahora usa contenedor mp4 o mov, (añadiendo contenedor flv y ya veremos si pongo avi). Eso por la parte de contenedores, parte de codecs, el nativo de psp, avcc para video, aac para audio. (Añadiendo alguno mas).
Actualmente desarrollando nuestra web y UXCode : http://www.gcrew.es
Sobre el zip no es
Sobre el zip no es obligatorio el UNT recusivo donde tienen que ir true o false depende si es o no
¿Quieres decir que en vez de
¿Quieres decir que en vez de utilizar un valor del tipo "int." debo utilizar uno del tipo "voolean"?
Una cosa
No podriais poner una explicación de lo que hace cada función, es que no esta en todas y así estaria mucho mejor esto.
Edito: He estado mirardo y tenia una versión muy antigua de blender, la version 2.49-b incorpora importar y exportar .obj... Voy a ponerme a investigar si van en PSP
NekeOS, el nuevo shell para PSP
PS4 500GB OFW, PS3 320GB OFW, PS3 500GB OFW, PSP 6.39 PRO-C Fix4.
Sony Xperia Z1 Compact con Android 5.1.1
Portatil Lenovo z50-70 Intel® Core™ i7-4510U y NVIDIA GeForce 840M con Elementary OS 0.3.2 Freya (64 bits) y Windows 10 (64 bits).
Te recomiendo el Google
Te recomiendo el Google Sketchup Pro 8 con el keygen para exportar a .obj y hacer los modelos muy facilmente
Va a ser mejor
Blender no los exporta al 100% y me salen los modelos sin color
A mí al principio también me
A mí al principio también me salían sin color los modelos en Sketchup, hasta que Chime me dijo que debía usar la opción "Triangular todas las caras".
Revisa, quizá Blender ofrezca algo similar ;)
O.o
Vale, eso ya nose donde esta. Mira, al exportar sale esto:
Sera en Export lo de triángulos??
Sí
Si te fijas bien pone "Export... Edges/Triangulate/Polygroups" lo que necesitas es que las caras estén trianguladas... supongo que con eso basta para saber cual elegir xD
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 -_-
No
Así me sale la pantalla oscura, pero el LuaDEV sigue funcionando.
Pues tocará ir a windows, pero esque es un asco, con lo que tarda en entrar podría hacer mil cosas en linux
NekeOS, el nuevo shell para PSP
PS4 500GB OFW, PS3 320GB OFW, PS3 500GB OFW, PSP 6.39 PRO-C Fix4.
Sony Xperia Z1 Compact con Android 5.1.1
Portatil Lenovo z50-70 Intel® Core™ i7-4510U y NVIDIA GeForce 840M con Elementary OS 0.3.2 Freya (64 bits) y Windows 10 (64 bits).
pues...
Míralo así, podrás hacer mil cosas, menos guardar modelos para LuaDEV xDDDDDDD
XDDD
Y eso que blender es un editor 3D... Haber si DeViaNTe puede poner compatibilidad con este, ya que no me apetece salir de Linux
Si aportais más funciones,
Si aportais más funciones, poner lo que hacen y sus parametros, por favor.
Si alguien añade más datos sobre las funciones las actualizaré. Gracias.
Jajajaja
A la vez lo pensamos
jajajaj
jajajaj
os.sleep(segundos)
os.sleep(segundos)
ok
ok
Puntualizaciones sobre el
Puntualizaciones sobre el módulo 3D (según mi experiencia):
Saludos
probando 3D
Pues eh probado estas funciones y lo que a mi me pasa es que se muestran trasparentes en cierta parte los .obj XD vere que es, a lo mejor no estoy haciendo bine lo obj :P
Mis Homebrew´s
He descubierto otra función
He descubierto otra función del módulo 3D:
modelo:scale(x,y,z)
Lo de socket no es adhoc y
Lo de socket no es adhoc y tostring es una función nativa de lua o sea que no hace falta ponerla y tonumber igual.
Ok, ya lo he
Ok, ya lo he corregido.
Gracias por reportar el fallo.
Usando funciones 3D se podria
Usando funciones 3D se podria hacer un fps primera persona o sigo soñando xD ??
PD: Imposible no ?? xD como me gustaria ver un mw2 en hb jaja
-> Creaciones <-
Os invito a probar el lol xD
http://signup.leagueoflegends.com/?ref=50814a20894be236637679
Si
con empeño y esfuerzo todo se puede
Mira el GDP, 3D ROLL, 3DnRaya
TEn en cuenta que lua no tiene limites.
os imaginais un COD online
os imaginais un COD online
en fin xD poco a poco...
EDITO: hay algun tuto de funciones 3D o algo por el estilo, esque me gustaria crear algo pero lo veo así y ... ??
-> Creaciones <-
Os invito a probar el lol xD
http://signup.leagueoflegends.com/?ref=50814a20894be236637679
Si se pudo hacer en LUAHM
Si se pudo hacer en LUAHM también se podrá hacer en LUADev.
Pregunta
EDITO: hay algun tuto de funciones 3D o algo por el estilo, esque me gustaria crear algo pero lo veo así y ... ??
Yo alguna vez ya he buscado
Yo alguna vez ya he buscado en gogle pero lo único que vas a encontrar van a ser tutoriales 3D para LUA HM en inglés...
Aunque si sabes inglés puede que te sirvan de ayuda
Ummm mi psp no tiene carga
Ummm mi psp no tiene carga pero tratare de aprenderlo y hacer un tutorial.
No tienes cargador D:?..
No tienes cargador D:?..
Si, desde hace un mes xD
Si, desde hace un mes xD
Recuerda 5V y 2000mA.
Recuerda 5V y 2000mA.
xDD, creo que puedes crear un
xDD, creo que puedes crear un cargador con pilas, buscale en el buscador, pero recuerdo una vez haber visto un usuario que dijo que se podia, o prueba con un emulador de psp, o prueba COMPRANDOTE EL CARGADOR XD
Pues no (vamos, que apenas si
Pues no (vamos, que apenas si tenemos las funciones xD) nos toca trastear (lo cual es más divertido, pero más desesperante)
Pues no se bien los
Pues no se bien los parámetros de estas, pero te digo lo que yo se( y he aprendido al usarlas):
tostring(numero) --Convierte un numero en string
tonumber(string) -- Convierte un string en numero
Creeme, suenan sencillas pero se nos pueden convertir en funciones muy útiles..
esas son muy buenas funciones
esas son muy buenas funciones, pero son propias de Lua, les dejo los links de la documentacion. ademas no es necesariamente un numero a un string, en el caso de tostring() esa funcion resive cualquier parametro, incluso booleanos:
tostring()
tonumber()
Saludos barney77 ^^
"Las cosas brillantes siempre salen de repente, como la geometría de una flor"
Muchas gracias por la
Muchas gracias por la aclaración, un saludo cam - maker.
Que bien!!
Otra cosa, sabeis con que software se crean modelos OBJ?? Esque me estube peleando con blender y solo importa obj, no los exporta
Saludos
NekeOS, el nuevo shell para PSP
PS4 500GB OFW, PS3 320GB OFW, PS3 500GB OFW, PSP 6.39 PRO-C Fix4.
Sony Xperia Z1 Compact con Android 5.1.1
Portatil Lenovo z50-70 Intel® Core™ i7-4510U y NVIDIA GeForce 840M con Elementary OS 0.3.2 Freya (64 bits) y Windows 10 (64 bits).
Uso google sketchup 10 PRO
Uso google sketchup 10 PRO (tiene que ser comercial si no no se puede exportar a obj) y me va perfecto, es facilisimo y puedes hacer modelos bastante guapos.
Ok
Y cuesta?? Sino paso
Que va con el keygen lo
Que va con el keygen lo activas.