Help Requested: Post Render distortion

  • Poser Ambassadors

    As usual, wikipedia already has a good writeup and I can just refer you to that for the definition of Phong shading.

    Click here to read about Phong Shading at Wikipedia

  • Poser Ambassadors

    Damn 30-second edit timeout. I'm going to have to be careful.

    I wanted to revise earlier post - Poser is doing Phong interpolation, but not always Phong shading. It is only doing Phong shading if you use the traditional Diffuse node and the traditional Specular node, or the built-in Poser Surface root node versions of those two things (top five inputs).

    Phong interpolation specifically identifies the process of calculating a false normal for every point of a polygon based on interpolating the normals as defined at the vertices. Phong shading then uses the interpolated normal as input to the (trivial) Diffuse + Specular nodes.

    If, instead of those Diffuse + Specular nodes, you use Scatter and Fresnel-adjusted Reflection, then it is no longer the Phong reflection model, and so this combination is not Phong shading.

  • Poser Ambassadors

    Now you may ask how do we control the Phong Interpolation feature. Can we turn it off in render settings - no. Can we turn it off for each prop - no. It's always part of the rendering algorithm.

    But be aware I am speaking with precision here. The Phong Interpolation "feature" (the ability to do that form of calculation) is not the same as the "effect". The feature is always on, but the effect of it is NOT!

    The Phong Interpolation feature can be seen here on the blue bucky but not the red one. How is that done?


    It is done with Crease Angle - the same one that we use to affect smoothing.


    (For purposes of less typing for me, I'm going to refer to Smoothing plus Phong Interpolation as S+PI)

    Both S and PI examine the angle formed between the normals of two adjacent polygons, where adjacent means they share an edge (the line between a pair of vertices). When a shared edge exists, S+PI is activated. Shared means literally the same two vertices (i.e. what we call welded), not just some vertices that happen to be in the same positions but have different identities or indexes.

    When that angle between the normals is BELOW the Crease Angle, S+PI produces an effect that incorporates a surface that smoothly curves across that shared edge. When that angle between the normals is ABOVE the Crease Angle, S+PI ignores the shared edge and draws those polygons as if they were not touching. That doesn't mean they're FLAT! Other edges could be creating a fake curve. Or in the case of a 4+ sided polygon, the vertices may not be coplanar to begin with and imply a curved surface between them.

    Thus, the Crease Angle defines a threshold. Above the threshold, S+PI deems the shared edge is irrelevant.

  • Poser Ambassadors

    Here I have set the crease angle to 38 degrees on the blue ball, 35 on the red.

    The bucky ball geometry has shared edges, all above 35 degrees, some below 38 degrees, some above 38 degrees. The S+PI effect is now mixed on the blue bucky, because some of the edges are below the threshold and some are above. Nobody would do this on purpose - I'm just doing this to show (reveal) the inner working of the algorithm.


  • Poser Ambassadors

    What about SuperFly? SuperFly does not have polygon smoothing, but it DOES have Phong Interpolation and it does respect the same Crease Angle as FireFly.


  • @bagginsbill I'm just browsing the relevant sections of the Poser manual before I suggest that all of this information should be in there, because some of it is, though without your detailed explanations it's still mostly left as an "exercise for the reader".

    I wonder if you could comment on Smoothing IDs (from the OBJ geometry, but assignable in the Grouping Tool) and whether SuperFly follows the FireFly scheme of creasing between facets in different smoothing groups (groups with a different smoothing ID "s <n>" lines in OBJ files) but not between facets in the same smoothing group?

  • Poser Ambassadors

    Yes there is additional logic related to smoothing group ids. For an edge to be considered "shared", the two polygons have to belong to the same smoothing group. Even if an edge is welded, it is effectively unwelded for the purposes of S + PI. Of course SuperFly doesn't have smoothing, but its PI is working this way.

    I changed my red bucky to crease angle 80 (all edges are applicable for S+PI), and placed the upper half of polygons in smoothing group 2 and lower half of polygons in smoothing group 1.

    Rendered in SuperFly, the PI does not go across edges shared by group 1 and 2.

    Rendered in SuperFly, the PI also stops, AND the Smooth Polygons effects have actually torn the mesh at the boundary between the two smoothing groups, because the curves produced do not agree between the two groups.


  • @bagginsbill Uh, SuperFly first image and FireFly second image? (Judging by the Phong Interpolation of the previous two renders... and the non-smoothed boundary of the blue buckyball in first image)

  • Poser Ambassadors

    Sorry, yes second is FireFly. I really do not understand why we have to have the ridiculously short edit time for everybody. New users, perhaps, but there's no question that I write enough and need it enough to justify letting me correct my stuff. It's really more than annoying - it's an absolute insult.

  • Poser Ambassadors

    Also did some testing with my preferred FireFly and SyperFly render settings.
    For FireFly => Smoothing is enabled at all times with a default Crease angle of 180°.
    When an obj shows "blowing up" I simply disable the Smoothing for that obj file per vertex group.

    FireFly results with the Cane from the props folder as demo.
    See that the last Cane with Smooth and SubD ENABLED give the smoothest result.

    For SuperFly with the same Cane setups this gives the following :
    SuperFly does the SubD but does not do the Smoothing part.
    Render results for Cane 2 and 3 are the same as are the render results for Cane 4 and 5.

    And that is why my "default" FireFly render options are with Smoothing enabled at crease angle 180°.

    If required for a project? ?
    FireFly gives the "smoothest" result. (And simple disable Smoothing per offending obj "all vertex groups".

    Increasing the SubD gives better results in both but at the cost of poly count, memory, and render time.

    Best regards, Tony

  • Boy, this thread has gone completely off topic. Superfly vs. Firefly, subD vs. no subD. And the original poster doesn't even HAVE Superfly.

    Are we here to help each other, or just to out "tech" each other while ignoring the original poster?

  • I don't know how many people might consider this as OT,
    but for me this has been an interesting reading hitherto (though I wouldn't dare to claim that I've understood all of it yet).
    Carry on please - one never stops learning!

  • Poser Ambassadors

    @glitterati3d said in Help Requested: Post Render distortion:

    Boy, this thread has gone completely off topic. Superfly vs. Firefly, subD vs. no subD. And the original poster doesn't even HAVE Superfly.

    Are we here to help each other, or just to out "tech" each other while ignoring the original poster?

    Quite right - the original question was directly and completely answered in the response by raven, 3rd post in this thread.

    The rest was due to others either posting disinformation, or asking further but different direct questions. I was never answering the OP as it was perfectly answered two days ago.

    However, what would you have me do, gliterrati? Should I have instead, suggested that the rest of the posts be deleted? Moved? How about your own last post - completely off topic actually. Now I'm responding to it.