Hola a todos, en especial a prg, que lo veo docto con el 3d,
estaba barajando la posibilidad de hacer un programa tipo zuntzu, que interprete sus "gamebox" pero en 3d. Y direis que es esto.
Zuntzu es un programa para jugar a juegos de tablero en formato digital pero compiando las técnicas del juego real, no es una adaptación a pc del juego sino simular la realidad.
Un gamebox es el conjunto de recursos necesarios para simular un juego de tablero, imágenes de cartas, fichas, tableros, etc.
He visto un proyecto muy pretencioso, pero como todos, parado por ahora, que podría servir de ejemplo de lo que intentaría realizar.
http://www.labsk.net/index.php?topic=18671.msg215163#msg215163
Bueno pues eso, ¿que posibilidades podeis ver de realizar este proyecto? Básicamente sería realizar un juego 3d que
Lea los gameboxs zuntzu (para que cargase los dados, cartas, fichas, tableros y vistas), estos son zips normales que dentro tienen un xml (con la definición de los objetos mencionados antes) y las imágenes necesarias.
Pueda actuar como cliente-servidor para varios jugadores.
Pueda tener una zona llamada "mano" visible solo por el jugador y otra/as zonas llamadas tableros visibles para todos los jugadores.
Todos puedan dar la vuelta a las cartas y fichas visibles en los tableros
Y todos puedan tirar los dados.
Yo es que ni papa de 3D, pero veo que todo se reduce a hacer ortoedros en que:
una cara tenga una textura con la imagen de la parte superior de la carta/ficha/tablero
la cara opuesta tenga una textura con la imagen de la parte inferior de la carta/ficha/tablero
y las 4 caras restantes tengan una anchura pequeñisima y de color gris o blanco opaco.
tenga un evento que al hacer doble click se invierta
tenga un evento que al hacer click se quede pillada para moverse y soltarse.
Y poco más, quizas para las fichas puede incluso leerse modelos 3d.
Fácil diría yo sin tener ni papa :D.
hola dcelso.
Quote¿que posibilidades podeis ver de realizar este proyecto?
muchas, siempre y cuando puesas hacer esto:
Lea los gameboxs zuntzu (para que cargase los dados, cartas, fichas, tableros y vistas), estos son zips normales que dentro tienen un xml (con la definición de los objetos mencionados antes) y las imágenes necesarias... je je je, las librerias 3d leen los zip (m8e_add_zip(string)), el problema es el xml, si lo puedes leer, ya está
una vez que leas los datos, nada más sería cuestion de tener los modelos y montar la escena...
en mi opinión creo que sí se podría, aunque linkernel es el que mejor nos puede decir.
Quoteuna cara tenga una textura con la imagen de la parte superior de la carta/ficha/tablero
la cara opuesta tenga una textura con la imagen de la parte inferior de la carta/ficha/tablero
y las 4 caras restantes tengan una anchura pequeñisima y de color gris o blanco opaco.
tenga un evento que al hacer doble click se invierta
je je, las cartas se pueden hacer con un prisma rectangular o con una cara y nada más le ponemos la textura. sería muuy sencillo. el manejo de eventos como el click derecho se hace con bennu, y sólo modificamos los models con las funciones de las librerías 3d, muy parecido a programar en 2d de Bennu ;)
siempre y cuando puedas generar la inteligencia artificial del juego, y las reglas, el juego está hecho. pues el 3d de las librerías de linkernel funcionaría muy bien... (para las cartas incluso se pueden generar primitivas 3d, acomodar el size y colocar texturas...)
amigo, manos a la obra, que si se puede
Mmmmhhh, suena un proyecto interesante, todo es posible si le dedicamos el tiempo necesario.
Uno de los mayores problemas lo veo en la interpretación de los ficheros .xml, si no hay nada hecho ya al respecto podrías plantearte crear las funciones de lectura de .xml en un .prg a parte, para poder reutilizarlas en próximos proyectos. Quizá en un futuro puedan incluso formar parte de una nueva DLL, a saber...
Últimamente todo lo nuevo que hago en Bennu lo llevo por ese camino, código reutilizable, es un consejo/sugerencia.
En cualquier caso ánimo con el proyecto, seguiré el hilo de las novedades y si puedo ayudar en algo lo haré.
A ver, yo es que estoy pez en el 3d.
¿Por donde empiezo a estudiar?
¿uso ogre3d bennu u otra?
¿hay ejemplos sencillos para cargar un cuadrado, ponerle seis texturas distintas en cada cara, girar la cámara, hacer zoom, etc?
Yo tengo todo lo que voy viendo descargado, pero claro el problema es empezar con buen pie en esto. lo máximo que he probado en bennu en 3d ha sido compilar el .prg del juego de magia y verlo rulando, bueno también al modelo de bennu por el laberinto.
:) no te preocupes... primero verifica que tienes los ejemplos: creo que es este enlace http://3dm8ee.blogspot.com/ (http://3dm8ee.blogspot.com/)
ahí debes poder descargar una carpeta que dice prg, la cual contiene más de 30 ejemplos para aprender a usar el bennu3d todos son programados en bennu y funcionan.
yo tengo esta versión:
http://www.filefactory.com/file/da7812/n/bennu05102008_rar
aunque la más nueva es esta:
http://www.megaupload.com/?d=0CJM24PA
la que tengo me gusta mucho, sin embargo he comenzado a ver las nuevas funciones de la última (te recomiendo la de filefactory, al menos hasta tener un poco más de información sobre las nuevas funciones, ya que estas son sólo un preview).
ya que te descargues los ejemplos, revísalos, está buenísimos, al menos córrelos, si te interesa lo que ves los lees, y cualquier duda puedes revisar la ayuda que hice en aquél post, o puedes preguntar por aquí, así entre todos podemos investigar cómo usarla... o preguntarle a link, ja ja ja.
Quote¿uso ogre3d bennu u otra?
usa bennud3d, ogre todavía está iniciando, es un preview :)
Quote¿hay ejemplos sencillos para cargar un cuadrado, ponerle seis texturas distintas en cada cara, girar la cámara, hacer
zoom, etc?
esos + de 30 ejemplos es todo lo que hay, tienes todo excepto el zoom, ese no existe, por el momento... existe modificación de enfoque de cámara, pero un zoom como en halo, que la mira tiene el zoom pero al rededor se ve sin zoom no existe.
eso de hacer un cuadrado y ponerle texturas no te lo recomiendo, mejor hazte los models en un editor como milkshape o alguno más fácil o si prefieres blender (para lo que vas a hacer, no creo que necesites tanto a blender, al menos cartas y eso no se necesita tanto poder ;) ) si necesitas ayuda, puedo ayudarte con cosas sencillas, pero las dificiles no he podido (quice hacer una carita y fue un fracaso con el suavizado... necesito practicar más en blender...).
... creo que revisa los ejemplos y luego nos dices qué opinas, están geniales...
Gracias PRG, me pondré manos a la obra a ver que tal,
De todas formas necesito hacer lo del cuadrado con texturas, date cuenta que la opción de hacer las cartas directamente en 3d es menos viable, hay juegos con más de 300 cartas con imágenes distintas,20 fichas disintas y varios tableros, por ejemplo Agrícola (http://www.boardgamegeek.com/boardgame/31260)
Además lo que intento hacer es reutilizar los "gamebox" de zuntzu, por eso de no reinventar la rueda. Podría crearme mi propio formato gamebox, pero más adelante , cuando ya esté definido el programa y vea qué es necesario guardar de qué forma es más cómoda y cómo aprovechar las herramientas disponibles.
Un ejemplo sencillísimo, es el chinesenspiel, una versión superreducida del parchis( ludo o Parqués) en el que solo hay 4 fichas, 1 dado de seis caras y un tablero.
Yo por ahora lo que veo a priori como primera tarea es
leer el tablero del xml , crear el ortoedro que representará al tablero con un color blanco opaco y pegarle la textura extraída de una imagen en una cara. A ver si lo consigo, parece facil.
La línea es esta
<map name="Tablero" image-file="tablero.png" />
Adjunto el gamebox que hize para zuntzu en el que se pueden ver los recursos disponibles.
Confirmo todo lo que dice Prg, cuando me puse con el 3D (Volveré...) lo que hice fue descargar los 30+ ejemplos y tests y modificar uno de ellos, en particular el que resuelve colisiones con el mapa. Mirando el resto de ejemplos aprendes a incluir otras cositas como luces, partículas, elementos de interfaz...
Los modelos de carta y dado son tan tan simples que podrías hacerlos tú mismo a partir de cualquier modelo de box en MD2, que sin duda hay en la carpeta media de los ejemplos 3D. Por ejemplo el MDL Viewer permite modificar punto a punto, y siendo una geometría tan sencilla en 5 minutos lo deberías tener listo.
En cuanto a las texturas, si usas LOAD_ANIMODEL y LOAD_TEXTURE por separado, puedes aplicar la textura que quieras (Admite casi todos los formatos de imagen) en tus dados y cartas, con lo que esa parte está resuelta.
Con la resolución de colisiones del escenario y aplicando gravedad al dado, éste giraría por si sólo, y obteniendo su rotación cuando se detiene sería relativamente sencillo determinar la puntuación...
Te lo estoy diciendo todo en plan teórico, luego en la práctica siempre tendrás algún imprevisto, pero espero que mis ideas te puedan servir de algo. Los juegos de puzzle/cartas no me motivan, estoy por empezar con uno de fútbol/acción en breves, pero sigo este hilo hasta el final.
Ánimo y escucha los consejos de Prg, que es un moztruo!!!
Tu puedes Dcelso!! ;)
Quoteestoy por empezar con uno de fútbol/acción en breves
:) ... ¡¡¡futbol con pataditas!!! :D me gustan mucho los juegos de deportes con violencia, ya quiero ver tus ideas amigo :)
QuoteCon la resolución de colisiones del escenario y aplicando gravedad al dado, éste giraría por si sólo
amigo Dcelso, windgate es el que más sabe de física en el bennu 3d, :)
vaya, no consigo compilar el test01.
Me he descargado: benn05102008.rar, bgd-r40-win32.zip, dlls-externals-mandatory-pack.rar
He descomprimido todos en un directorio
He creado un archivo bgdc.import con todos los mod de bennu mas el bennu3d
He ido a la consola de windows
He ido a la carpeta donde descomprimí todo.
He ejecucado bgdc test01.prg y me suelta:
Copyright ® 2006-2009 SplinterGU (Fenix/BennuGD)
Copyright ® 2002-2006 Fenix Team (Fenix)
Copyright ® 1999-2002 JosÚ Luis Cebrißn Pag³e (Fenix)
Bennu Game Development comes with ABSOLUTELY NO WARRANTY;
see COPYING for details
c:\DevBennu\workspace\3bboardgames\prg\librender:1: warning: Variable redeclared ("ALPHA_STEPS")
c:\DevBennu\workspace\3bboardgames\prg\libscroll:5: warning: Variable redeclared ("CTYPE")
c:\DevBennu\workspace\3bboardgames\prg\libscroll:5: warning: Variable redeclared ("CNUMBER")
c:\DevBennu\workspace\3bboardgames\prg\test01.prg:63: error: Undefined procedure ("M8E_INIT")
He probado a meter el directorio en el patch y nada, esto sigue igual.
Juro que conseguí compilar el pájaro bennu y moverlo por el laberinto, ahora, ya no se ni cómo.
Arg, en su día tuve ese mismo error de compilación. Creo recordar que NO es necesario importar el Bennu3D, y de hecho estoy probando y no he importado nada, esas pruebas se basan en la M8EE que ya viene importada en todos los tests. No hacen uso de ninguna otra DLL. Bastaría con abrir con Crimson Editor y pulsar F6 para correr cada uno de los tests.
Y por cierto, esa duda me corroe... Siempre he programado 3D con la M8EE y nunca he importado Bennu3D.DLL, por tanto no he llegado a usar la librería Bennu3D... ¿Alguien puede aclararme esta singularidad tan peculiar?
Quoteamigo Dcelso, windgate es el que más sabe de física en el bennu 3d,
lol, gran halago Prg, ojalá supiese hacer algo más que aplicar física de colisiones, partículas e iluminación... Todavía no me he puesto a fondo con el 3D ni mucho menos, ya ves que ni tan siquiera soy capaz de determinar con exactitud qué librería estoy usando. Maldita falta de documentación :(
:(, nada lo he quitado y esto sigue igual.
Si no recuerdo mal la última vez fue por problema de versiones entre bennu3d y bennugd.
Quizas no vaya con los últimos binarios esta libreria que me comentas PRG, ¿puedes confirmármelo?
En cuanto a tu duda windgate, si editas el .h verás que hace el import del bennu3d, por eso no hace falta ponerlo en el archivo .imp o bgdc.import. Así que sí que la estabas usando.
Gracias a sendos, cuento con vosotros para este proyecto que quizás vaya demasiado lento porque tengo demasiadas cosas a la vez y tengo que intentar repartirme el tiempo libre de la mejor manera posible para mí :D.
je je, me equivoqué, las correctas son estas:
http://rapidshare.com/files/204483410/prg.rar.html (http://rapidshare.com/files/204483410/prg.rar.html)
ya las revisé.
te mando el tablero en 3d (del zip que me pasaste), je je :)
Cuando el compilador te dice que una funcion no se encuentra, probablemente se deba a que no se ha podido cargar una dependencia (otras dlls necesarias) de la dll o modulo que intentamos cargar.
No se si este sera el caso, pero es siempre conveniente verificar eso.
DCelso, prueba a actualizar todas las DLL, yo suelo hacerlo de vez en cuando, salen a un ritmo frenético xD
Gracias por la aclaración con M8EE y Bennu3D, ahora mismo estaba trabajando en mi nuevo juego 3D, llamado Sport Wars, y ya tenía el import "Bennu3D", lo cambio por la M8EE ahora mismo.
Estoy llevando la modularidad al límite, todavía no tengo nada en pantalla y ya tengo 5 ficheros .prg distintos, uno para el vídeo, otro para controlar la salida del juego, otro para constantes, etc. Es la primera vez que aplico esta metodología en 3D.
Adjunto en primicia mi pantalla de presentación, aunque aún tengo que lidiar con eso de alternar entre 2D y 3D o bien empezar a usar las funciones de interfaz (Que desconozco al 99%), en breve pondré un hilo al respecto.
(http://www.fileden.com/files/2008/9/22/2109820/SportWars3D.640x480.jpg)
Creo que vamos a empezar a la vez con 2 proyectos 3D distintos, además con Prg a nuestro lado y l1nk3rn3l por ahí dando guerra seguro que llegamos a buen puerto :D
PRG, perdona mi ignorancia, esto que me has pasado que es, como se usa y como lo puedo ver :(.
¿Seria posible que me explicaras como hacer un cubo blanco entero y ponerle una imagen eun una sola de sus caras usando la libreria sola?
o es obligatorio disponer de un modelo3d para cargar, es que en este caso, tendría que crear modelos para todos los tableros de todos los gamebox que quiera migrar a este nuevo programa, no se si me explico.
Desconozco cómo aplicar una textura a una sóla cara, sólo he trabajado con modelos MD2 y MD3 a los que les aplico una textura única para todo el modelo. Y primitivas para añadir un cubo/esfera sí que hay, aunque no he probado a texturizarlas.
Yo recuerdo haberlo hecho con Opengl, pero ni idea de donde dejé el ejemplo.
Era algo como crear el modelo, cargar la textura, definir el vector de puntos de la textura y aplicar el vector y la textura al modelo.
Estoy buscando información pero no la encuentro para ningún sistema, ni opengl, ni directx, ni SDL, ni siquiera encuentro como hacer eso con un programa de modelado, con eso te lo digo todo :D.
En blender conseguí crear un cubo, ponerle una textura de un png y ponerla en todas sus caras y jugando con las coordenadas x y z de la textura dentro del cubo he medio conseguido que solo se vea en una cara la imagen, pero deja basura en dos caras y no se el por qué
QuotePRG, perdona mi ignorancia, esto que me has pasado que es, como se usa y como lo puedo ver Triste.
¿Seria posible que me explicaras como hacer un cubo blanco entero y ponerle una imagen eun una sola de sus caras usando la libreria sola?
o es obligatorio disponer de un modelo3d para cargar, es que en este caso, tendría que crear modelos para todos los tableros de todos los gamebox que quiera migrar a este nuevo programa, no se si me explico.
hola, ese es un modelo 3d que cargas en bennu 3d poniendo m8e_loadanimodel(nombre del modelo); la captura está abajo.
eso de colocar texturas a una sóla cara... sinceramente no se, existe en blender un sistema de texturizado, se llama uvmap, pero no se cómo usarlo, sin embargo te puedo dar el tutorial, lo quice hacer con el milk shape, pero el texture coordinate editor que tiene me desesperó y no pude ;D
link de texturizado de blender
http://wiki.blender.org/index.php/Manual.es/PartIV/UV_Mapping
ostras, la captura está muy bien.
Es eso lo que quería, un ortoedro (http://es.wikipedia.org/wiki/Cuboide) de 6 caras en la que una de sus caras es una imagen.
¿Como lo hiciste?
Lo suyo sería intentar hacer eso mismo pero desde bennu.
O sea, yo solo dispongo del zip anterior para recrear todo el escenario 3d. Por lo tanto con la información de ese zip
Primero debo de crear desde bennu ese cuboide y ponerle en una cara la imagen, ese es el paso que llevo intentando realizar ahora mismo.
(El siguiente sería repetir lo mismo pero poniendo dos texturas distintas, una en cada cara opuesta, para simular una carta, pero en este juego en concreto no hay cartas asi que me lo puedo saltar)
El siguiente paso sería repetir lo mismo pero con un cubo y ponerle una imagen en cada cara (Lo que sería el dado)
El siguiente paso sería intentar crear las fichas, para ello tendría que usar el archivo de máscara (blanco y negro) de las fichas para modelar esa silueta (forma) en 3d y ponerle la textura de la imagen. Este es el más complicado que veo.
Quizas la librería no esté preparada para poder hacer esto, por lo que veo.
¿se os ocurre otra forma?
A ver, he encontrado un tutorial que me sería de gran utilidad si fuese para bennu3d, es para C/Opengl.
http://www.geocities.com/valcoey/mtextura.html
He intentado leerlo pero lo veo bastante complejo, entiendo groso modo lo que hace, pero no en detalle.
¿Veis como adaptarlo en bennu3d u ogrebennu3d?
Gracias.
:)
creo que lo mejor es que le preguntemos a link. para hacer lo que yo hice... aunque te parezca un poco tranposo, hice un cubo luego puse un plano, y agregué la textura al plano, lo acerqué a una de las caras del cubo quedó, para hacer una carta vastaría con 2 planos que lleven la textura. para un cubo puedes usar uvmap o 6 planos... los planos son una cara y a la vez una figura 3d aparte, por lo que puedes ponerle la textura que quieras que lleve una cara plana y luego colocarlo ahí.
déjame leo el tutorial de uvmap, y luego te digo, mientras puedes preguntarle a linkernel qué opina ... :)
Arg, como te he dicho yo usaría un modelo MD2 de una box con textura, cambiando la textura ya tienes el dado.
Hay un programa llamado MDL que te deja modificar punto a punto el modelo para obtener la "carta", y generando a partir de ella una nueva textura y pintándola con las diferentes cartas ya lo tendrías.
No te recomiendo OpenGL en absoluto, tengo ejemplos de OpenGL con un cubo que puede rotar, con el sistema solar hecho con esferas que orbitan entre sí... Pero OpenGL es prehistórico, un absoluto incordio, está basado en una pila y tiene decenas de cosas raras, yo personalmente no saldría del Bennu3D, y menos para pasar al OpenGiLi, si fuese otra librería quizás...
Ok, gracias por las aclaraciones, pero visto que a un plano si se le puede poner una textura de una imagen quizás sea esto lo que necesito osea
un tablero podría ser tal y como hizo PRG (muy buena idea) un cuboedro con un plano con una textura pegado a una cara.
una carta podría ser un cuboedro con dos planos con texturas distinta pegados a cada caras opuestas.
un dado 6 planos formando un cubo cada uno con una textura distinta.
Un poco menos formal pero efectivo, si todos juntos forman un objeto inamovible
¿Es más factible esta idea?
¿Como podría crear un plano con una imagen en bennu3d? voy a ver si me sale esto.
Otra idea tal y como he visto que comentaba windgate de usar una imagen como textura sería la de crear un map que concatenara las imágenes necesarias y usarlo como textura.
¿Más facil?
Sí, lo de concatenar los map con funciones 2D podría servir.
Formar un cubo a partir de planos... Al menos con las funciones M8EE que ví en su día no ví nada parecido, aunque son funciones de bajo nivel (Como las de OpenGL) que deberían estar por algún lado de la M8EE...
En cualquier caso formando el cubo con planos tienes la desventaja de que aplicar la física al dado para que ruede y se detenga en un número ya no es posible xD
para todo hay mañas, te regalo el dado amigo. y una herramienta de uvmap.
la herramienta te sirve para cargar un objeto 3d, sacarle capturas a sus caras y guardar las posiciones de las capturas en el modelo, luego le cambias el color, o dibujas en la textura que te crea, y cuando lo abres... tienes el dado o lo que hagas. ya para en bennu 3d cambiarle la textura haces:
texturamario=M8E_LOADTEXTURE(nombre); //cargas la textura
modelo=M8E_LOADANIMODEL( nombre); //load model //cargas el modelo
M8E_LOADTEXMODEL(modelo, texturamario ); //se la asignas al cubo, te respetará las posiciones, es lo que te decía en blender, pero con esta herramienta lo tienes en segundos.
Gracias PRG,
pero no consigo ver el dado, puse este código
include "m8ee.h"
PRIVATE
textura,i,ent;
begin
set_mode (640,480,16);
set_fps (0,0);
M8E_INIT_DEFAULT();
textura= M8E_LOADTEXTURE("resources\iteto.pcx");
ent = m8e_loadanimodel("resources\dado.ms3d");
M8E_LOADTEXMODEL(ent , textura );
M8E_ADDCAM(0,50,-200, 0,5,0);
while ( (!key(_esc)) )
M8E_RENDER(0, 0,0,255);
frame;
end;
let_me_alone();
M8E_FREE();
end
NOTA: he probado los formatos png, bmp y pcx para la textura. En el directorio "resources" tengo la imagen en esos tres formatos.
Otra pregunta,¿a un "process" le puedes asignar un objeto3d y moverlo con x, y, y z como en 2d?
Vale, no he dicho nada ;D.
Hay que añadir esto despues de cargar la textura
M8E_MODELSETMATERIAL(ent, EMF_LIGHTING,0);
Suele pasar, yo todavía no sé de memoria las instrucciones necesarias para hacer visible el modelo y la textura, ando continuamente mirando los tests u otros ejemplos programados anteriormente. Ojalá con el tiempo programe en 3D con la misma intuición que tengo para programar en 2D.
Puedes soltar las versiones cuando quieras para ir echando un vistazo, aunque no tengas más que un simple dado en pantalla, así podemos criticar, sugerir, insultar...
Uff, pues voy mal, mal, mal.
Solo tengo esto hecho y hace cosas rarísimas.
A ver si podeis explicármenlas.
include "m8ee.h"
local
textura;
modelo;
_POS3D posicion;
float tamanio;
begin
set_mode (640,480,16);
set_fps (0,0);
M8E_INIT_DEFAULT();
camara();
tablero();
dado();
while ( (!key(_esc)) )
M8E_RENDER(0,0,0,255);
frame;
end;
let_me_alone();
M8E_FREE();
end
process tablero ()
begin
textura = M8E_LOADTEXTURE("resources\tablero.png");
modelo = m8e_loadanimodel("resources\tablero.ms3d");
M8E_LOADTEXMODEL(modelo , textura );
M8E_MODELSETMATERIAL(modelo, EMF_LIGHTING,0);
posicion.x=0;
posicion.y=0;
posicion.z=0;
tamanio = 1;
M8E_MODELSCALE(modelo, tamanio,tamanio,tamanio);
while ( (!key(_esc)))
M8E_POSMODEL(modelo, posicion);
frame(800);
end;
end
process dado ()
begin
textura = M8E_LOADTEXTURE("resources\iteto.png");
modelo = m8e_loadanimodel("resources\dado.ms3d");
M8E_LOADTEXMODEL(modelo , textura );
M8E_MODELSETMATERIAL(modelo, EMF_LIGHTING,0);
posicion.x=0;
posicion.y=0;
posicion.z=-1;
tamanio = 0.01;
M8E_MODELSCALE(modelo, tamanio,tamanio,tamanio);
while ( (!key(_esc)))
M8E_POSMODEL(modelo, posicion);
frame(800);
end;
end
process camara()
private
_POS3D pos1,pos2;
actualizarpos,actualizartarget;
id_camara;
begin
pos1.x=0;
pos1.y=0;
pos1.z=-10;
pos2.x=0;
pos2.y=0;
pos2.z=0;
id_camara=M8E_ADDCAM(pos1.x,pos1.y,pos1.z,pos2.x,pos2.y,pos2.z);
loop
//camera position
if (key(_up))
pos1.x+=1; actualizarpos=true;
end;
if (key(_down))
pos1.x-=1; actualizarpos=true;
end;
if (key(_left))
pos1.y+=1; actualizarpos=true;
end;
if (key(_right))
pos1.y-=1; actualizarpos=true;
end;
if (key(_w))
pos1.z+=1; actualizarpos=true;
end;
if (key(_s))
pos1.z-=10; actualizarpos=true;
end;
//camera target
if (key(_8))
pos2.x+=1; actualizartarget=true;
end;
if (key(_2))
pos2.x-=1; actualizartarget=true;
end;
if (key(_4))
pos2.y+=1; actualizartarget=true;
end;
if (key(_6))
pos2.y-=1; actualizartarget=true;
end;
if (key(_1))
pos2.z+=1; actualizartarget=true;
end;
if (key(_0))
pos2.z-=1; actualizartarget=true;
end;
if (actualizarpos)
actualizarpos=false; M8E_POSMODEL(id_camara, pos1);
end;
if (actualizartarget)
actualizartarget=false; M8E_CAMTARGET(id_camara, pos2);
end;
frame(1200);
End;
end;
Con las flechas se mueve de una forma un tanto en cuanto peculiar ¿por qué?
Con 8,4,6,2 se mueve casi como esperaba pero nada también me resulta raro ¿Me podeis explicar diferencias?
A ver, yo intentaba buscar lo siguiente:
con las flechas desplazar la cámara a la izquierda, derecha, arriba y abajo.
con los números quería girar la cámara a la izquierda, derecha,arriba y abajo.
Y no las paranoias que hace ahora :D.
Luego la textura del tablero se ha aplicado a todas las caras, yo lo que esperaba es verla como en el modelo. Si cargo el modelo solo sin texturas se ve negro y si le pongo material se ve blanco, pero no cosigo ver el "supuesto" cuboedro blanco y el plano con la textura del tablero que hizo PRG.
Mas cosas, la textura del dado porqué es así como achatada, las caras no son todas iguales, he intentado cargar la textura de mi dado pero no cuela, se ve mal.
Por otro lado he tenido que escalar a un factor de 0.1 el dado por lo grande que era en relación al tablero ¿Por qué?
Gracias de antemano por cualquier respuesta.
QuoteCon las flechas se mueve de una forma un tanto en cuanto peculiar ¿por qué?
Con 8,4,6,2 se mueve casi como esperaba pero nada también me resulta raro ¿Me podeis explicar diferencias?
A ver, yo intentaba buscar lo siguiente:
con las flechas desplazar la cámara a la izquierda, derecha, arriba y abajo.
con los números quería girar la cámara a la izquierda, derecha,arriba y abajo.
al ratito le echo un ojo ;)
Quote
Luego la textura del tablero se ha aplicado a todas las caras, yo lo que esperaba es verla como en el modelo. Si cargo el modelo solo sin texturas se ve negro y si le pongo material se ve blanco, pero no cosigo ver el "supuesto" cuboedro blanco y el plano con la textura del tablero que hizo PRG.
je je, la cara que se pinta en bennu3d está para adentro, y la que no para afuera, como en mi programa esto no se distingue pues funciona bien. para verlo bien y dos cosas que se pueden hacer: aplicarle draw back face, o que yo lo acomode (al rato lo acomodo)
Quote
Mas cosas, la textura del dado porqué es así como achatada, las caras no son todas iguales, he intentado cargar la textura de mi dado pero no cuela, se ve mal.
quiizá me quedó chuequito, al ratito lo reviso, copio tu código y lo pongo a funcionar :)
QuotePor otro lado he tenido que escalar a un factor de 0.1 el dado por lo grande que era en relación al tablero ¿Por qué?
¿tan grande me quedó? je je,
te prometo que al rato reviso tu código y te acomodo los models, ahorita termindaré el editor fpg, ya nada más me falta empaquetar, subir, y acomodar dos opciones. :)
Gracias PRG, al final vas a hacer tu todo el trabajo ;D, mas vale que aprenda pronto.
Por otro lado, he intentado mover el dado con el ratón pero no me sale, a ver si lo averiguo mientras tanto.
Un vídeo muy bueno
http://www.youtube.com/watch?v=VhIvaWUxF1E
Edit
Uala lo que me encontré de chiripa
http://www.youtube.com/watch?v=Wmg0eKHZVRQ
je je je, bueno, yo he hecho un código de ejemplo, lamentablemente al hacer las texturas y los modelos de las cartas, pues el peso se disparó a 2 megas... pero ahí te va.
en los modelos agregué luces, agregué luz al ambiente, y las liibrerías que yo uso, ya que las nuevas no las tengo (las bajaré de nuevo para ver si ya van, quiza se me corrompió la anterior descarga), agregué también un ejemplo de cambio de texturas, de giros de models, y quité el código de movimiento de la cámara, es necesario que te diga que al posicionar una cámara el cam_target es el punto al que la cámara voltea, en lugar de los ángulos de cada eje. por lo tanto el movimiento raro que mirabas es completamente correcto, ya que siempre se miraba al tablero, así que se producían giros y cosas de esas. poco a poco lo lograrás, ya verás. :)
http://www.megaupload.com/?d=HR4HPLC7
esa es la descarga de mi demo je je
lo mejor para modelos sin animar y texturizar a nivel de caras
recomiendo quark, le dices nuevo model y listo lo
salvas como md2 o md3 que son los modelos del quake
http://quark.planetquake.gamespy.com/
y es gratis
hola, aquí hay algunos models que te pueden interesar. no son exactamente tableros, pero tiene que ver con los juegos que te interesa hacer:
msa de billar en 3ds
http://artist-3d.com/free_3d_models/dnm/model_disp.php?uid=1761&ad=07misc_items.php&count=count
ajedrez en 3ds
http://artist-3d.com/free_3d_models/dnm/model_disp.php?uid=1845&ad=07misc_items.php&count=count
PRG, no consigo poner bien la textura a la ficha.
He creado una ficha a partir del perfil y usando la herramienta de SPIN, he conseguido ponerle un material pero al ponerle una textura se me va de madre. Tengo el .blend, ¿qué es lo que tengo que hacer para extraerle ahora la textura y modificarla como hiciste con el dado?
hola, tienes el editor uvmap que te pasé?, yo lo hice con él, pues con blender todavía no he revisado cómo hacerlo. para esta ficha (wow felicidades, está increiblemente bien hecha, parece que ya tienes tiempo en esto del modelado) dale (en blender) a file/export/wavefront(*obj), luego lo abres con el uvmapper: file/load_model luego que lo cargas le das a edit/new_uvma y seleccionas la que más se acomode a tu figura (yo utilizaré cilíndrical cap, puedes usar box o la que se ajuste mejor), luego das a file/savemodel y file/save_texture_map ya con eso has creado el modelo con la información de posicionamiento de textura y la textura a rellenar. te prometo que veré cómo se hace en blender cuando pueda
es fácil, tu puedes. este proyecto me llama mucho la atención por lo que comentabas de juego en linea, estaré muy al pendiente ;)
hola amigo, ya pude acomodar las texturas en blender, no encontré ningún tutorial de uvwrap en esta versión, y parece que uvmapping lo eliminaron, así que explicaré más o menos cómo le hago, esperando no cometer errores.
1) abre el model,yo lo hice con el cubo del comienzo
2) divide la venta 3d en dos (click derecho arriba, split area)
3) en el botón inferior izq de la ventana haz click y selecciona uv/image editor
4) haz click en image open y abre la imagen que le aplicarás
5) seleccina el model y haz click en select /linked uv (en la pantalla nueva), asegúrate que la imagen que cargaste se muestre en esta ventana, de lo contrario ha click en una doble flecha que aparece en el menú de abajo y selecciona el nombre de la textura que cargaste
6) en la ventana del model selecciona la vista de texturas (draw type /texture)
7) selecciona los vértices de la cara y luego presiona la u, selecciona uv wrap aparecerá una representación de la cara en la otra ventana, mueve los vértices en la textura para que la cara tome la textura,
8) repite el paso 7 con las caras hasta terminar, luego guarda el model y expórtalo a un formato que bennu soporte, como obj (wavefront). listo,
ya terminaste :)
espero me hayas ententido, cualquier cosa házmelo saber. si quieres que te ayude en algo, sólo dilo. saludos :)
Vaya, he intentado seguir los pasos que comentas pero no se me ve la imagen y no puedo seguir, algo raro me ocurre.
Te pongo un video de lo que hize en formato swf a ver si eres capaz de detectar mi fallo.
http://www.mediafire.com/?untdzndwkgn
En cuanto a jugar en red, actualmente existe el programa zuntzu para ello, está muy bien porque es como un tablero real pero digital, osea no tiene reglas forzadas, todos pueden mover todo, dar la vuelta a todo y tirar todo, lo único que no pueden hacer es ver lo que tienen los demás en las manos. Está muy completo solo le falla el no ser 3d que es lo que intento hacer yo en este.
Si quieres pruébalo a instalar y a abrir el chinesenspiel para ver lo que pretendo hacer pero en 3d.
Cielos, este hilo ha avanzado una barbaridad :o
He estado ocupadísimo cambiando de XP a Ubuntu y recuperando todo lo que me devoró un maldito virus, espero reenganchar pronto :'(
En cuanto eche el ojo a alguna versión os echo un cable, dejad el código please!!
Windgate siento desanimarte no hay versión que ver ni nada :(, está demasiado verde aún, na más que la que puse yo justo 12 posts atrás y con la que me respondió PRG justo después.
Estaba ahora haciendo pruebas sobre crear la ficha y ponerle texturas distintas, al igual que hicimos en el dado pero nada.
También empezé a intentar mover el dado con el ratón pero tengo que investigar más para poner un modelo al ratón, ver si ha colisionado con el objeto a mover, capturarlo y soltarlo. Uff mucho mucho queda queda, voy más lento que un caracol :D.
bien, te explico desde el select que no aparece:
tienes la imagen en un lado y el cubo en otro,
ahora haz click en el modelo y vete a la ventana de edición de vertices (tecla tab)
el modelo estará seleccionado completamente
presiona la tecla u y te aparecerá un mensaje, dale a unwrap, la ventana de la imagen cambiará, (aquí en la ventana de la textura apareciía una opcion que decía select y todo eso, acabo de hacerlo sin eso y funciona)
bien, ahora en la ventana del modelo pon que se visualice la textura, debe verse la textura en todas las cara, ahora selecciona los vertices de cada cara y modificamos su posicioón en la ventana de la textura, verás que conforme mueves los vértices se acomoda la ventana. no se cómo hacer videos como el tuyo, sino te lo enviaba je je je pero ya verás que ahora si podrás.
Gracias PRG,
He conseguido hacer el dado con blender pero tengo una duda, ¿hay alguna forma de seleccionar un vértice en el modelo y moverlo en el editor UV?
Ahora mismo lo hago a ojímetro moviendo los vértices en en el editor UV y viendo que pasa, esto es un poco rollo :)
Por cierto te paso un videotutorial de cómo hace videotutoriales (toma disparo) por si quieres hacerlos, son facilotes y rapidísimos. Básicamente se reduce en hacer capturas de las pantallas mientras usas el programa y luego retocarlas para añadirle el texto explicativo.
http://www.mediafire.com/download.php?umjntleutnd
ok amigo... ;)
aprenderé a hacer videos.
no se a qué te refieres con
Quote¿hay alguna forma de seleccionar un vértice en el modelo y moverlo en el editor UV?
Ahora mismo lo hago a ojímetro moviendo los vértices en en el editor UV y viendo que pasa, esto es un poco rollo Sonrisa
lo que pasa es que si en la vista del model pones la opción de modo textura, se ve cómo va quedando la textura que aplicas a la cara.
draw type:
textured, shaded, solid, wireframe, boundingbox,
la opción textured te permite visualizar en tiempo real cómo va quedando la textura. es la opción donde ponde
este botón se encuentra a un lado de donde dice objet mode y edit mode .
estaba pensando en hacer un código para ratón, no se si pueda como estaba pensando (no recuerdo bien eso de vectores en 3d, tengo mi libro a la mano, pero está medio complicado pasar de problemas escritos a la realidad... je je je), si puedo te lo paso (gui y raycol, como el ejemplo del xna)
Me refería a que cuando ya doy a unwrap en la ventana de la imagen aparecen los vértices pero no se identificar qué vertice corresponde con cada uno del modelo. Así que lo que hago ahora es seleccionar un vértice de la imagen y moverlo para ver como va quedando el modelo, un poco tosco. Preguntaba por si había alguna forma de identificar los vértices.
QuotePreguntaba por si había alguna forma de identificar los vértices.
ya entendí, la verdad no se, quizá buscándole por ahí, aunque la verdad lo dudo.
¿ese es el dado?
ray col no está funcionando en la versión actual de las librerías, así que no podré hacer lo que quería, te paso un ejemplo de cámara y el ratón, para que el ratón detecte colisiones con objetos 3d esta es mi teoría:
un raycol que salga desde la posición de la cámara + la posición del ratón menos la mitad del ancho de la pantalla, y finalizando en un punto creado con una distancia grande, utilizando los ángulos de la cámara para crear un vector unitario algo así como
x=get_distx(angulox_camara*1000,1000);
le falta mucho, pero sin el raycol no puedo avanzar nada.
[code language="bennu"]process camara()
private
_POS3D pos1,pos2;
actualizarpos,actualizartarget;
id_camara;
float angulo;
float dist=10;
begin
pos1.x=5;
pos1.y=10;
pos1.z=5;
pos2.x=0;
pos2.y=0;
pos2.z=0;
id_camara=M8E_ADDCAM(pos1.x,pos1.y,pos1.z,pos2.x,pos2.y,pos2.z);
light=M8E_ADDLIGHT(posicion.x,posicion.y+3,posicion.z+5, 250,250,250, 150);
while (not exists (id_tabl))
frame;
end
M8E_CAMTARGET(id_camara, id_tabl.posicion);
pos1.x=id_tabl.posicion.x+get_distx(angulo,dist);
pos1.z=id_tabl.posicion.y+get_disty(angulo,dist);
M8E_POSMODEL(id_camara, pos1);
loop
//camera position
if (exists(id_tabl))
m8e_getposmodel(id_tabl.modelo,&posicion);
if (key(_up))
dist+=0.1;
pos1.x=id_tabl.posicion.x+get_distx(angulo,dist);
pos1.z=id_tabl.posicion.y+get_disty(angulo,dist);
M8E_POSMODEL(id_camara, pos1);
end;
if (key(_down))
dist-=0.1;
pos1.x=id_tabl.posicion.x+get_distx(angulo,dist);
pos1.z=id_tabl.posicion.y+get_disty(angulo,dist);
M8E_POSMODEL(id_camara, pos1);
end;
if (key(_left))
angulo+=0.07;
pos1.x=id_tabl.posicion.x+get_distx(angulo*1000,dist);
pos1.z=id_tabl.posicion.y+get_disty(angulo*1000,dist);
M8E_POSMODEL(id_camara, pos1);
end;
if (key(_right))
angulo-=0.07;
pos1.x=id_tabl.posicion.x+get_distx(angulo*1000,dist);
pos1.z=id_tabl.posicion.y+get_disty(angulo*1000,dist);
M8E_POSMODEL(id_camara, pos1);
end;
if (key(_w))
pos1.y+=0.1;
M8E_POSMODEL(id_camara, pos1);
end;
if (key(_s) & pos1.y>id_tabl.posicion.y+2)
pos1.y-=0.1;
M8E_POSMODEL(id_camara, pos1);
end;
M8E_CAMTARGET(id_camara, id_tabl.posicion);
end
frame;
End;
end;
process raton();
private
mitextura;
mou;
begin
mitextura= M8E_LOADTEXTURE("resources\flecha.png");
mou=M8E_GUIADDIMAGE(mitextura, 320,90, true); //(texture, x,y, usealpha)
loop
M8E_GUImove(mou, mouse.x,mouse.y);
frame;
end
end[/code]
pd: coloca id_tabl en global en lugar de local
Amigos, ya que están metidos en el asunto:
Como os dije me acabo de pasar a Ubuntu, y al ponerme a usar Bennu3D en mi nuevo jueguecito tengo un error de compilación porque no se encuentra el archivo bennu3d.so.
Hasta ahora usaba bennu3d.dll desde Windows, pero claro, al pasar a Linux supongo que las DLL no sirven... ¿Dónde descargo el bennu3d.so y en qué directorio debo guardarlo? ???
amigo, tengo entendido que splinter sabe cómo hacer estos movimientos de linux y windows, yo sinceramente no concozco nada de linux, así que esperemos la respuesta de splinter... o de alguien que sepa cómo está esto...
creo que no está portado bennu3d a linux, tendrías que hablar con link por si ya se hizo o tiene pensado hacerlo.
Con respecto al movimiento del ratón mi idea es la siguiente. Tomando como base los componentes del chinesenspiel
Siempre va a existir un plano de referencia, que será el suelo o tapete.
Sobre este suelo debemos dejar caer el tablero en él.
Encima del tablero debemos dejar caer las fichas, y el dado.
(Para otros juegos de tablero también debemos dejar sobre el tapete los distintos mazos de cartas y distintas fichas y dados que tenga el juego.)
El ratón será lo siguiente. Un modelo que es una mano que podrás mover sobre un plano paralelo al suelo a una altura fija, la posición de la máno es la típica de prepararse a coger una ficha. Así que podás moverte sobre dos ejes con el ratón dentro de ese plano. Al pulsar el botón, el modelo (la mano) bajará hacia abajo (hacia el tablero) y cuando se tope con la primera ficha la agarrará (cambiando la posición a dedos cerrados) y volverá al plano suyo hasta soltar el botón que lo que hará será bajar otra vez para soltar la ficha.
Es algo así como hacemos en la realidad pero evitanto el tener que mover el ratón por un escenario 3d, que complicaría la cosa.
¿Se ve sencillo de implementar el sistema?
Quote¿Se ve sencillo de implementar el sistema?
mucho :D .
ya quiero ver como va a ir esto ;)
Y yo, y yo :D.
Bennu3D NO funciona en Linux, ni tan siquiera si usas Virtual Box para virtualizar Windows y ejecutas un juego con Bennu3D en Windows es capaz de hacerlo funcionar. Eso me provoca un profundo dolor porque quería empezar a hacer un juego 3D con seriedad... Pero me es imposible...
¿Alguna descarga sobre este proyecto del tablero? Aunque sea para probarlo en mi otro PC que sí que tiene un precioso XP cuajado de virus...
funciona con wine a la perfeccion.
que va, sin descargas aún, a ver si puedo preparar algo decente, ahora tengo nada más que tonterias que algunas ni compilan.
¿Funciona bien con Wine? lol
Apenas he probado Wine, sólo había estado usando el Virtual Box, soy algo novato en Ubuntu, voy a hacer unos cuantos experimentos.
Gracias Splinter xD