descripción de las funciones de Bennu 3d (realización colectiva)

Started by Prg, February 04, 2009, 07:39:19 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Prg

hola, para tener un poco de información, propongo que entre todos los que puedan (sin compromiso), modifiquemos este mensaje, con las funciones que podemos explicar de bennu 3d, así tendremos una descripción de ellas, y podremos ayudar a los que apenas inician.

Quote
DWORD M8E_INIT(Driver Type)
inicializa la librería, es obligatorio para poder iniciar el programa

Driver Type:

EDT_NULL = 0;
EDT_SOFTWARE = 1;
EDT_BURNINGSVIDEO = 2;
EDT_DIRECT3D8 = 3;
EDT_DIRECT3D9 = 4;
EDT_OPENGL = 5;



nota: para información acerca de la prueba de características de la tarjeta, remítase a el test 10.

DWORD M8E_FREE()
     descarga la librería bennu3d y todas sus dependencias

DWORD M8E_GETDRIVER()
     devuelve el número de driver que se está usando:

Driver Type:

EDT_NULL = 0;
EDT_SOFTWARE = 1;
EDT_BURNINGSVIDEO = 2;
EDT_DIRECT3D8 = 3;          = directx8
EDT_DIRECT3D9 = 4;          = directx9
EDT_OPENGL = 5;               = OpenGL

DWORD M8E_GETFPS()
     devuelve las imágenes a las que se está reproduciendo el 3d

DWORD M8E_SETVIEWPORT(INTEGER x, INTEGER y, INTEGER ancho, INTEGER alto)
     permite modificar el tamaño de la pantalla 3d (algo así como la región donde se pinta el 3d)
     x       = coordenada x de la región
     y       = coordenada y de la región
     ancho   = ancho de la región
     alto    = alto de la región
     

DWORD M8E_SCRSHOT(STRING path)
     guarda una captura de la pantalla en el path que se le ha pasado

FLOAT M8E_GETDISTANCE(INTEGER  model1, INTEGER model2)
     toma la distancia entre dos models, actualmente no me ha funcionado, yo uso:

     function  fM8E_GETDISTANCE(*mono1, *mono2);
private
   _pos3d pos1, pos2;
   distance;
begin
   m8e_getposmodel(mono1, &pos1);
   m8e_getposmodel(mono2, &pos2);

   distance= sqrt(((pos1.x-pos2.x)*(pos1.x-pos2.x)) + ((pos1.y-pos2.y)*(pos1.y-pos2.y)) + ((pos1.z-pos2.z)*(pos1.z-pos2.z)));

   return(distance);
end


aunque el error ha sido notificado al creador de la librería, aún no hay nueva versión que lo corrija.


DWORD M8E_SETSTRPARAM(string parameter,string value)
Sets string parameters. Examples:
m8e_setstrparam("CSM_TexturePath","media\misc"); //Cartography shop textures path
m8e_setstrparam("MY3D_TexturePath" ,"media\misc"); //my3d textures path

DWORD M8E_CLEARSCENE()
     descarga y borra todos los models y demás elementos 3d para iniciar una nueva carga de nivel, se recomienda eliminar
     también los procesos que usan algún model o piden información para evitar que el programa genere un error.

DWORD M8E_SETAMBIENTLIGHT(INTEGER alpha, INTEGER rojo, INTEGER verde, INTEGER azul)
     selecciona el color del ambiente del mundo 3d
     
     alpha = alpha del color de la zona
     rojo  = cantidad de rojo para el color
     verde = cantidad de verde para el color
     azul  = cantidad de azul para el color
     para que la luz afecte a los models deben tener activada la opción

     M8E_MODELSETMATERIAL(model, EMF_LIGHTING,1);

DWORD M8E_SETFOG(INTEGER, INTEGER, INTEGER, FLOAT, FLOAT)
     crea el efecto de la niebla

DWORD M8E_SETTEXTFLAG(INTEGER efecto, activar)
     permite aplicar efectos a las texturas en general

efectos
ETCF_ALWAYS_16_BIT =0;                       = siempre 16 b
ETCF_ALWAYS_32_BIT =1;                       = siempre 32 b
ETCF_OPTIMIZED_FOR_QUALITY =2;          = optimizado para gráficos de calidad
ETCF_OPTIMIZED_FOR_SPEED =3;             = optimizado para que cargue rápido
ETCF_CREATE_MIP_MAPS =4;
ETCF_NO_ALPHA_CHANNEL = 5;
ETCF_FORCE_32_BIT_DO_NOT_USE =6;

activar= 0 false/ 1 true

