1
$\begingroup$

I have linked character libraries that include a complete character mesh in addition to optional wardrobe outfits that use Surface Deform -- instead of armature parenting -- that give less distortion (character mesh showing through cloths in some poses).

Now I'd like to reduce vertex groups of the character that are covered by cloths -- I'm hoping that will boost rendering performance. True?

But if I use a Mask on these groups/areas of the character (driven by clothing enabled for render),

enter image description here

I have an error where the SD modifier on the clothing complains that not all vertices (especially those under the clothing!) are not available for dynamic SD modeling.

enter image description here

So I need the complete character mesh to be available for modeling with surface deform on each frame, but want to supply less vertices to the render_engine to supposedly speed up rendering.

I suppose I could have an invisible, duplicate character (skin) mesh (decimated) that I could use for the SD, but this seems to mostly defeat reducing the load into rendering. Perhaps there's some special treat lurking in geo-nodes?

What might a cognoscenti answer?

$\endgroup$
3
  • $\begingroup$ No special trick. 1. Apply the modifiers. 2. Delete the modifiers. 3. Use a duplicate mesh. $\endgroup$
    – Leander
    Commented May 27 at 5:53
  • $\begingroup$ @Leander -- Applying mods doesn't allow me to animate when the modifiers should be applied -- e.g. only have legs masked when jeans are rendered on a linked character with clothing options. Edited my q to emphasize that. Thx for your input, however. I'm thinking about mask plus armature, instead of mask plus SurfDef. Wish I knew if this would speed up rendering for all this effort... $\endgroup$
    – james_t
    Commented May 27 at 18:58
  • 1
    $\begingroup$ "I suppose I could have an invisible, duplicate character (skin) mesh (decimated) that I could use for the SD, but this seems to mostly defeat reducing the load into rendering." It doesn't defeat the load into rendering, because the duplicate is disabled in renders. (Probably, decimating it would be unwise.) It costs memory, but it improves performance (probably, only slightly.) No matter what, you need to calculate the positions of vertices that get masked, for purposes of the SD, and that calculation of position (on CPU) probably dwarfs the rendering cost, with reasonable assumptions. $\endgroup$
    – Nathan
    Commented May 27 at 21:32

1 Answer 1

0
$\begingroup$

Quick fix should be just bringing SurfaceDeform modifier to the top of modifier stack and than do the masking.

As far as I understand, Blender will still calculate positions of hidden vertices (so the deformations should still be correct), but they won't contribute to the rendering work load since they are hidden afterwards and not rendered.

enter image description here

$\endgroup$
2
  • $\begingroup$ Thanks for your attempt, but the Mask is on the character mesh, while the SD is on the clothing mesh on top of the character mesh. Two separate objects/meshes, one with SD onto a mesh with Mash. $\endgroup$
    – james_t
    Commented May 31 at 20:08
  • 1
    $\begingroup$ Ah I understand now. In that case I believe what @Leander suggested would work the best, meaning duplicate object. You can have them share same geometry (Alt+D) so even shapekeys work on both of them at the same time. In therms of performance, you can disable collection with the duplicate and render only the masked one. $\endgroup$ Commented Jun 1 at 0:13

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .