Buscando hacer texturas para Unity3d, y estoy atrapado en lo que parece ser una etapa simple. Mi objetivo es crear una imagen RGBA, con información de color para cada píxel, y un canal alfa separado. Estos dos componentes se introducen en Unity como color base y fuerza de reflexión, respectivamente. (Usando material "reflectante / difuso topado").
Si uso herramientas de enmascaramiento en Photoshop, puedo borrar partes de la imagen de salida (transparencia). Sin embargo, me gustaría mantener la información de color RBG original cuando salga, y no solo tener áreas "en blanco". Además, sería bueno si pudiera hacerlo de forma no destructiva, es decir. el canal alfa final depende de una capa estándar, o está construido a partir de un objeto de ruta, etc.
Tengo el mismo problema con The Gimp.
Cualquier ayuda en esto sería muy apreciada.
(Si Photoshop / Gimp no son las herramientas para el trabajo, ¿alguien puede recomendar una mejor?)
Creo que la mejor manera de hacer esto en The GIMP es usar una máscara de capa (haga clic con el botón derecho en una capa y cree una máscara).
La capa tendrá entonces dos "imágenes" asociadas: la imagen RGBA y una máscara de capa en escala de grises que actúa como un canal alfa adicional (multiplicativo). Puede hacer clic en cualquiera de estas imágenes para seleccionar cuál se editará.
Si mantiene presionada la tecla CTRL y hace clic en la máscara de capa, verá solo la imagen RGBA (esto deshabilita la máscara). Si mantiene presionada la tecla ALT y hace clic en la máscara de capa, verá solo la máscara de capa.
Cuando exporta una imagen con una máscara de capa activa, la imagen exportada retendrá la información de color incluso de las áreas que la máscara hace completamente transparentes.
Para sus propósitos, puede encontrar efectivo componer su canal alfa en una capa separada (RGBA); luego, cuando haya terminado, puede copiar esta capa en la máscara de capa de la capa original.
fuente
En el GIMP, una forma sería dividir la imagen en capas para cada canal. Seleccione "Colores-> Componentes-> Descomponer" y elija RGBA o cualquier canal que desee dividir en capas. Luego edite sus canales alfa y de color individuales como mejor le parezca (deben ser en escala de grises), luego vaya a "Colores-> Componentes-> Componer", elija el diseño de canal deseado y elija las capas que usará para cada canal.
Además, puede usar el diálogo "Canales". Debería ser parte de las cosas predeterminadas de la caja de herramientas, pero si no puede seleccionar "Windows-> Diálogos acoplables-> Canales". Puede alternar la visibilidad de cada canal de color, y al hacer clic y resaltar los nombres de los canales, puede elegir cuáles editar individualmente (parece que conserva el color con alfa, aunque no veo una manera de "ocultar" el alfa mientras edición sin ocultar toda la imagen ...).
fuente
Para escribir su propio procesador de contenido (como lo sugiere @Andrew Russell) específico para Unity3D, coloque este script en su
Assets/Editor
carpeta y combinará cualquier imagen*-Base.*
con un*-Alpha.*
archivo con un nombre similar y modificará la textura original:Adaptarse a sus propias convenciones de nomenclatura de archivos de activos.
fuente
Una alternativa es escribir su propio procesador de contenido para realizar la operación que desea. De esa manera, podría simplemente darle un nombre especial a su capa de "reflectividad" (o incluso múltiples capas de reflectividad), y hacer que el procesador de contenido ponga esos datos en el canal alfa por usted. (O, de hecho, implemente cualquier tipo de proceso que desee).
Si estaba usando XNA y The GIMP (esto es lo que uso y estoy familiarizado), entonces sería muy fácil agregar este importador XCF a su canal de contenido y realizar las modificaciones necesarias para procesar capas especialmente nombradas.
Como está utilizando Unity, no XNA, no estoy familiarizado con las opciones de canalización de contenido que tiene disponibles. Pero quizás pueda adaptar el código vinculado para que funcione dentro de su proceso de contenido.
fuente