M8E_SETTEXTFLAG(ETCF_CREATE_MIP_MAPS,1);
M8E_SETTEXTFLAG(ETCF_OPTIMIZED_FOR_QUALITY ,1);

DWORD M8E_MODELREMOVE(INTEGER model)
     elimina el model cuyo parámtero se le ha pasado

DWORD M8E_GUIREMOVE(INTEGER gui_element)
     elimina la textura u objeto gui cuyo parámetro se le ha pasado

DWORD M8E_ADDSKYBOX( up, down, left, right, front, back)
     crea un cielo formado por 6 texturas y devuelve el identificador del model que las contiene, para aplicarle cualquier propiedad de un model
     como luminosidad.
     
     up      = textura que se colocará en el techo del cielo
     down    = textura que se colocará en el piso del cielo
     left    = textura que se colocará en la parte izquierda del cielo
     ...




DWORD LOAD SKY(texture,horiRes,vertRes,texturePercentage, spherePercentage)
     crea un cielo formado por 1 textura
     texture textura
     M8E_ADDSKYDOME(M8E_LOADTEXTURE("media\sky\ciesk.png"),16,16,1,2);
     vease el test 19

DWORD M8E_LOADTEXTURE(STRING ruta)
     carga la textura cuya ruta se le ha pasado

DWORD M8E_ADDANIMCIRCLE(model, centrox,y,z,  radio,velocidad)
     crea un animador circular, ésto es que crea un movimiento periódico del cual ya no es necesario preocuparnos
     como de columnas que decoran nuestro munco, y que no queremos mover manualmente

     centro x, y, z = coordenadas de el centro del movimiento
     radio          = radio del círculo de nuestro movimiento
     velocidad      = velocidad con que el model se moverá

DWORD M8E_ADDANIMLINE(model, startx,y,z, endx,y,z, timeForWay, loop)
     crea una animación en líena recta, similar al anterior animador
     start x,y,z   = posición para iniciar el movimiento
     end x,y, z    = posición donde termina el movimietnto
     timeForWay    = tiempo para que recorra el camino
     loop          = periódico / no periódico (1/0)

DWORD M8E_ADDANIMROTATION(INTEGER modelo, FLOAT x, FLOAT y, FLOAT z)
     crea un animador rotativo (hace rotar el model que se le ha pasado)
     x  = rotación del eje x
     y  = rotación del eje y

DWORD M8E_ADDANIMTEXTURES(INTEGER, INTEGER, INTEGER, INTEGER)
     crea un animador de texturas (texturas animadas como el agua, una cascada, etc).
     para el uso de esta función se usa lo siguiente:

     identificador=M8E_ADDTEXTURELIST() ;   crea una lista de texturas

  ingresa algunas texturas al vector
  M8E_TEXTURELISTADD(identificador, M8E_LOADTEXTURE(path de la textura));
  M8E_TEXTURELISTADD(identificador, identificador de la textura);

  se aplica a un model
  M8E_ADDANIMTEXTURES(model, identificador,velocidad en milisegundos, periódica 1/0 )

DWORD M8E_ADDTEXTURELIST()
     crea una lista de texturas para el animador  M8E_ADDANIMTEXTURES
     vease M8E_ADDANIMTEXTURES

DWORD M8E_TEXTURELISTADD(INTEGER identificador de M8E_ADDTEXTURELIST, INTEGER  identificador de textura guardada)
     vease M8E_ADDANIMTEXTURES

DWORD M8E_ADDANIMDELETE(model, tiempo en milisegundos)
     crea un animador para eliminar un model pasado un tiempo (yo lo uso en rocas que caen y luego desaparecen)


DWORD M8E_ADDANIMPOINTS(INTEGER, INTEGER, FLOAT, FLOAT)
DWORD M8E_ADDPOINTLIST()
DWORD M8E_POINTLISTADD(INTEGER, FLOAT, FLOAT, FLOAT)

identificador=M8E_ADDPOINTLIST() ;
crea una lista de puntos para que nuestro model los recorra


  //ingresa algunos puntos a recorrer  a nuestra lista cuyo parámetro se le ha pasado
  M8E_POINTLISTADD(identificador,70,-30,230 );
  M8E_POINTLISTADD(identificador,70,-50,180 );
  M8E_POINTLISTADD(identificador,70,-50,120 );
  M8E_POINTLISTADD(identificador,70,-30,80 );
  M8E_POINTLISTADD(identificador,70,-30,40 );
  M8E_POINTLISTADD(identificador,70,-30,-40 );

  //crea UN ANIMADOR q recorre una serie de puntos
  M8E_ADDANIMPOINTS(modelo,listavector, 1, 0.5);  //(pointsLIST,speed, tightness)




