Alpha for Hair with Diffuse, Opacity and Transparency Files
3 participantes
Página 1 de 2.
Página 1 de 2. • 1, 2
Alpha for Hair with Diffuse, Opacity and Transparency Files
@Beowulf71 @Lefty2000
Recently I was struggling with this process. I wanna convert a hair obj into .msh
The hair has a Diffuse image with an attached Opacity and Transparency image. After merging, this is the final result in Blender with Alpha applied:

I need to clean all the gaps but the Diffuse texture has no solid color blackground. Instead, I tried the 'Clip Alpha' for faces in Blender:


This is what I'm looking for. But I ignore how is that supposed to be "transferred" to the .msh file. Yet, I tried checking the AlphaTest, Alpha, Self Illumination, double-sided and/or normals-flip after vert duplication in Blender. But it's not working in game (looks same as in MED):

My question is: is there any "alpha threshold" way to convert models that associate diffuse+opacity channels?
Recently I was struggling with this process. I wanna convert a hair obj into .msh
The hair has a Diffuse image with an attached Opacity and Transparency image. After merging, this is the final result in Blender with Alpha applied:

I need to clean all the gaps but the Diffuse texture has no solid color blackground. Instead, I tried the 'Clip Alpha' for faces in Blender:


This is what I'm looking for. But I ignore how is that supposed to be "transferred" to the .msh file. Yet, I tried checking the AlphaTest, Alpha, Self Illumination, double-sided and/or normals-flip after vert duplication in Blender. But it's not working in game (looks same as in MED):

My question is: is there any "alpha threshold" way to convert models that associate diffuse+opacity channels?
DibujanteTM-  
- Rol : Director
Mensajes : 7888
Fecha de inscripción : 13/02/2011
Localización : Escribiendo un privado a kubo10
. :
Re: Alpha for Hair with Diffuse, Opacity and Transparency Files
Qué nivel de inglés...
Regolero- Alcaide
- Rol : Director
Mensajes : 10753
Fecha de inscripción : 17/08/2010
Localización : Sevilla
. :. :
. :
Re: Alpha for Hair with Diffuse, Opacity and Transparency Files
Siguiendo un poco el tema, nos puede interesar saber que existe un 'alpha transparency issues' en los peinados 3D cuando éstos se hacen hebra a hebra, es decir, duplicando hebras de pelo colocándolas en distinta posición, de forma que se te queden canales alfas superpuestos y solapados entre sí. Los softwares como Blender, C4D y demás..., permiten hacer el "render" de estos alpha en un orden sin que se note, pero en el juego no es tan sencillo:

Existe una forma de solucionarlo, que es en las opciones avanzadas del MED deshabilitar lo de "Write to ZBuffer", esto hace que ese modelo o material no se renderice siguiendo un orden, sino que lo hace todo a la vez. Sin embargo, cuando dicho modelo se pone delante o detrás de otra textura que tiene un canal alfa (como una ventana) automáticamente se vuelve invisible.
He hecho una pequeña prueba con el MED distinguiendo tres capas que se pueden ver aquí:

El 1 es un solo canal alpha que corresponde a las pestañas. Se ven a la perfección.
El 2 son dos canales alpha que corresponden a las cejas: hay dos texturas para las cejas, cada una con distintas hebras de vello. Al renderizarse la imagen los alpha se solapan y no permite ver la piel.
El 3 son tres canales alpha para el pelo: uno es el cabello en sólido, otro son hebras con alpha aplicado y el tercero es el cuero cabelludo con alpha también.
Sin embargo, en el propio MED he conseguido esto:

Sigo en otro post.

Existe una forma de solucionarlo, que es en las opciones avanzadas del MED deshabilitar lo de "Write to ZBuffer", esto hace que ese modelo o material no se renderice siguiendo un orden, sino que lo hace todo a la vez. Sin embargo, cuando dicho modelo se pone delante o detrás de otra textura que tiene un canal alfa (como una ventana) automáticamente se vuelve invisible.
He hecho una pequeña prueba con el MED distinguiendo tres capas que se pueden ver aquí:

