bennu3d

Started by l1nk3rn3l, May 21, 2008, 01:08:52 AM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

l1nk3rn3l

#105
dentro del editor hay un tutorial bien completo para crear niveles.. en PDF

y por cierto josebita se ofrecio para crear la version de linux
osease compilarlo para linux ya que la libreria es 100% portable,
en cuanto termine la fisica habra una version para linux,

y claro haber quien se ofrece para traducirlo se incluye el archivo
de openoffice del tutorial, ya que no quedo tiempo.(dentro del paquete esta)

josebita

Cuando lo tengas, avisa.

Prg

#107
hola amigo, disculpa ¿hay alguna función para saber si un punto está dentro del campo de visión de la cámara? ... gracias.
otra cosa:
los terrenos no se pintan completamente, hay partes donde aunque hay colisiones, el terreno no se ve. (en un extremo), como si no se terminara de crear
en humos puedes mover la camara con los cursores. es necesario para los niveles a partir del dos :)

l1nk3rn3l

#108
¿hay alguna función para saber si un punto está dentro del campo de visión de la cámara?
no, pero la incluire como sugerencia..

los terrenos no se pintan completamente?
bueno, lo revisare, que funcion usas para el terreno

otro preview este es un efecto postproceso llamado "invertido"



Prg

el efecto se ve genial, es el efecto negativa, utilizado al morir, o para algunos poderes especiales... (ya le estoy encontrando usos  :D)

así cargo el mapa y se ve el problema.
[code language="bennu"]/*
  MODE8 ENHANCED ENGINE
  ColDev (C) 2004   
  ----------------------                 
 
  -M8EE 3D Engine, Fase Beta -
 
  TEST  LOAD TERRAIN
 
  PRUEBA DE CARGA MAPA DE ALTURAS 
 
*/

include "m8ee.h"

global
  modelo,camara;
  terreno;

  float posx,posy,posz;
  cambio=false;
 
  i,tercolision,animadorcol;     
end;
       
       
       
       
//camera process                     
process camarappal()
private
    _Pos3D pos1,pos2,pos3;
    actualizarpos,actualizartarget;
    vel=2;
    vel_giro=60;
   
   
begin
  actualizarpos=false; actualizartarget=false;

  pos1.x=0; pos1.y=0; pos1.z=0;
  pos2.x=0; pos2.y=0; pos2.z=0;
  angle+=vel_giro;
  M8E_GETPOSMODEL(camara, pos3); //get camera position
   
    pos3.x+=pos1.x; pos3.y+=pos1.y; pos3.z+=pos1.z;
    
    actualizarpos=false;  M8E_POSMODEL(CAMARA, pos3);                                                                               
    actualizartarget=false; M8E_CAMTARGET(CAMARA, pos2);     
   
    pos1.x=0; pos1.y=0; pos1.z=0;
loop

  if(key(_d) or key(_right))
     angle+=vel_giro;
     M8E_GETPOSMODEL(camara, pos2);
      pos2.x+=get_distx(angle,100);   
     pos2.z+=get_disty(angle,100);
     actualizarpos=1;
  end 
  if(key(_a) or key(_left))
     angle-=vel_giro;
     M8E_GETPOSMODEL(camara, pos2);
        pos2.x+=get_distx(angle,100);   
     pos2.z+=get_disty(angle,100);
     actualizarpos=1;
  end   
  if(key(_w) or key(_up))
    pos1.x+=get_distx(angle,vel);
    pos1.z+=get_disty(angle,vel); 
   
    M8E_GETPOSMODEL(camara, pos2);
    pos2.x+=get_distx(angle,100);   
   pos2.z+=get_disty(angle,100);     
    actualizarpos=true;
  end     
  if(key(_s) or key(_down))
    pos1.x-=get_distx(angle,vel);
    pos1.z-=get_disty(angle,vel);
   
    M8E_GETPOSMODEL(camara, pos2);
    pos2.x+=get_distx(angle,100);   
   pos2.z+=get_disty(angle,100);     
    actualizarpos=true;
  end
  if (actualizarpos or actualizartarget)
    M8E_GETPOSMODEL(camara, pos3); //get camera position
   
    pos3.x+=pos1.x; pos3.y+=pos1.y; pos3.z+=pos1.z;
    
    actualizarpos=false;  M8E_POSMODEL(CAMARA, pos3);                                                                               
    actualizartarget=false; M8E_CAMTARGET(CAMARA, pos2);     
   
    pos1.x=0; pos1.y=0; pos1.z=0;
  end;
   
  frame;       
