Diciembre 10, 2015, 10:21:12 PM Ultima modificación: Diciembre 11, 2015, 12:13:43 AM por DarkKRuleR
Buenash! Pues esto me está rompiendo la cabeza... a ver, funcionar funciona genial, pero trae muchos pequeños detalles que me encantaría solucionar.



Esa es la imagen. Fijáos en que tiene partes con alpha entre 0 y 1, intermedios. Hay una al fondo y una al frente.

Si primero dibujo la del fondo y luego la del frente todo va bien, pero si dibujo al revés... la del frente "se come" parte de la del fondo, y la del fondo aparece con una parte desaparecida al solaparlas. Ya intento dibujar en el orden correcto, pero sumado a que hay por todas partes y que tanto sus posiciones como la cámara pueden estar en cualquier parte, es complicadísimo, y siempre hay varios errores de éstos mientras que la otra mitad es correcto. ¿Alguna opción que pueda tocar por ahí para arreglarlo, viendo (CREO) que NO ES VIABLE dibujarlos TODOS en el orden correcto?



Di importancia al alpha, porque si el sprite sólo tiene alphas de 1 (opaco) y 0 (transparente) sin píxeles intermedios, entonces el error es mitigado, y en su lugar simplemente aparece un borde blanco alrededor del frontal (al dibujarlo antes que el del fondo). Molesta, pero menos. Y es necesario hacer alphas intermedias así que...

habrá, por todo el escenario 3D, MUCHOS de ellos, en posiciones cambiantes y la cámara se mueve constantemente, es imposible poder alterar el código para dibujar en orden de los más profundos a los más cercanos...

por como se ve en la imagen, ese sprite no tiene canal alpha ni 0 ni intermedio ni nada xD
[spoiler="ola k ase clickarme o k ase"]la imagen no se quita xD
[/spoiler]

A qué te refieres con que no tiene canal alpha? Qué es? El sprite tiene píxeles que tienen alpha entre 0 y 255, si no es eso se me escapa algo.

en la imagen, no me da la impresión que tengan alpha... osea, tenían en el momento de dibujarlo, pues se ven los tonos de grises, pero al guardarse, posiblemente se han guardado sin alpha, sino que con varios tonos de grises opacos, puede ser? (pregunto)
[spoiler="ola k ase clickarme o k ase"]la imagen no se quita xD
[/spoiler]

La imagen original está en el editor de game maker, y ahí sí tiene alpha, totalmente asegurado. La imagen nunca "se guarda". El problema está en alguna opción de GM o algo, alguna forma de evitar este problema sin tener que dibujar lo que hay más atrás primero, pues lo veo imposible como describí

Cita de: DarkKRuleR en Diciembre 10, 2015, 11:28:44 PM
La imagen original está en el editor de game maker, y ahí sí tiene alpha, totalmente asegurado. La imagen nunca "se guarda". El problema está en alguna opción de GM o algo, alguna forma de evitar este problema sin tener que dibujar lo que hay más atrás primero, pues lo veo imposible como describí
¿Usas el editor de GM para crear tus sprites? Intenta guardarla como PNG en el editor de GM (CTRL+S) y subir el archivo aquí.

Está adjuntado. Es justamente lo que os había pasado, sólo que lo subí a subefotos.com, pero lo generé como PNG desde el editor... yo al menos lo veo con alpha xD

Y os digo, si dibujo los del fondo antes y los de delante después, funciona al 100% bien, dudo que el problema esté en el sprite sino en otras opciones, porque el problema es ese, que no siempre podré dibujarlo todo en ese orden, y cuando no puedo, es cuando ocurre el problema

correcto, tiene alpha xD lel, que raro :S
[spoiler="ola k ase clickarme o k ase"]la imagen no se quita xD
[/spoiler]

d3d_set_zwriteenable( false );

Por ahora lo he resuelto con eso. Es posible que produzca efectos raros, no sé hasta qué punto, si alguien sabe o tiene ejemplos de qué errores produce, me gustaría saberlo. Pero CREO que no afectará a mi juego (usa 3D de una forma rara), y si afectase podría desactivarlo sólo para dibujar esta parte. Por ahora va bien :D

Si lo desactivas sólo para dibujar esa parte y luego lo activas, creo que no habrá problemas. El buffer z almacena profundidades de pixeles para saber si un pixel se dibuja en lugar de otro, según la profuncidad de los objetos.

Probablemente otra solución sea que ajustes el dibujo de tus objetos, quizás no sea tan difícil. Depenede de cómo tengas organiazdo tu juego. Por ejemplo, asignar la depth dinámicamente de los objetos según su distancia a la cámara.

He estado haciendo pruebas, y sin duda, lo desactivaré sólo en esa parte. Preveo que en otras me de errores... pero justo en esta parte es SENCILLAMENTE PERFECTO. Me ha permitido efectos increíbles, por ejemplo hacer una "nube" y después dibujar unos ojos, y con eso tengo digamos un fantasma (la nube) y se le ven los ojos, sin que el objeto/modelo de la nube colisione con los ojos, pues éstos se dibujan al 100% por encima. Una mezcla perfecta. A parte de solucionar lo anteriormente dicho