El 1 es un solo canal alpha que corresponde a las pestañas. Se ven a la perfección.
El 2 son dos canales alpha que corresponden a las cejas: hay dos texturas para las cejas, cada una con distintas hebras de vello. Al renderizarse la imagen los alpha se solapan y no permite ver la piel.
El 3 son tres canales alpha para el pelo: uno es el cabello en sólido, otro son hebras con alpha aplicado y el tercero es el cuero cabelludo con alpha también.
Sin embargo, en el propio MED he conseguido esto:

Sigo en otro post.
DibujanteTM-  
- Rol : Director
Mensajes : 7888
Fecha de inscripción : 13/02/2011
Localización : Escribiendo un privado a kubo10
. :
Re: Alpha for Hair with Diffuse, Opacity and Transparency Files
Lo que he hecho ha sido poner cada canal alpha en meshes distintos. Digamos que he utilizado para un costume, un mesh base que es el actor sin pelo ni cejas, y luego he añadido como elementos meshes correspondientes a cada "layer": ceja1, ceja2, pelo1, pelo2...

Con el siguiente resultado:

He llegado a la conclusión de que esos 'Elements' tienen que aparecer ordenados, es decir, de la misma manera que deberían verse en el modelo (primero las hebras de pelo sobre el cuero cabelludo y no al revés, por ejemplo). Cuando hago este proceso, el modelo se renderiza bien como se ve ahí.
Sin embargo, cada vez que vuelvo a MED el modelo se verá como aquí:

Con simplemente darle a "enable alphatest" en cualquier material (sin que siquiera sea de una textura que contenga alpha) automáticamente se renderizan los alpha. Es como si se "trastornara" de alguna manera que no comprendo. De todos modos, no es necesario que en MED se vea bien para que después en el juego se vea bien (he hecho la prueba tanto en rodaje como en postproducción). También me resulta curioso que en esta última imagen el alpha de las cejas está reproduciendo el que sería el alpha del pelo que es el mesh que queda justamente encima.
La conclusión de todo esto es que cuando tengamos modelos con un "alpha transparency issue" debemos añadirlos como elementos para que no transparenten la textura que quede inmediatamente debajo, pero no vamos a poder evitar que se transparente entre sí cuando sea en su propia textura. Sería solucionable si vas hebra a hebra (modo edición en blender + tecla L, y vértice-separate) para ponerlas como meshes distintos, pero solo en un hair que tengo descargado esta operación equivale a más de 1000 hebras/meshes separados para importar (contando por la baja).
Ni tenemos una forma de "automatizar" el importar 1000 meshes como accesorio, ni nos serviría unificando la textura porque el hair se atraviesa siempre entre sí. Ahora, si consigues poner una textura sólida debajo de su alpha y juegas con los ángulos de cámara te puedes apañar un poco como en la tercera imagen del anterior post.
PD. Aunque las pestañas se ven perfectas en la primera imagen que he subido, luego he puesto zoom y comprobado si viéndose de perfil los alpha de cada hebra de pelo se solapan entre sí, y ocurre, solo que no se aprecia porque es una textura diminuta. También es curioso que las cejas se renderizan perfectas cuando no están los otros alpha, y luego cuando éstos se renderizan bien son las cejas las que me fallan jajaj.

Con el siguiente resultado:

He llegado a la conclusión de que esos 'Elements' tienen que aparecer ordenados, es decir, de la misma manera que deberían verse en el modelo (primero las hebras de pelo sobre el cuero cabelludo y no al revés, por ejemplo). Cuando hago este proceso, el modelo se renderiza bien como se ve ahí.
Sin embargo, cada vez que vuelvo a MED el modelo se verá como aquí:

Con simplemente darle a "enable alphatest" en cualquier material (sin que siquiera sea de una textura que contenga alpha) automáticamente se renderizan los alpha. Es como si se "trastornara" de alguna manera que no comprendo. De todos modos, no es necesario que en MED se vea bien para que después en el juego se vea bien (he hecho la prueba tanto en rodaje como en postproducción). También me resulta curioso que en esta última imagen el alpha de las cejas está reproduciendo el que sería el alpha del pelo que es el mesh que queda justamente encima.
La conclusión de todo esto es que cuando tengamos modelos con un "alpha transparency issue" debemos añadirlos como elementos para que no transparenten la textura que quede inmediatamente debajo, pero no vamos a poder evitar que se transparente entre sí cuando sea en su propia textura. Sería solucionable si vas hebra a hebra (modo edición en blender + tecla L, y vértice-separate) para ponerlas como meshes distintos, pero solo en un hair que tengo descargado esta operación equivale a más de 1000 hebras/meshes separados para importar (contando por la baja).
Ni tenemos una forma de "automatizar" el importar 1000 meshes como accesorio, ni nos serviría unificando la textura porque el hair se atraviesa siempre entre sí. Ahora, si consigues poner una textura sólida debajo de su alpha y juegas con los ángulos de cámara te puedes apañar un poco como en la tercera imagen del anterior post.
PD. Aunque las pestañas se ven perfectas en la primera imagen que he subido, luego he puesto zoom y comprobado si viéndose de perfil los alpha de cada hebra de pelo se solapan entre sí, y ocurre, solo que no se aprecia porque es una textura diminuta. También es curioso que las cejas se renderizan perfectas cuando no están los otros alpha, y luego cuando éstos se renderizan bien son las cejas las que me fallan jajaj.
DibujanteTM-  
- Rol : Director
Mensajes : 7888
Fecha de inscripción : 13/02/2011
Localización : Escribiendo un privado a kubo10
. :
DibujanteTM-  
- Rol : Director
Mensajes : 7888
Fecha de inscripción : 13/02/2011
Localización : Escribiendo un privado a kubo10
. :
Re: Alpha for Hair with Diffuse, Opacity and Transparency Files
He tenido incontables veces este problema de transparencias con cabellos, barbas, etc... Y no digamos las distorsiones que produce si tienes bluescreen detrás, por lo que te agradezco este análisis detallado del problema.
En mis anotaciones, tengo lo siguiente al respecto:
Lo de duplicar me suena que mejoraba. Lo otro, dudo de su veracidad
Desde luego son apaños chapuceros en comparación a tu estudio.
También me ha pasado que el modelo cambia o empeora si lo reimportamos a Blender:
No sé, no puedo aportar mucho más, pero te agradezco la información
En mis anotaciones, tengo lo siguiente al respecto:
A veces, al aplicar el canal Alpha en MED se transparenta todo por detrás del pelo, decorado, cráneo… Esto es visible ya en Blender. Parece que podemos hacer dos cosas para mejorar este problema. 1 – normal – Flips para duplicar los vértices del pelo por la otra cara. 2 – Guarda en .blend, haz append or link a los elementos por separado (empty, armature y meshes). Por alguna razón, el modelo parece mejorar.
Lo de duplicar me suena que mejoraba. Lo otro, dudo de su veracidad

También me ha pasado que el modelo cambia o empeora si lo reimportamos a Blender:
Muchas veces, sobre todo con actores externos que hemos metido ya al juego, veremos que si queremos hacer alguna modificación (recuerda que también puede hacerse durante la postproducción), al reimportarlos en Blender no quedan luego igual. Parece que al haber pasado el modelo por el MED y activado canales alpha, el Blender no interpreta esos datos igual y las textuas con canal alfa pueden verse peor, cambiar su brillo o tono o transparentar más de lo debido.
Para modificar uno de estos modelos parece preferible, abrirlo en MED (carga directamente el que ya está metido en el juego), deshabilita todos los alphas y guárdalo en el espacio de trabajo. Ahora ya puedes abrirlo en blender.
Al parecer, si tienes una versión que se ve bien en el juego pero quieres modificarla (sincro labial y texturas, por ejemplo) el problema viene si pasas por el MED. Si evitamos pasar por el MED, sobreescribiendo el .msh original con nuestra modificación, resolvemos el problema de los canales alpha y transparencias extrañas.
No sé, no puedo aportar mucho más, pero te agradezco la información

