BLOG

Kneel

by GymDreams
Examples with Open Pose control net in Stable Diffusion, with Airfuck’s Brute Mix

Sometimes I have a very specific pose in mind, and they’re hard to describe with words. Trying to depend on stock photos can be tricky. In these cases, I would open a 3D program to pose the figure myself, then use it to drive an OpenPose control net.

Using the OpenPose control net in Stable Diffusion to compose the image.
Using the OpenPose control net in Stable Diffusion to compose the image.

3D Render

For this set of images, I used Daz3D, which is something you can download for free. You can alternatively use Poser, which is a paid program. Additionally, you can use Blender, which is also free. Or Cinema 4D, which is my personal favorite 3D program, but will likely be too expensive to use for a hobbyist.

Render figure with 3D program (Daz3D shown). Process with OpenPose.
Render figure with 3D program (Daz3D shown). Process with OpenPose.

Neither Blender nor Cinema 4D were designed to pose figures alone, so their UI can be quite intimidating. On the other hand, programs like Poser and Daz3D were designed specifically to pose figures, and come with loads of free figures — with additional options available for purchase on their sites as well as from third party services.

OpenPose is used to pose the figure, but the scene is controlled with text prompts.
OpenPose is used to pose the figure, but the scene is controlled with text prompts.

For this workflow, you mainly need the pose, so what figure you use really does not really matter. If instead you want to also get the muscle mass via Soft Edge, then you would want to tweak the muscle parameters.

Render figure with a 3D program, e.g. Daz3D. The figure you use does not matter, since you only need the pose. Derek for Freak 5 is used here.
Render figure with a 3D program, e.g. Daz3D. The figure you use does not matter, since you only need the pose. Derek for Freak 5 is used here.

The figure I used for this example was literally whichever showed up first in my content library — Derek for Freak 5 (Daz3D). But you can use anything really. It really doesn’t matter!

Pose the Figure

Normally, I would pose the figure myself to get the exact pose I want. But for this example, I just used a pose that is in my content library.

Render the figure

Just pick the fastest render option available. You won’t be using these renders other than to get the pose, so having super high quality renders would be just a waste of time.

This will create a figure with a transparent background. I then make a 1024x1024 transparent image in Photoshop, then place the figure into it, scaling it up/down for the final comp that I wanted. I then exported a PNG from the comp.

OpenPose is used to pose the figure, but the scene is controlled with text prompts.
OpenPose is used to pose the figure, but the scene is controlled with text prompts.

OpenPose Control Net

Going back to Stable Diffusion, open up the OpenPose control net and use the PNG you just exported from Photoshop. Set the resolution to 1024 for better accuracy, but if you are low on VRAM then 512 is fine also. If you preview, the image will look something like this:

Preprocess the Photoshop comp using OpenPose control net. It might miss some limbs, but it’s not a huge issue at all.
Preprocess the Photoshop comp using OpenPose control net. It might miss some limbs, but it’s not a huge issue at all.

Text Prompt

Describe what you want to depict in text prompt. The pose will inform the figures, but you should describe the scene and rendering in ways that you want. What you prompt is what you get.

By varying the text prompts, the men have the same pose, but can be in different outfits, scenes, lighting, age, body type, and time period.
By varying the text prompts, the men have the same pose, but can be in different outfits, scenes, lighting, age, body type, and time period.
By varying the text prompts, the men have the same pose, but can be in different outfits, scenes, lighting, age, body type, and time period.
By varying the text prompts, the men have the same pose, but can be in different outfits, scenes, lighting, age, body type, and time period.
By varying the text prompts, the men have the same pose, but can be in different outfits, scenes, lighting, age, body type, and time period.
By varying the text prompts, the men have the same pose, but can be in different outfits, scenes, lighting, age, body type, and time period.

Parameters

The default openpose settings would be

  • Weight: 1
  • Start: 0
  • End: 1
  • Priority: Balanced

I tend to set weight lower so that the figures will be slightly different from one another. For these images, I used weight 0l8 so that they are largely the same so they are much closer to the pose — otherwise the effect will not be very consistent and so would create confusion for the purpose of a tutorial. But if I were to render scenes for my series, then I tend to use 0.5 weight.

  • Weight: 0.8
  • Start: 0
  • End: 1
  • Priority: Balanced