DWORD M8E_MODELREMOVEANIM(INTEGER)
     remueve un animador de un model

DWORD M8E_ADDCOLTERRAIN(INTEGER mapa)
     crea colisiones con un mapa de tipo terreno
     mapa  = identificador devuelto por M8E_LOADTERRAIN

DWORD M8E_ADDCOLMAP(INTEGER mapa)
     crea colisiones con un mapa que no se un terreno, por ejemplo un bsp, 3ds, ms3d, pero sólo como zona, pues es lento

DWORD M8E_ADDCOLBBOX(INTEGER model)
     crea una "caja" para detectar colisiones en un model

DWORD M8E_ADDANIMCOL(colision,model, ellipsoidRadiusx,y,z,  gravityPerSecondx,y,z,   ellipsoidTranslationx,y,z)
     crea colisiones automáticas con el mapa
     colision = valor devuelto por M8E_ADDCOLLIST(), M8E_ADDCOLMAP(INTEGER),M8E_ADDCOLTERRAIN(INTEGER mapa)

DWORD M8E_RAYCOL(POINTER __Line3D l1, INTEGER bounding_box)

detecta colisiones entre un bounding box y una línea 3d (l1)

bounding_box = identificador devuelto por M8E_ADDCOLBBOX

DWORD M8E_ADDCOLLIST()
     crea una lista de colisiones, esto es para que tambien colisionesmo con objetos que  no estaban en el mapa, pero que
     los hemos agregado como parte de él con código.

DWORD M8E_COLLISTADD(lista_de_colisiones , modelo);
     lista_de_colisiones = valor devuelto por M8E_ADDCOLLIST()

DWORD M8E_ADDSCNCOL(INTEGER id)
     agrega todas las colisiones de una escena irr a una lista de colisiones
     id = identificador que devuelve M8E_ADDCOLLIST();

colisionid= M8E_ADDCOLLIST();//create a collision list
M8E_ADDSCNCOL(colisionid); //load all scene collisions

DWORD M8E_GETMODELFROMCAM()
     Return a current model pointed by camera

DWORD M8E_GETMODELFROMRAY(POINTER _Pos3D p1, POINTER _Pos3D p2)
     devuelve el model que toca un raycol que va de p1 a p2

DWORD M8E_GETMODELFROM2DPOS(INTEGER x, INTEGER y)
     devuelve el model que se encuentra en la posición 2d indicada


DWORD M8E_GETPOS2DFROM3DPOS(POINTER _pos3d p1, POINTER _pos2d p2)
     permite presentar objetos 2d (gui) que se posicionen en la misma posición que un 3d, (barras de energía, flechas en pantalla, etc)


DWORD M8E_SCREENEXIST()

DWORD M8E_RENDER(INTEGER alpha, INTEGER rojo, INTEGER verde, INTEGER azul)
     esta función es indispensable para que la pantalla 3d se pinte, sin ella el 3d no funcionará, sólo se cargarán models, pero no se
     mostrarán ni se ejecutará nada, es como el frame del bennu.
     
     alpha              = alpha de la pantalla
     rojo, azul, verde, = colores de la pantalla


DWORD M8E_OPTIONEXIST(INTEGER)

DWORD M8E_LOADSCN(STRING paht)
     carga una escena compuesta de irrilch
M8E_LOADSCN("media/example.irr");

DWORD M8E_ADDZIPFILE(STRING path)
     carga un archivo comprimido (pk3, zip, rar, 7zip, etc).

DWORD M8E_LOADTERRAIN(STRING path)
     carga un terreno de tipo hmp (textura 2d en blanco y negro que simula un terreno 3d)

DWORD M8E_LOADMATRIX(tileSizeheight,width  ,tileCountheight,width,
      hIllsHeight,  countHillsheight,width,  textureRepeatCountheight,width)


DWORD M8E_LOADWATER(model, waveHeight,waveSpeed,waveLenght)
     crea en un model efecto de olas de mar
     model        = model  en que se aplicará el efecto, por ejemplo un matrix
     waveHeight   =
     waveSpeed    = velocidad de las olas
     waveLenght   =

DWORD M8E_LOADANIMODEL(STRING path)
     carga un modelo, se aceptan formatos

3D Studio meshes (.3ds)
Blitz3D B3D files (.b3d)
Alias Wavefront Maya (.obj)
Cartography shop 4 (.csm)
COLLADA (.xml, .dae)
DeleD (.dmf)
FSRad oct (.oct)
Irrlicht scenes (.irr)
Irrlicht static meshes (.irrmesh)
Microsoft DirectX (.x) (binary & text)
Milkshape (.ms3d)
My3DTools 3 (.my3D)
OGRE meshes (.mesh)
Pulsar LMTools (.lmts)
Quake 3 levels (.bsp)
Quake 3 models (.md3)
Quake 2 models (.md2)
STL 3D files (.stl)
en humos puedes mover la camara con los cursores. es necesario para los niveles a partir del dos :)

