Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: zerozerito en Mayo 05, 2010, 07:58:24 PM

Título: no dibujar objetos a distancia en 3d como se hace?
Publicado por: zerozerito en Mayo 05, 2010, 07:58:24 PM
 :GM8:
hola ando haciendo mi juego 3d y ya he visto varios juegos en 3d (hechos en gm) en que los objetos a distancia del jugador no aparecen hasta que te acercas a ellos.


segun he sabido esto es para que un juego no se haga lento y que solo dibuje los objetos cercanos que si se van a usar o interactuar

habra un codigo en GML o un consejo para poder hacer esto y que mi juego no vaya lento (por que mi juego lo quiero hacer con demasiados objetos)

gracias.
Título: Re: no dibujar objetos a distancia en 3d como se hace?
Publicado por: Ge en Mayo 05, 2010, 11:15:14 PM
En el evento Draw, antes de dibujar, coloca el distance to object  :D .

if(distance_to_object(obj_Camara) < 512)
{
d3d_model_draw(PinoModelo,x,y,0,sprite_get_texture(spr_PinoTextura,0))    
}


En el ejemplo estoy dibujando un modelo, pero tambien funciona si estas dibujando cualquier otra cosa  8) .

Recorda poner al objeto que funciona como camara, o el objeto que funcione como el jugador. La distancia va a variar dependiendo de que escalas uses en el mundo  :P

Si probas con otras distancias, podes usar LODS de modo que ha cierta distancia podes poner un nuevo modelo con menos cantidad de vertices.

if(distance_to_object(obj_Camara) < 512)
{
d3d_model_draw(PinoModelo,x,y,0,sprite_get_texture(spr_PinoTextura,0))    
}
else
{
d3d_model_draw(PinoModeloLOD,x,y,0,sprite_get_texture(spr_PinoTextura,0))  
}


Espero que te sirva  ;D !

________

EDITO:  Para hacerlo aun mas exacto, esta este sctipt creado por Tristiano77, d3d_point_distance(x1,y1,z1,x2,y2,z2), detecta la cercania a?adiendo el eje Z

Link: http://gmc.yoyogames.com/index.php?showtopic=344960