Sometimes I also set the end lower so the figures have more room to move around, but for this particular pose, since the preprocessor clearly didn’t parse the left leg correctly, having an early end could lead to some issues, e.g. rendering multiple legs, so for most of these images I did use the default end of 1.

Notes

There are a few notes that you should keep in mind when using OpenPose control net.

Render figure with 3D program (Daz3D shown). Process with OpenPose.
Render figure with 3D program (Daz3D shown). Process with OpenPose.
  • Muscle parameters in Daz3D. If you mainly wanted to fetch the pose, then the muscle mass doesn’t matter. But you can additionally use Depth and Soft Edge control nets to get the muscle mass from the 3D render. If you do that, then you would want to tweak the muscle mass as close to your vision as possible.
  • Ground plane. If you use the Depth control net, then you would want to add a ground plane — either from the 3D program or make a fake one with Photoshop. Otherwise, thet figures might float in the air.
  • Depth Map. You can alternatively render a depth map from the 3D program directly. This will have the most accurate depth information since it’s not proceed with AI, but rather calculated with 3D spatial information.
  • Anatomy. It could be tempting to add full anatomy (aka the male genitals). Don’t! They will confuse the preprocessors and will likely lead to some weird results. If you intend to use genitals in your render, then you can render a separate figure with the male anatomy to be used in the Soft Edge CN only. For the OpenPose render, just skip it for the preprocesor.

Tech Parameters in a Gist

See also the full technical parameters

  • Text prompts in txt2img with Stable Diffusion
  • 20 steps, Euler a, 512x512
  • Airfuck’s Brute Mix v1.0
  • Clip skip: 2
  • vae-ft-mse-840000-ema-pruned.vae.ckpt
  • Denoising: 0.5
  • Hires: 20 steps, 2x, 1024x1024, 8x_NMKD-Superscale_150000_G
  • CN OpenPose: Daz3D image, Weight 0.8, Start 0, End 0.5-1, Variable priority: prompt-priority for some, balanced for others.
  • Post Upscale: Topaz Gigapixel 4x HQ, 4096x4096
  • Color Correction: Adobe Lightroom
  • Limb Fix: Adobe Photoshop AI

Video

Vertical Format

Square Format

Images

Kneel. Examples with Open Pose control net in Stable Diffusion, with Airfuck’s Brute Mix.
Kneel. Examples with Open Pose control net in Stable Diffusion, with Airfuck’s Brute Mix.
Kneel. Examples with Open Pose control net in Stable Diffusion, with Airfuck’s Brute Mix.
Kneel. Examples with Open Pose control net in Stable Diffusion, with Airfuck’s Brute Mix.
Kneel. Examples with Open Pose control net in Stable Diffusion, with Airfuck’s Brute Mix.
Kneel. Examples with Open Pose control net in Stable Diffusion, with Airfuck’s Brute Mix.
Kneel. Examples with Open Pose control net in Stable Diffusion, with Airfuck’s Brute Mix.
Kneel. Examples with Open Pose control net in Stable Diffusion, with Airfuck’s Brute Mix.
Kneel. Examples with Open Pose control net in Stable Diffusion, with Airfuck’s Brute Mix.
Kneel. Examples with Open Pose control net in Stable Diffusion, with Airfuck’s Brute Mix.
Kneel. Examples with Open Pose control net in Stable Diffusion, with Airfuck’s Brute Mix.
Kneel. Examples with Open Pose control net in Stable Diffusion, with Airfuck’s Brute Mix.
Kneel. Examples with Open Pose control net in Stable Diffusion, with Airfuck’s Brute Mix.
Kneel. Examples with Open Pose control net in Stable Diffusion, with Airfuck’s Brute Mix.
Kneel. Examples with Open Pose control net in Stable Diffusion, with Airfuck’s Brute Mix.
Kneel. Examples with Open Pose control net in Stable Diffusion, with Airfuck’s Brute Mix.
Kneel. Examples with Open Pose control net in Stable Diffusion, with Airfuck’s Brute Mix.
Kneel. Examples with Open Pose control net in Stable Diffusion, with Airfuck’s Brute Mix.
Kneel. Examples with Open Pose control net in Stable Diffusion, with Airfuck’s Brute Mix.
Kneel. Examples with Open Pose control net in Stable Diffusion, with Airfuck’s Brute Mix.

Additional Images