kubo10-  
- Rol : Director
Mensajes : 7485
Fecha de inscripción : 28/01/2015
Localización : Cantabria
. :
Re: Alpha for Hair with Diffuse, Opacity and Transparency Files
Gracias kubo.
Sí, efectivamente lo del flip fue de lo primero que probé, junto con duplicar las texturas de las hebras y estirarlas en un esfuerzo por "tapar los huecos" del alpha. Aunque es cierto que mejora la imagen, a veces también lo empeora
pero no me lo resuelve. De todos modos, he vuelto a trastearlo con tres opciones.
1: Duplicado y flip.
2: Duplicado y separado en otro mesh (habría que cuidar que no se sobrepasen los 65k vértices por grupo).

3: La opción de ir "hebra a hebra". Es fácil con el UV Mapping cogiendo los vértices asociados a cada hebra y separándolos. También puedes seleccionar vértices al azar y con la tecla L te coge la hebra a la que está asociada. He automatizado el proceso seleccionando todos los vértices y con los atajos P - Separate by lose parts (todo en modo edición). Te genera automáticamente las hebras, pero van a aparecer más de 1000 y pico meshes. Si previamente has exportado a .msh con el alfa aplicado, estos meshes tendrán el alpha también y no tendrás que tocar nada. ¿El problema? Que todos ellos van asociados al mismo material, luego el juego no renderizará el alpha material a material, ni parece que lo haga mesh a mesh.
También Blender saltará con un error de que tienes más de 255 meshes asociados a un grupo, por lo que he generado tantos grupos como necesitaba para almacenar los 1800 meshes que se me han creado. Esto es fácil de hacer porque el blender le pone números correlativos, y sacas la cuenta de los 250 de límite fácil.

Si, finalmente, generásemos un material por cada mesh, el primer problema sería que TM solo permite de máximo 127 materiales por .msh (ni por grupo ni por mesh, si no recuerdo mal). Si se hiciera la titánica labor de hacer tantos .msh de 127 materiales, como 1800 .msh, y los fuéramos importando de uno en uno en MED (a lo mejor descubriríamos incluso un límite de accesorios que se pueden agregar
) no sé cómo quedaría, porque no lo voy a comprobar. En todo caso, un Decimate para reducir el número de vértices simplificaría esta labor, pero seguiría quedando la duda de si el alpha se renderiza en orden de material o de mesh.
Para intentar resolver esa duda existencial, he hecho la prueba con dos únicos materiales, uno para todo el pelo en general y otro para una hebra específica de pelo. He puesto ésta encima de la otra y la he agregado como elemento también. Se sigue viendo igual, así que esfuerzo en vano
Lo que comentas de que el mod empeora si lo pasas por MED y tal, lo he tenido en cuenta quitando MED por costumeeditor y en ocasiones directamente editando el .msh desde el 010 editor. Con las texturas en .dds y puestas tanto en la carpeta general de texturas como en la carpeta de 'hair' por si, supongamos, el alpha fuera en un orden diferente según si se tratase de la cara, cuerpo, accesorio, etc. En definitiva, el problema del alpha aparece cuando dos materiales se solapan entre sí, como si un mismo material en su propio mesh se solapa entre sí el alpha. El famoso 'clip alpha' de Blender lo he intentado replicar a través del 010 Editor con el alphapervertex y todos los alpha que aparecen en los flags, siendo el resultado más favorable pero al mismo tiempo inservible el del ZBuffer.
Se agradecen los ánimos. Los puñeteros shaders del juego
La solución está en coger un peinado de pocos vértices, más textura con fondo que con transparencia, y luego usar buenos ángulos de cámara 
Sí, efectivamente lo del flip fue de lo primero que probé, junto con duplicar las texturas de las hebras y estirarlas en un esfuerzo por "tapar los huecos" del alpha. Aunque es cierto que mejora la imagen, a veces también lo empeora

