Noticias

Se ha publicado un nuevo servicio, el Portal de Juegos Online

Comunidad Game Maker

Bienvenid@ a la comunidad hispana de Game Maker. Nuestro objetivo es crear videojuegos y dar soporte en castellano de GM. Para mejorar nuestro servicio hemos implantado, como adicion al reglamento general, algunas normas especificas en los subforos más comunes. ¡No olvides informarte antes de participar!.

Autor Tema: [RESUELTO] Suelo 3D no se ilumina  (Leído 531 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Iros

en: Julio 11, 2014, 02:44:50 am
Buenas, he vuelto al 3D y la verdad que sigo teniendo el mismo problema de siempre, pero en vez de ser en :GM8: es en :GMS: (cosa que en :GMS: la iluminación mejoró un poco pero sigo sin saber como usarla al 100%).

El problema es simple, la solución no se, alguien que sepa más del tema que yo de seguro me sabrá responder.

Tengo el juego, cargo modelos, defino un modelo (faro) como punto de luz pero a la hora de crear la luz no se me ilumina el suelo o se ilumina muy poco (o desaparece varias veces). Acá dejo una captura:

Spoiler

El código que tengo es el siguiente:

Evento Create:
light_id = floor( random( 7 ) );
d3d_light_define_point( light_id, x, y, 5, 150, c_white);
d3d_light_enable( light_id, true);

Defino un punto de luz con id aleatoria de 0 a 7 debido a que :GMS: solo maneja hasta 8 puntos de luz.

Ahora la pregunta del millón, ¿cómo puedo solucionar este problema? He visto un ejemplo muy bueno pero utiliza Shaders y la verdad que ni entiendo como funcionan y/o se usan.

Cualquiera que sepa sobre el tema y pueda ayudarme, va a ser muy bien recibida su respuesta :D
« última modificación: Julio 11, 2014, 06:47:53 pm por Iros »

 


No Tienes Permisos Para Dar Puntos
point 0 Puntos

Este tema no recibió puntos.


Desconectado Clamud

Respuesta #1 en: Julio 11, 2014, 04:43:15 am
Hola, lo principal es que falta poner
d3d_set_lighting( true );
y usar random no es necesario, simplemente escribe
light_id = 1;
Además puede ser necesario revisar que los vértices de el piso no estén demasiado alejados del punto de luz (en caso de que la iluminación se haga por vértices), y que la cara visible esté hacia arriba.

 


Desconectado Iros

Respuesta #2 en: Julio 11, 2014, 05:01:46 am
La iluminación la seteo verdadero en la cámara al igual que las sombras, en cuanto a la id, ¿no sería problema con los demás focos de luz o se comportan de manera totalmente separadas?

Y ahora que lo pienso, el piso es un d3d_draw_floor(); y la verdad que es un solo donde los vértices quedan completamente alejados uno de otro, ¿cómo podría hacer una iluminación para ese tipo de modelos?

[EDIT]

Solucionado, dibujé el suelo en varios sectores con el siguiente código en un objeto nuevo.

Evento Create:
model = d3d_model_create();
var xx, yy;
xx = 0
yy = 0
do {
    d3d_model_floor(model,xx*16+16,yy*16,0,xx*16,yy*16+16,0,1,1);
    if xx < room_width {
        xx += 1
    } else {
        xx = 0
        yy += 1
    }
}
until yy > room_height

Evento Draw:
d3d_model_draw(model,0,0,0,background_get_texture(grassTexture));

Y acá una captura de como se ve ahora:

Spoiler

PD: Tengo que arreglar algunos problemas de resolución pero no le hace tanto ahora.
« última modificación: Julio 11, 2014, 06:38:52 pm por Iros »