Kneel. Examples with Open Pose control net in Stable Diffusion, with Airfuck’s Brute Mix.
Kneel. Examples with Open Pose control net in Stable Diffusion, with Airfuck’s Brute Mix.
Kneel. Examples with Open Pose control net in Stable Diffusion, with Airfuck’s Brute Mix.
Kneel. Examples with Open Pose control net in Stable Diffusion, with Airfuck’s Brute Mix.
Kneel. Examples with Open Pose control net in Stable Diffusion, with Airfuck’s Brute Mix.
Kneel. Examples with Open Pose control net in Stable Diffusion, with Airfuck’s Brute Mix.
Kneel. Examples with Open Pose control net in Stable Diffusion, with Airfuck’s Brute Mix.
Kneel. Examples with Open Pose control net in Stable Diffusion, with Airfuck’s Brute Mix.
Kneel. Examples with Open Pose control net in Stable Diffusion, with Airfuck’s Brute Mix.
Kneel. Examples with Open Pose control net in Stable Diffusion, with Airfuck’s Brute Mix.
Kneel. Examples with Open Pose control net in Stable Diffusion, with Airfuck’s Brute Mix.
Kneel. Examples with Open Pose control net in Stable Diffusion, with Airfuck’s Brute Mix.
Kneel. Examples with Open Pose control net in Stable Diffusion, with Airfuck’s Brute Mix.
Kneel. Examples with Open Pose control net in Stable Diffusion, with Airfuck’s Brute Mix.
Kneel. Examples with Open Pose control net in Stable Diffusion, with Airfuck’s Brute Mix.
Kneel. Examples with Open Pose control net in Stable Diffusion, with Airfuck’s Brute Mix.
Kneel. Examples with Open Pose control net in Stable Diffusion, with Airfuck’s Brute Mix.
Kneel. Examples with Open Pose control net in Stable Diffusion, with Airfuck’s Brute Mix.
Kneel. Examples with Open Pose control net in Stable Diffusion, with Airfuck’s Brute Mix.
Kneel. Examples with Open Pose control net in Stable Diffusion, with Airfuck’s Brute Mix.
Kneel. Examples with Open Pose control net in Stable Diffusion, with Airfuck’s Brute Mix.
Kneel. Examples with Open Pose control net in Stable Diffusion, with Airfuck’s Brute Mix.
Kneel. Examples with Open Pose control net in Stable Diffusion, with Airfuck’s Brute Mix.
Kneel. Examples with Open Pose control net in Stable Diffusion, with Airfuck’s Brute Mix.

Image Index

Technical Parameters

  • Steps: 20
  • Sampler: Euler a
  • CFG scale: 7
  • Face restoration: CodeFormer
  • Size: 512x512
  • Model hash: 8ff8347bb0
  • Model: airfucksBruteMix_v10
  • VAE hash: 235745af8d
  • VAE: vae-ft-mse-840000-ema-pruned.vae.ckpt
  • Denoising strength: 0.5
  • Clip skip: 2
  • Style Selector Enabled: True
  • Style Selector Randomize: False
  • Style Selector Style: base
  • ControlNet 0:
    • Module: openpose_full
    • Model: control_v11p_sd15_openpose (cab727d4)
    • Weight: 0.5
    • Resize Mode: Crop and Resize
    • Low Vram: False
    • Processor Res: 1024
    • Guidance Start: 0
    • Guidance End: 1
    • Pixel Perfect: False
    • Control Mode: My prompt is more important
  • Hires negative prompt: "penis, testicle"
  • Hires upscale: 2
  • Hires steps: 20
  • Hires upscaler: 8x_NMKD-Superscale_150000_G
  • TI hashes:
    • Asian-Less-Neg: 22d2f003e76f
    • NegfeetV2: df90b1ff666d
  • face_editor_enabled: True
  • face_editor_face_margin: 1.6
  • face_editor_confidence: 0.97
  • face_editor_strength1: 0.4
  • face_editor_strength2: 0
  • face_editor_max_face_count: 20
  • face_editor_mask_size: 0
  • face_editor_mask_blur: 12
  • face_editor_prompt_for_face: "look at camera, handsome face"
  • face_editor_apply_inside_mask_only: True
  • face_editor_apply_scripts_to_faces: False
  • face_editor_face_size: 512
  • face_editor_use_minimal_area: False
  • face_editor_ignore_larger_faces: True
  • face_editor_affected_areas: Face
  • face_editor_upscaler: None
  • face_editor_tilt_adjustment_threshold: 40
  • Version: v1.6.0