1: Duplicado y flip.
2: Duplicado y separado en otro mesh (habría que cuidar que no se sobrepasen los 65k vértices por grupo).

3: La opción de ir "hebra a hebra". Es fácil con el UV Mapping cogiendo los vértices asociados a cada hebra y separándolos. También puedes seleccionar vértices al azar y con la tecla L te coge la hebra a la que está asociada. He automatizado el proceso seleccionando todos los vértices y con los atajos P - Separate by lose parts (todo en modo edición). Te genera automáticamente las hebras, pero van a aparecer más de 1000 y pico meshes. Si previamente has exportado a .msh con el alfa aplicado, estos meshes tendrán el alpha también y no tendrás que tocar nada. ¿El problema? Que todos ellos van asociados al mismo material, luego el juego no renderizará el alpha material a material, ni parece que lo haga mesh a mesh.
También Blender saltará con un error de que tienes más de 255 meshes asociados a un grupo, por lo que he generado tantos grupos como necesitaba para almacenar los 1800 meshes que se me han creado. Esto es fácil de hacer porque el blender le pone números correlativos, y sacas la cuenta de los 250 de límite fácil.

Si, finalmente, generásemos un material por cada mesh, el primer problema sería que TM solo permite de máximo 127 materiales por .msh (ni por grupo ni por mesh, si no recuerdo mal). Si se hiciera la titánica labor de hacer tantos .msh de 127 materiales, como 1800 .msh, y los fuéramos importando de uno en uno en MED (a lo mejor descubriríamos incluso un límite de accesorios que se pueden agregar


Para intentar resolver esa duda existencial, he hecho la prueba con dos únicos materiales, uno para todo el pelo en general y otro para una hebra específica de pelo. He puesto ésta encima de la otra y la he agregado como elemento también. Se sigue viendo igual, así que esfuerzo en vano

Lo que comentas de que el mod empeora si lo pasas por MED y tal, lo he tenido en cuenta quitando MED por costumeeditor y en ocasiones directamente editando el .msh desde el 010 editor. Con las texturas en .dds y puestas tanto en la carpeta general de texturas como en la carpeta de 'hair' por si, supongamos, el alpha fuera en un orden diferente según si se tratase de la cara, cuerpo, accesorio, etc. En definitiva, el problema del alpha aparece cuando dos materiales se solapan entre sí, como si un mismo material en su propio mesh se solapa entre sí el alpha. El famoso 'clip alpha' de Blender lo he intentado replicar a través del 010 Editor con el alphapervertex y todos los alpha que aparecen en los flags, siendo el resultado más favorable pero al mismo tiempo inservible el del ZBuffer.
Se agradecen los ánimos. Los puñeteros shaders del juego


DibujanteTM-  
- Rol : Director
Mensajes : 7888
Fecha de inscripción : 13/02/2011
Localización : Escribiendo un privado a kubo10
. :
Re: Alpha for Hair with Diffuse, Opacity and Transparency Files
Es una de esas muchas cosas que he asumido que no quedan bien, pero puedo vivir con ellas
Ha habido alguna vez, creo recordar, que he dejado sin aplicar el alpha porque quedaba mejor el pelo en "modo mazacote" que con la transparencia
Encontrar una solución fácil y rápida de aplicar sería genial, pero ya solo el esfuerzo que has hecho es de reconocer. De todas formas, entiendo que con tu sistema de separar en meshes distintos cada uno de esos elementos el modelo mejora notablemente, no?
Leía hace tiempo que, preguntado Ibáñez porque decidió que Mortadelo fuera calvo y Filemón tuviera dos pelos, contestó que para no tener que perder tiempo dibujando cabellos
Aquí nos pasa un poco lo mismo.
Edito: En Rain City el protagonista, Nick, con esos pelos sueltos de la barba me dio muchos problemas. Ya no recuerdo como era el tema, pero había escenas en las que se transparentaba la pantalla azul tras el propset. La mayoría de las veces lo resolvía aplicando chroma key, pero creo que luego llegué a rodar en una black screen que creé para reducir el problema.

Ha habido alguna vez, creo recordar, que he dejado sin aplicar el alpha porque quedaba mejor el pelo en "modo mazacote" que con la transparencia

Encontrar una solución fácil y rápida de aplicar sería genial, pero ya solo el esfuerzo que has hecho es de reconocer. De todas formas, entiendo que con tu sistema de separar en meshes distintos cada uno de esos elementos el modelo mejora notablemente, no?
Leía hace tiempo que, preguntado Ibáñez porque decidió que Mortadelo fuera calvo y Filemón tuviera dos pelos, contestó que para no tener que perder tiempo dibujando cabellos

Edito: En Rain City el protagonista, Nick, con esos pelos sueltos de la barba me dio muchos problemas. Ya no recuerdo como era el tema, pero había escenas en las que se transparentaba la pantalla azul tras el propset. La mayoría de las veces lo resolvía aplicando chroma key, pero creo que luego llegué a rodar en una black screen que creé para reducir el problema.
kubo10-  
- Rol : Director
Mensajes : 7485
Fecha de inscripción : 28/01/2015
Localización : Cantabria
. :
Re: Alpha for Hair with Diffuse, Opacity and Transparency Files


Es verdad que algunos peinados quedan mejor que otros incluso sin el alpha, sobre todo los que no son rubios

La clave está en los peinados. De hecho, puedes hacerte una idea de tres peinados generales, en TM peor conforme más vértices tengan:
1) Los que ves que son un mesh íntegro sin apenas alpha, en plan peluquines. Pueden tener texturas de cabello real como en TM, o texturas más anime tipo Sims, pero son los que menos problemas te dan. Incluso hay editores 3D que te los generan pero super pixelados y desenfocados.