SplinterGU

muy buena iniciativa... karma... ( ya pronto vas a alcanzar a mi "estatico" numero de karma... :( )
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

laghengar

!!!Blender Blender Blender yuhuuuuuuu¡¡¡ novato o_O

osk

Por otra parte...¿alguien sabe algo de los ColDev? Están un poco desaparecidos últimamente, y quien mejor que ellos en echarnos una mano para completar todo esto, no? Sería una lástima que esta librería se quedará así...porque puede prometer mucho más.

Prg

QuotePor otra parte...¿alguien sabe algo de los ColDev? Están un poco desaparecidos últimamente, y quien mejor que ellos en echarnos una mano para completar todo esto, no? Sería una lástima que esta librería se quedará así...porque puede prometer mucho más.

amigo, lo mismo digo  :-[ ,, ojalá pronto vuelvan. le he dejado algunos mensaje a link, pero no me responde...
en humos puedes mover la camara con los cursores. es necesario para los niveles a partir del dos :)

Prg

bueno, como se llenó el mensaje anterior, aquí están las otras funciones. quedan las de física, yo no las he usado mucho ( ¿alguien dijo Windgate?)
Quote
DWORD M8E_LOADMODELEX(STRING, INTEGER)
DWORD M8E_LOADQ3MAP(STRING, INTEGER)
DWORD M8E_Q3MAPQUERY(INTEGER, STRING, STRING, STRING, POINTER)


DWORD M8E_LOADCUBEMODEL(FLOAT tamaño)
      crea un model cúbico en memoria

DWORD M8E_LOADSPHEREMODEL(FLOAT tamaño)
      crea un model esférico en memoria

DWORD M8E_ANIMODEL(INTEGER model, INTEGER frame_inicio, INTEGER frame_fin)
      restringe las animacion es de un model
      frame_inicio,fin     = imagen con la que iniciará y finalizará la animación

DWORD M8E_MODELANIMSPEED(INTEGER, FLOAT)
      velocidad de animación de un model

DWORD M8E_MODELANIMSETFRAME(INTEGER model, FLOAT frame)
      permite seleccionar el frame (imagen, animación) que visualizará un model.

DWORD M8E_MODELANIMMD2(INTEGER model, INTEGER animación)
      permite seleccionar la animación que presentará un model md2.

EMAT_STAND =0;
EMAT_RUN  =1;
EMAT_ATTACK  =2;
EMAT_PAIN_A  =3;
EMAT_PAIN_B  =4;
EMAT_PAIN_C  =5;
EMAT_JUMP    =6;
EMAT_FLIP    =7;
EMAT_SALUTE  =8;
EMAT_FALLBACK =9; 
EMAT_WAVE    =10;
EMAT_POINT   =11;
EMAT_CROUCH_STAND=12;   
EMAT_CROUCH_WALK  =13;
EMAT_CROUCH_ATTACK =14; 
EMAT_CROUCH_PAIN   =15;
EMAT_CROUCH_DEATH  =16;
EMAT_DEATH_FALLBACK =17; 
EMAT_DEATH_FALLFORWARD =18; 
EMAT_DEATH_FALLBACKSLOW =19; 
EMAT_BOOM              =20;
EMAT_COUNT            =21;


FLOAT M8E_GETMODELANIMCURFRAME(INTEGER model)
      devuelve la posición de la animación de un model 3d

DWORD M8E_MODELSETMATERIAL(INTEGER model, INTEGER propiedad, INTEGER activado / desactivado [1/0])
      permite seleccionar las propiedades de la textura de un model, funciona también con partículas

EMF_WIREFRAME=0;          = presentar sólo trama de alambre
EMF_POINTCLOUD = 1;       = presentar sólo puntos
EMF_GOURAUD_SHADING =2;
EMF_LIGHTING=3;           = que la iluminación lo afecte
EMF_ZBUFFER =4;
EMF_ZWRITE_ENABLE =5;
EMF_BACK_FACE_CULLING=6;  = dibujar todas las caras, aunque la cámara no las requiera
EMF_BILINEAR_FILTER =7;
EMF_TRILINEAR_FILTER =8;
EMF_ANISOTROPIC_FILTER =9;
EMF_FOG_ENABLE=10;        = que la niebla lo afecte
EMF_NORMALIZE_NORMALS= 11;
EMF_TEXTURE_WRAP = 12;
EMF_MATERIAL_FLAG_COUNT=13;



DWORD M8E_LOADTEXMODEL(INTEGER model, INTEGER textura)
      pinta una textura sobre un model,funciona también con partículas

DWORD M8E_MODELADDCHILD(INTEGER model1, INTEGER model2)
      agrega el model 1 al model 2 (un arma a un personaje), funciona también con partículas

DWORD M8E_POSMODEL(INTEGER model, POINTER _pos3d)
      posiciona un model en una posición, funciona también con partículas

DWORD M8E_GETPOSMODEL(INTEGER model, POINTER _pos3d)
      devuelve la posición de un model, funciona también con partículas

DWORD M8E_MODELROTATION(INTEGER model, POINTER _pos3d)
      rota un model de acuerdo a los valores de un _pos3d
      _pos3d rotate;
      rotate.x=20;
      rotate.y=0;
      rotate.z=0;


DWORD M8E_GETROTMODEL(INTEGER, POINTER)

DWORD M8E_MODELSCALE(INTEGER model, FLOAT x, FLOAT y, FLOAT z)
      modifica el tamaño de un model
      x,y,z  = valor que se multiplicará por el tamaño en el eje x, y y/o z

DWORD M8E_MODELVISIBLE(INTEGER model, INTEGER  1/0 [true/false])
      permite seleccionar si un model se visualizará o no, funciona también con partículas

DWORD M8E_MODELMATTYPE(INTEGER, INTEGER)
      permite seleccionar cómo será el material de un model, funciona también con partículas.
     
EMT_SOLID =0;                                 = textura sólida
EMT_SOLID_2_LAYER =1;
EMT_LIGHTMAP =2;
EMT_LIGHTMAP_ADD =3;
EMT_LIGHTMAP_M2 =4;
EMT_LIGHTMAP_M4 =5;
EMT_LIGHTMAP_LIGHTING =6;
EMT_LIGHTMAP_LIGHTING_M2 =7;
EMT_LIGHTMAP_LIGHTING_M4 =8;
EMT_DETAIL_MAP=9;
EMT_SPHERE_MAP = 10;                         = textura esférica (de cualquier perfil la textura no cambia, no rota)
EMT_REFLECTION_2_LAYER =11;
EMT_TRANSPARENT_ADD_COLOR = 12;              = textura transparente
EMT_TRANSPARENT_ALPHA_CHANNEL =13;           = no pintar color negro
EMT_TRANSPARENT_ALPHA_CHANNEL_REF =14;
EMT_TRANSPARENT_VERTEX_ALPHA =15;
EMT_TRANSPARENT_REFLECTION_2_LAYER =16;
EMT_NORMAL_MAP_SOLID =17;
EMT_NORMAL_MAP_TRANSPARENT_ADD_COLOR =18;
EMT_NORMAL_MAP_TRANSPARENT_VERTEX_ALPHA =19;
EMT_PARALLAX_MAP_SOLID =20;
EMT_PARALLAX_MAP_TRANSPARENT_ADD_COLOR =21;
EMT_PARALLAX_MAP_TRANSPARENT_VERTEX_ALPHA =22;
EMT_ONETEXTURE_BLEND = 23;
EMT_FORCE_32BIT =24;



DWORD M8E_GETACTIVECAM()
      retorna la cámara activa

DWORD M8E_SETACTIVECAM(INTEGER cámara)
      selecciona la cámara activa

DWORD M8E_GETCAMTARGET(INTEGER cámara, POINTER _pos3d)
      devuelve el ángulo de la cámara

DWORD M8E_ADDCAM(posx,y,z  ,targetx,y,z)
      crea una nueva cámara
      target xy,z = ángulo al cual observa la cámara.

DWORD M8E_ADDCAMFOLLOW(INTEGER modelo, FLOAT altura, FLOAT leash, FLOAT velociadad)
      hace que la cámara siga model

      modelo  = modelo a seguir
      altura  = altura de la cámara
      leash   = no se
      velocidad=velocidad para seguirla


DWORD M8E_ADDCAMFOLLOW_A(modelo, vRelativePosx,y,z, speed)
      crea una cámara que sigue un model, pero que no mueve su ángulo

      modelo               = modelo a seguir
      vRelativePosx,y,z    = punto relativo para seguirla (se utiliza la distancia entre el model y el punto inicial para moverse)
      speed                = velocidad

DWORD M8E_ADDCAMFPS(POINTER _CameraFPS)
      crea una cámara en primera persona

      las características de ésta cámara son:


int moveforward,
moveback,
straferight,
strafeleft,
jump;
float  turnspeed,
movespeed,
jumpspeed;
int NoVerticalMovement;

ejemplos:

_CameraFPS micámara;
micámara.movespeed=500;

vease el test 21

DWORD M8E_CAMTARGET(INTEGER cámara, POINTER _pos3d)
      selecciona el ángulo en que la cámara ve

DWORD M8E_CAMSETFAR(INTEGER cámara, FLOAT distancia)
      selecciona la distancia con la que la cámara enfoca

DWORD M8E_CAMSETASPRATIO(INTEGER, FLOAT)
DWORD M8E_CAMSETFOV(INTEGER, FLOAT)
DWORD M8E_CAMSETNEAR(INTEGER, FLOAT)
DWORD M8E_CAMSETUPVECTOR(INTEGER, FLOAT, FLOAT, FLOAT)


DWORD M8E_ADDLIGHT(x,y,z, r,g,b,  radius)
      crea una nueva luz en una posición
      radius = radio de la luz
      x,y,z  = posición de la luz
      r,g,b  = color de la luz

DWORD M8E_LIGHTGETPROP(INTEGER, POINTER)
DWORD M8E_LIGHTSETPROP(INTEGER, POINTER)
DWORD M8E_ADDBOARD(FLOAT, FLOAT, FLOAT, FLOAT, FLOAT)
DWORD M8E_BOARDSIZE(INTEGER, FLOAT, FLOAT)

DWORD M8E_GUIADDFONT(STRING path)

      carga una fuente
     
      si ponemos como path "", entonces se usa la fuente del sistema, pero es necesario cargar una cadena vacía

DWORD M8E_GUIADDTEXT(id,string text, x,y,  alpha,r,g,b)
      crea un texto
      id = valor devuelo por M8E_GUIADDFONT

DWORD M8E_GUISETTEXT(INTEGER id, STRING nuevo_texto)
      cambia el contenido de un texto
      id          = valor devuelto por  M8E_GUIADDTEXT
      nuevo_texto = texto que se dibujará, ejemplo: "mi texto"

DWORD M8E_GUIADDIMAGE(texture, x,y,  usealpha [1/0])
      pinta una imagen en la pantalla

      usealpha  = ponemos un 0 si sepintan las zonas negras, y un 0 si no

DWORD M8E_GUISETIMAGE(INTEGER id, INTEGER textura)
      cambia la textura de un objeto gui

      id = valor devuelto por M8E_GUIADDIMAGE

DWORD M8E_GUIMOVE(INTEGER id , INTEGER x, INTEGER y)
      cambia la posición de un texto u objeto 2d
     
      id = = identificadores de los objetos gui, devueltos por  M8E_GUIADDIMAGE o  M8E_GUIADDTEXT

DWORD M8E_GUIGETRECT(INTEGER, POINTER)

DWORD M8E_GUISETRECT(INTEGER  id , POINTER _TRect2D)

      crea regiones para los elementos gui (para dibujar sólo parte de ellos)
      id         = valor devuelto por M8E_GUIADDIMAGE
     
      elementos de
      _TRect2D:
      UpperLeftCorner.x,y;
      LowerRightCorner.x,y;

     
      mediante upperleftcorner.x y upperleftcorner.y posicionamos la esquina superior izquierda de la región
      mediante LowerRightcorner.x y LowerRightcorner.y posicionamos la esquina inferior derecha de la región


DWORD M8E_GUICOL(INTEGER id1, INTEGER id2)
      crea colisiones en objetos gui (para botones y demás)
     
      id1, id2 = identificadores de los objetos gui, devueltos por  M8E_GUIADDIMAGE o  M8E_GUIADDTEXT

DWORD M8E_GUIADDFADER()
DWORD M8E_GUIFADERINSET(INTEGER, INTEGER, INTEGER, INTEGER, INTEGER, INTEGER)
DWORD M8E_GUIFADEROUTSET(INTEGER, INTEGER, INTEGER, INTEGER, INTEGER, INTEGER)
DWORD M8E_GUIFADERREADY(INTEGER)
DWORD M8E_GUIREMOVEALL()

      borra todos los objetos gui

DWORD   M8E_PARTICLEADDBOXEMITTER(x1,y1,z1, x2,y2,z2, //boundingbox limits
        x,y,z,  //x,y,z  direction
        min,max, //min,max particles per second
        alpha,r,g,b //min alpha,r,g,b
        alpha,r,g,b //max alpha,r,g,b
        min ,max, //tiempo de vida de las partículas
        0 )//ángulo de desvío de la caja

        crea un emisor de partículas formando un cubo.
        a las partículas se le pueden poner las características de un model, y sólo difieren enla forma de elegir su tamaño

DWORD M8E_PARTICLEADDPOINTEMITTER
      x,y,z,    //direction
      min,max,   //particles per second
      alpha,r,g,b, //min
      alpha,r,g,b, //max
      Min,Max,   //tiempo de vida
      angle);    //ángulo de desvío

