UV Mapped graphics not showing in render

I’m puzzled. An image of text and graphics is supposed to appear on the yellow cylinder, using UV mapping, but it does not show. I’ve done UV mapping before, many times, usually forgetting some detail but fixing it within minutes. But this time, I don’t see what I’m doing wrong. What’s weird is that in the 3D view, Texture and Material shading show the image, where it ought to be. Rendered, preview or final, does not show it.

The Cycles node setup, two 3D views, and the UV image editor. The 3D views are from the final camera position, one a preview render (top) and the other a Texture view (middle). The UV map was generated by Project from View with the view adjusted to look straight on the side of the cylinder.

I chopped out most of the objects in a copy of the .blend file and uploaded it for anyone’s inspection. The .png file for the UV image is 800x400 pixels, mostly transparent with opaque black lettering. My Cycles node setup doesn’t use the alpha channel.

What needs to be fixed for the text to show on the yellow cylinder?


NoLabelCapXXX.blend (731 KB)

Well, there you have it, then.
You’re telling Cycles to mix the material’s diffuse color based on the color information from the image file. So, Cycles is analyzing the image for contrasting (preferably black and white) colors - but the only available color data is the opaque letters. The rest is alpha = nul color information.

Cycles gets a 0 from the black and nothing from the alpha, resulting in the MixRGB node always choosing the top (yellow) color. Mix the color based on the alpha instead and all should be good. And btw:

Okay, found the problem. What was I using a .png image with an alpha channel for anyway? I flattened it to be black on white. Problem solved.

Is there a special reason why you don’t want to use the alpha channel? Why go through the hassle of editing the image texture, if you can achieve the very same result by just changing one single node connection?