Buenas! Pues estoy probando cosas en 3D, pero las luces me tienen loco. Tras habilitarlas, pongo esto en el objeto bombilla
//dibuja luz
d3d_set_lighting(true);
d3d_set_shading(true);
draw_set_color(c_white);
d3d_light_enable(index,true);
d3d_light_define_point(index,x,y,z,900000,color);
As?, cada objeto bombilla tiene su propio index, altura y color, que defino en creation code de la room de cada objeto. Pero todo a lo que no le da la luz QUEDA TOTALMENTE NEGRO.
Lo que quiero es que haya RADIACI?N DIFUSA, REFLEXI?N DE LA LUZ o como se llame, o sea, que aunque no le de la luz, se vea un poco oscuro, pero se vea. Podr?a decirse que quiero que TODO SEA VEA... un 70% oscuro, y luego, a lo que le de la luz, claro. Porque que se vea NEGRO TOTALMENTE lo opuesto a la luz, es fatal. Qu? hago?
Podr?a crear m?s luces, pero, por muchas luces que haga, siempre habr? una parte de un objeto con sombra. Alguna idea?
Podr?a usar tambi?n d3d_light_define_direction, pero no s? exactamente c?mo funciona puesto que los argumentos son la direcci?n, pero no dice origen de la luz!
Y aclaro, que sin luz el juego se ve?a bien, pero MUCHAS COSAS se confunden, ya que, al no haber luz, cuesta distinguir cosas, conque necesito la luz para que haya un buen 3D...
Un Buen Tutorial
Wow, gracias, mola mucho y est? completo, peeero... sigue vi?ndose el lado contrario a la luz TOTALMENTE NEGRO, y eso era lo que quer?a evitar! D: no puedo hacer reflexi?n de luz para que nada quede oscuro al 100%?
Y a todo esto, he visto que estoy OBLIGADO a poner valores de potencias de dos al tama?o de los sprites si quiero poder usarlos bien como texturas (2, 4, 8, 16, 32, 512, 1024...)
En gm 8.1 hay una funci?n que se llama "d3d_ligth_define_ambient" no estoy seguro de para que sirve pero creo que podr?a resolver tu problema :-\.
No encuentro informaci?n sobre esa funci?n... =S
Bueno, he colocado 4 luces, una por esquina, quiz?s colocando 4 luces por pantalla (debido a que ning?n objeto bloquea luz) pueda lograrlo, lo hice y quedo bastante bien, ninguna parte oscura! Excepto dos paredes totalmente negras (a la que la luz les da...) extra?o...
DarkKRuleR, yo tampoco tengo el gm8.1, tengo el 8.0
no pregunten como, pero alcanc? a probar el gm8.1 pro y pude hacer un proyecto usando d3d_ligth_define_ambient() y es el mejor cambio que podr?an haber hecho, pero no encuentro forma de recrearla en Gm8.0,
DarkKRuleR, ?c?mo hiciste, podr?as explicarme un poco mejor? me interesa usar las luces en gm8.0 pero quedan horribles sin d3d_ligth_define_ambient()
[gml]//dibuja luz
d3d_set_lighting(true); //DEBE SER TRUE
d3d_set_shading(true);
draw_set_color(c_white);
d3d_light_enable(1,true); d3d_light_define_direction(1,1,0,0,make_color_rgb(255,255,255));
d3d_light_enable(2,true); d3d_light_define_direction(2,0,1,0,make_color_rgb(200,200,200));
d3d_light_enable(3,true); d3d_light_define_direction(3,0,0,1,make_color_rgb(155,155,155));
d3d_light_enable(4,true); d3d_light_define_direction(4,-1,0,0,make_color_rgb(255,255,255));
d3d_light_enable(5,true); d3d_light_define_direction(5,1,-1,0,make_color_rgb(200,200,200));
d3d_light_enable(6,true); d3d_light_define_direction(6,0,0,-1,make_color_rgb(155,155,155));[/gml]
Bien, con eso, se ve medianamente bien. Bueno, ya no es todo a lo dibujo animado sin borde negro, se pueden distinguir (casi) todas las caras, con eso, aunque no es perfecto, es bastante bueno. Y he conseguido poder dibujar sprites como barras de vida y dem?s poniendo d3d_set_lighting(false); y volvi?ndolo a activar (me equivocaba desactivando las luces cuando deb?a desactivar la luz en general)
Alguien sabe otra soluci?n que las luces de distintos colores blanco y gris de 6 direcciones? o quiz?s otra disposici?n u otras direcciones que har?an verse mejor...
La ?nica pega de esto es que debo ponerlo en un objeto general, conque eso se aplica a toda la pantalla. Toda la pantalla estar? iluminada con la misma intensidad al no poder poner luces sueltas, conque si quiero pantallas m?s oscuras deber? hacerlas en rooms distintas (eso no preocupa, me preocupa no poder poner luces sueltas, pero dudo que sea tan malo...)
Mira,
ObjetoSombra
Create//
z = 0
Draw//
draw_set_alpha(0.5)
d3d_draw_floor(x-32,y-32,z+0.1,x+32,y+32,z+0.1,background_get_texture(bac_shadow),1,1)
draw_set_alpha(1)
En el draw de tu objeto player o un objeto una caja nose hay tu ves,
if place_meeting(x,y,obj_shadow)
{
draw_set_alpha(0.2)
d3d_draw_ellipsoid(x-12.01,y-12.01,z,x+12.01,y+12.01,z+24.01,background_get_texture(bac_shadow),1,1,24)
draw_set_alpha(1)
}
Esto creara un cuadrado , se ver? como sobra y el que pase o este hay se osurecer?,tal vez Ayude