DWORD M8E_PARTICLEADDCYLINDEREMITTER
      x,y,z,     // center
      radius,    //radio
      x,y,z, //Direction of the length of the cylinder
        lenght, //The length of the the cylinder
        true/false,//Whether or not to put points inside the cylinder or on the outline only
        x,y,z, //Direction and speed of particle emission
        min,max,  //particles per second
        min alpha,r,g,b,
        max alpha,r,g,b,
        lifetime Min,Max,
        max angle  degrees
        );

DWORD M8E_PARTICLEADDRINGEMITTER
      x,y,z,  // center
      radius,    //radio
      ringThickness
      x,y,z, //Direction of the length of the cylinder
      min,max,  //particles per second
        min alpha,r,g,b,
        max alpha,r,g,b,
        lifetime Min,Max,
        max angle  degrees
        );


DWORD M8E_PARTICLEADDSPHEREEMITTER(FLOAT, FLOAT, FLOAT, FLOAT, FLOAT, FLOAT, FLOAT, INTEGER, INTEGER, INTEGER, INTEGER, INTEGER, INTEGER, INTEGER, INTEGER, INTEGER, INTEGER, INTEGER, INTEGER, INTEGER)
      x,y,z,  // center
      radius,    //radio
      x,y,z, //Direction of the length of the cylinder
      min,max,  //particles per second
        min alpha,r,g,b,
        max alpha,r,g,b,
        lifetime Min,Max,
        max angle  degrees
        );