End;
   
end;

   
   
   
 
   
begin

  full_screen=false;
 
  set_mode (640,480,32);
  set_fps (0,0); //max.
             
   M8E_INIT(edt_direct3d8);   
   
 
if (M8E_SCREENEXIST()==1   ) 
   M8E_SETTEXTFLAG(ETCF_CREATE_MIP_MAPS,1);
   M8E_SETTEXTFLAG(ETCF_OPTIMIZED_FOR_SPEED,1);   
   
//CARGA TERRENO   

   terreno=M8E_LOADTERRAIN("media\text\heightmap.jpg");         
   M8E_LOADTEXMODEL(terreno,M8E_LOADTEXTURE(  "media\text\Fluidos10.jpg"));
   M8E_MODELSCALE(terreno, 150, 4.4, 150);
   M8E_MODELSETMATERIAL(terreno, EMF_LIGHTING,0); 
   
   M8E_MODELMATTYPE(terreno, EMT_SOLID);//"solid" is fast render with terrain                           
   

   posx=255*150-1000; posy=255*2; posz=255*150-1000;
   
   camara=M8E_ADDCAM(posx,posy,posz, 2397*2,343*2,2700*2);;//camara en primera persona
   M8E_CAMSETFAR(CAMARA,12000);             
 
   
//--------------------------------------------     
//adiciona colision
   //tercolision=M8E_ADDCOLTERRAIN(terreno);//collision terrain

//adiciona un animador de colisiones para q responda automaticamente 
//create collision animator(auto response)
   //--->M8E_ADDANIMCOL(colision,model, ellipsoidRadiusx,y,z,  gravityPerSecondx,y,z,   ellipsoidTranslationx,y,z)
   //M8E_ADDANIMCOL(tercolision,camara, 10,10,10,  0,-3,0,  0,0,0);   

   
   //-->M8E_ADDCOLTERRAINFAST(model,terrain,navHeight,MaxHeight,GlueEnable,Gravity x,y,z)
   M8E_ADDCOLTERRAINFAST(camara,terreno,20,1150,true,0,0,0); //coldev fast terrain collision

   camarappal();
   
   Show_Fps(450,50,  255,255,255,255);
   
   loop           
         
    if (key(_esc) ) break; end;   
   
    M8E_RENDER(0,0,0,0);    //(alpha, r,g,b)     
    frame;       
  end;                     
 
end; 
         
  let_me_alone();       
         
  //libera recursos 
  M8E_FREE(); 

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

l1nk3rn3l

#110
hay una opcion de la camara creo que set_far

debes incrementarlo para que se vea mas lejos

creo que debe ser eso..

bueno el editor bsp tiene ya un manual en español
http://3dm8ee.blogspot.com/





..


Prg

mmm setfar lo que tiene es que incrementa el campo de visión de la cámara, mi problema es que el mapa no se pinta, aunque esté pisándolo. provaste el código de arriba? verás que apareces en una zona en que el mapa no está pintado, pero hay gravedad, y es una zona que de acuerdo a la medida del jpg multiplicada por el escalado el mapa debería pintarse.
en humos puedes mover la camara con los cursores. es necesario para los niveles a partir del dos :)

Prg

#112
te paso un heightmap para que veas lo que pasa:

en este, deberían haber 4 paredes de montañas en los  lados del mapa, pero en el terreno de bennu sólo se pintan 2, las otras dos no alcanzan a ser pintadas.

oye, exactamente qué hace cada una de estas ....., algunas ya las he utilizado, pero hay muchas que no se qué hagan exactamente

EMF_WIREFRAME=1h;  //hace que el model se presente en trama de alambre
EMF_POINTCLOUD = 2h;
EMF_GOURAUD_SHADING =4h;
EMF_LIGHTING=8h;        //activa que se calcule la luz en la superficie
EMF_ZBUFFER =10h;
EMF_ZWRITE_ENABLE =20h;
EMF_BACK_FACE_CULLING=40h;
EMF_FRONT_FACE_CULLING= 80h;  //parece que cambia las caras que se pintan de atrás hacia adelante (yo para eso las uso)
EMF_BILINEAR_FILTER =100h;
EMF_TRILINEAR_FILTER =200h;
EMF_ANISOTROPIC_FILTER =400h;
EMF_FOG_ENABLE=800h;             //activa la niebla en el cuerpo
EMF_NORMALIZE_NORMALS= 1000h;
EMF_TEXTURE_WRAP = 2000h;
EMF_ANTI_ALIASING= 4000h;
EMF_COLOR_MASK= 8000h;
EMF_COLOR_MATERIAL= 10000h;