2) Los que van hechos por capas o layers, pero éstas se apilan una detrás de otra. A menudo los identificas porque se ve una línea blanca divisoria (de alpha) entre una capa y otra. Estos son los que mejor quedan después en TM, según el ángulo te pueden molestar más o menos.

3) Los que, plenos de vértices, están hechos por capas pero entrelazados entre sí. Son los más "realistas", pero los que más te entorpecen en TM.

DibujanteTM-  
- Rol : Director
Mensajes : 7888
Fecha de inscripción : 13/02/2011
Localización : Escribiendo un privado a kubo10
. :
Re: Alpha for Hair with Diffuse, Opacity and Transparency Files
Para explicar las diferencias, sobre todo, entre el tipo 2 y el tipo 3, la respuesta parece estar en lo que es el proceso de creación del propio peinado.
Textura del tipo 2:

Textura del tipo 3:

El segundo tipo tiene la textura "sólida" en el sentido de que no hay fondos opacos, mientras que el tercer tipo tiene más transparencia que textura propia. Eso hace que, incluso aunque no se trabasen entre sí los alpha, se viera continuamente transparencia en todo el modelo.
Textura del tipo 2:

Textura del tipo 3:

El segundo tipo tiene la textura "sólida" en el sentido de que no hay fondos opacos, mientras que el tercer tipo tiene más transparencia que textura propia. Eso hace que, incluso aunque no se trabasen entre sí los alpha, se viera continuamente transparencia en todo el modelo.
DibujanteTM-  
- Rol : Director
Mensajes : 7888
Fecha de inscripción : 13/02/2011
Localización : Escribiendo un privado a kubo10
. :
Página 1 de 2. • 1, 2
Página 1 de 2.
Permisos de este foro:
No puedes responder a temas en este foro.