DWORD M8E_PARTICLEADDFADEOUTAFFECTOR(particle,alpha,r,g,b,timeFadeOut)
   
      después de que la partícula tiene un tiempo viva, cambia su color

DWORD M8E_PARTICLEADDGRAVITYAFFECTOR(partícula,
             x,y,z  //gravedad
            timeforceLost);

      agrega gravedad a la partícula

DWORD M8E_PARTICLEADDATTRACTIONAFFECTOR(partícula,
         x,y,z, //Point to attract/detract
         speed,
       false/true,//Whether the particles attract or detract from this point.         
       false/true,//Whether or not this will affect the X position of the particle
       false/true,//Whether or not this will affect the Y position of the particle
       false/true //Whether or not this will affect the Z position of the particle
        );

     atrae/ repele una partícula de un punto


DWORD M8E_PARTICLEADDROTATIONAFFECTOR(partícula,
            x,y,z,  //velodicad, un valor de 0 indica que no se rotará en este sentido, y uno negativo una rotación en sentido contrario
            x,y,z); //punto de pivote
      permite que la partícula siga una ruta giratoria con respecto a un punto

DWORD M8E_PARTICLESETSIZE(INTEGER partícula, FLOAT ancho, FLOAT alto)

      cambia el tamaño de una partícula
      ancho  = nuevo ancho de la partícula
      ..