//se pueden tener varios a la vez en un solo modelo
y todas las otras?


y de estas

EMT_SOLID =0;           //render más rápido
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;
EMT_REFLECTION_2_LAYER =11;        //como material reflejante
EMT_TRANSPARENT_ADD_COLOR = 12;                       //transparencia como flags 4
EMT_TRANSPARENT_ALPHA_CHANNEL =13;                  //activa transparencia alpha
EMT_TRANSPARENT_ALPHA_CHANNEL_REF =14;
EMT_TRANSPARENT_VERTEX_ALPHA =15;
EMT_TRANSPARENT_REFLECTION_2_LAYER =16;           //pensé que sería reflejo con transparencia, a´si que la puse a mi agua, pero no hizo nada
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;

por cierto, las librerías son muy rápidas, en el test 1 alcanzo hasta 2364 fps :)
gracias por las librerías :)
en humos puedes mover la camara con los cursores. es necesario para los niveles a partir del dos :)

l1nk3rn3l

#113
te paso un heightmap para que veas lo que pasa...
lo revisare..



//se pueden tener varios a la vez en un solo modelo
y todas las otras?

SI TOdas a lavez excepto el wireframe porque por
ejemplo puedes tener wireframe y transparente, seria raro?
por eso usan falso y verdadero para activarse, puedes probar
combinaciones, pero por lo general no las he usado..




Sandman

Someone needs your help: http://www.bennugd.co.uk/viewtopic.php?id=20 .
1: Adding light sources doesn't seem to work.
2: How to draw dynamic text.
-- Sandman

Windgate

Una duda existencial... Aunque la Bennu3D va a cambiar, ¿Las funciones van a seguir siendo las mismas y/o con los mismos parámetros o va a haber cambios significativos?

Lo pregunto porque veo vuestros ejemplos de código y los veo calcados a la Bennu3D "anterior".

Ahora ando con Ubuntu a ver si puedo ejecutar mis juegos en Bennu3D con el Wine... No entiendo muy bien cómo funciona el Wine así que si alguien ha tenido algún contacto previo para usar Bennu3D que me diga algo please ???
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

QuoteUna duda existencial... Aunque la Bennu3D va a cambiar, ¿Las funciones van a seguir siendo las mismas y/o con los mismos parámetros o va a haber cambios significativos?

link dijo que intentaría dejarlas lo más parecido posible para no afectarnos en nuestros anteriores proyectos.

disculpa link, en la física cómo vas, qué tan mejor será la nueva, sería bueno que nos presumieras algunos detalles frescos sobre esto...  ;)
en humos puedes mover la camara con los cursores. es necesario para los niveles a partir del dos :)

l1nk3rn3l

http://3dm8ee.blogspot.com/


nueva version con las sugerencias incluidas ver basic03.prg

voy despasito pero a buen paso..

la fisica todavia no esta incluida, pronto pronto,, sed pacientes

Windgate

Espero la física y la iluminación ansioso cual sabueso en época de celo :o

Lo primero que haré será probar directamente mis programas en el "antiguo" Bennu 3D a ver qué sucede y qué no xD
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

Quote from: l1nk3rn3l on May 26, 2009, 03:57:15 PM
http://3dm8ee.blogspot.com/


nueva version con las sugerencias incluidas ver basic03.prg

voy despasito pero a buen paso..

la fisica todavia no esta incluida, pronto pronto,, sed pacientes

ahhh, somos pasientes, pero cuando!!! ja ja ja,
la verdad me emociona mucho saber cómoo será la nueva física, estoy en periodo de examenes, pero aún así me doy mis escapaditas para deambular sobre terrenos 3d, ambientación e imaginar formas de usar la física de bennu 3d.
en humos puedes mover la camara con los cursores. es necesario para los niveles a partir del dos :)