Silhouette-style outline?
chris the stranger
Posts: 132
in New Users
Is there a way, be it script or shader set, to render a model with an 'outer-outline'? An outline that only appears on the outer-edges of the model, but not where model overlaps itself. I know that's not the best description, so I've attached a very primitive example of what I'm talking about. I can do this in any image-editing program, but since this is going to be something done to hundreds upon hundreds of renders, I'd like to find ways to save time wherever I can in the process.
silhouette_outline.png
768 x 512 - 27K
Comments
For 3Delight, there is pwToon. For Iray, there is LineRender9000.
To be honest, I'm not sure either one will give you a true silhoutte outline.
Yeah, that's a tricky one. The only way that I can think of that might work, would be to use a plain white surface for everything on the figure, add an ambient light to the scene to give you an even illumination and use 3Delight to render, as that will allow you to turn shadows off in the light parameters, so there will be no internal edges created by shadows on the figure. That will possibly result in a white silouette. If it is an outline that you are looking for, I'm not certain the options that L'Adair suggested will ignore the internal geometry entirely or not. You may still end up having to pull the images into a photo editing program and trace the silouette if that is what you are after.
I think it's a lot less work to get a silhouette in Iray, but that still leaves the OP with the need to create the lines in a graphics editor, which is what s/he was hoping to avoid.
For any who are interested, this is the easy way to get that silhouette in Iray:
If I learned some scripting, I could possibly set up a couple cameras to do two separate renders. One that handles the regular rendering, and one that has the focal distance set *ever-so-slightly* lower. I know LR9K does some script trickery to replace all of a scene's materials with solid color ones for some of its cameras, so if I did that with solid black diffuse material, that could create a full silhouette. I'd have to overlap the original render and the silhouette version, but it'd work.
Something tells me this project's going to involve a lot of scripting regardless, just for 2D image processing. I should probably stop trying to do it in DAZ, but I thought the two-camera method would be an interesting approach.
I've never done something like that, but maybe you could turn off the lights and not render the dome. That way you'll just have a black silhouette, and then you can do whatever you want with it.
Yes. That works. It's something I do any time I need a mask for an object. See this post above for specific steps.
However, the OP wanted to avoid adding the outlines in a graphics editor because of the need to do "hundreds upon hundreds of renders."
And I wasn't exaggerating. Some behind-the-scenes stuff: I'm creating sprites for a project I'm currently in the pre-production phases of. I wanted to see if rendering 3D objects to create 2D assets was a viable path, since my eyesight precludes me from doing pixel art (at an acceptable pace). But there was one big roadblock getting in the way: the soft outer edges. I could turn pixel-filtering and sample numbers down to make the edges all-or-none in the alpha channel, but it created an unacceptable level of noise both on the model, and on around the edges of smaller details such as buckles. My thought was, 'if I can create a solid black outline that starts from the model and goes OUT, rather than going inward, that would be an acceptable compromise to the scattered opacity around the edges of the model'.
Well, the good news is, it turns out that the transparencies do not cause problems for the normal-map generation in the program I use. Through what I could only describe as (divine or dumb) luck, I don't have to beat my head against a wall on this issue anymore. Although, if I DID want to automate the process of creating a silhouette outline, I think using the 2x camera trick and compositing the renders would have been the way to go. LR9K uses multiple renders and compositing in one go, so it seems entirely possible. But now I can breathe a sigh of relief, that I won't have to worry about learning all the ins and outs of Daz's scripting.
I'm glad to hear you figured out something that works. Best of luck on the project.