DWORD M8E_ADDSHADER(
     vertexcode,vertexEntryfunction,vertexType,
     pixelcode, pixelEntryfunction, pixelType, materialType)


     permite agregar un shader propio a un objeto, véase el test 15

DWORD M8E_PHYSINIT()
      inicializa el motor físico
DWORD M8E_PHYSADDMODEL(POINTER)
DWORD M8E_PHYSADDCUBE()
DWORD M8E_PHYSADDCHARCONTROL(POINTER)
DWORD M8E_PHYSCHARCONTROLUPDATE(POINTER)
DWORD M8E_PHYSMATERIAL(INTEGER, INTEGER, POINTER)
DWORD M8E_PHYSADDCAR(POINTER)

      permite crear la física de un carro
DWORD M8E_PHYSCARUPDATE(POINTER)
DWORD M8E_PHYSADDFORCE(INTEGER, POINTER)
DWORD M8E_PHYSADDGLOBALFORCE(INTEGER, POINTER, POINTER)
DWORD M8E_PHYSADDIMPULSE(INTEGER, POINTER, POINTER)
DWORD M8E_PHYSADDLOCALFORCE(INTEGER, POINTER, POINTER)
DWORD M8E_PHYSADDTORQUE(INTEGER, POINTER)
DWORD M8E_PHYSENABLE(INTEGER, INTEGER)
DWORD M8E_PHYSANGULARDAMPING(INTEGER, POINTER)
DWORD M8E_PHYSLINEARDAMPING(INTEGER, FLOAT)
DWORD M8E_PHYSOMEGA(INTEGER, POINTER)
DWORD M8E_PHYSBODYPOS(INTEGER, POINTER)
DWORD M8E_PHYSGETBODYPOS(INTEGER, POINTER)
DWORD M8E_PHYSBODYROT(INTEGER, POINTER)
DWORD M8E_PHYSGETBODYROT(INTEGER, POINTER)
DWORD M8E_PHYSTORQUE(INTEGER, POINTER)
DWORD M8E_PHYSVELOCITY(INTEGER, POINTER)
DWORD M8E_PHYSREMOVE(INTEGER)
DWORD M8E_PHYSADDJOIN(POINTER)

en humos puedes mover la camara con los cursores. es necesario para los niveles a partir del dos :)

SplinterGU

no se si en la wiki hay una seccion para las extensiones (modulos no oficiales), pero no estaria mal...
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Prg

sería muy buena idea, y quizá con el tiempo hasta podamos agregar una sección en español...  :)
en humos puedes mover la camara con los cursores. es necesario para los niveles a partir del dos :)

Windgate

Joder, acababa de proponer lo mismo. Os echaré una mano, grandiosa idea, la documentación es la gran barrera que me impide copular a gusto con el 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

SplinterGU

Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Windgate

Amigos, doy un toque de atención para que este hilo no quede paralizado.

La documentación sobre 3D está al 0,1% prácticamente... Prg: En su día no leí este hilo a fondo y no me enteré de que me pedías colaboración :o Cierto que usé la física pero tengo el Bennu3D oxidado, aún así me gustaría poder colaborar y estoy seguro de que alguno más podrá echar un cable.

Te pido un favor Prg: ¿Podrías subir la versión actual de la documentación con tus descripciones añadidas y poner aquí el link?

Te sugiero que añadas la fecha de última modificación/actualización bien sea en el nombre del documento o en su página inicial, eso nos ayudará a poder descargarlo, editarlo y volver a subirlo con la nueva fecha... Si a alguien se le ocurre alguna solución mejor que lo diga :P

EDIT: También doy un toque de atención: Lo que debatimos aquí enriquece al hilo que abrí en su día http://forum.bennugd.org/index.php?topic=236.0 ¿Alguien hace el favor de cerrar el hilo anterior y remitir a éste? Thanks!!!
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

Para no poner hilo nuevo en la documentación (No creo que haga falta) y con intención de que no muera este post os invito a echar un vistazo al brevísimo capítulo primero del tutorial de Bennu 3D.

Corresponde al tema 41 de mi tutorial de Bennu, y ya está colgado el PDF en versión beta indicando a nivel teórico las diferencias básicas entre 2D y 3D, en qué consisten los modelos y cómo son las funciones de rotación, escalado y traslación en modelos 3D.

http://trinit.es/temario/Tema%2041%20Conceptos%20B%e1sicos%20de%203D.pdf

El primer paso de muchos otros, tengo previstos 10 temas de 3D y ya va el primero, 10% del trabajo se podría decir :P

(5% si tenemos en cuenta que los restantes también llevarán un videojuego de ejemplo asociado :()
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

darío

Muy buena idea sí :), además así luego es más fácil colgarlo en el wiki.

Karma += 1;
My sites:
Smart Fpg Editor - Painless FPG Edition for Bennu and PixTudio
fenixlib - .NET support for manipulating PixTudio, Bennu and Div graphic formats

Windgate

Gracias Darío, a estas alturas ya está el videojuego de ejemplo asociado al tema 41 también, y estoy atacando el tema 42 que trata sobre modelos y sus funciones asociadas.

Básicamente se establece un escenario y una cámara capaz de responder físicamente al escenario, lo más sencillo que he podido conseguir, utilizando unos módulos muy sencillitos, puesto que en el tema 41 ya se asume que el aprendiz sabe lo que es un módulo y lo entenderá sin problemas.

La ampliación de la descripción de funciones del M8EE viene en el subdirectorio /doc del videojuego de ejemplo, la descripción original viene sin negrita y centrada, mientras que mis ampliaciones (Por ahora sólo unas pocas) vienen en negrita y con alineación a izquierda.

Por si alguien quiere echar un vistazo, recordad que la realización es colectiva :P
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

Prg

Te pido un favor Prg: ¿Podrías subir la versión actual de la documentación con tus descripciones añadidas y poner aquí el link?


pues no tengo un docu con las descripciones, lo que podría hacer es copiar las del post y pegarlas en un docu nuevo, está bien? :)

a propósito, ya encontré la página con los bsp, pondré el link en recursos para que quede para la posteridad :) saludos
en humos puedes mover la camara con los cursores. es necesario para los niveles a partir del dos :)