DEV Community

Amit Nag
Amit Nag

Posted on

Six Faces, One Character: Two Ways to Build an AI Expression Sheet

Getting one good AI portrait is easy. Getting six emotions that all look like the same person is the hard part. Ask a model for six expressions and you can end up with six slightly different faces, and then your character expression sheet is useless as a reference.

I compared two ways to build one in Edit Pro. Route A generates all six expressions in one 3x2 sheet. Route B generates them one at a time, each from the same neutral reference. Both started from one original character, one reference image and the same six expression lines.

Route A result:

Route A: six expressions generated together in one sheet (second attempt)

Route B result:

Route B: six expressions generated one at a time from the same neutral reference (Sad regenerated once)

The short version: Route A is faster and cheaper for getting all six expressions at once. Route B is slower and costs more, but each image is larger and one weak expression can be redone alone. Both routes had framing problems, and those are covered below.

What Makes an Expression Sheet Usable

A usable sheet is more than six nice faces. It has to pass four checks:

  • Same character: face shape, hair, eyes, accessories and outfit match in every panel.

  • Clear emotions: each expression reads at a glance, and no two look alike.

  • Matching framing: head size, angle and position stay close, with the whole head in view.

  • Easy fixes: one weak expression can be corrected with little disruption to the rest.

These checks separate consistent character expressions from six near-matches. Step 5 applies them to both routes and sorts the failures into fixable and not fixable.

Step 1: Define the Six Emotions

Decide what each face does before generating anything. Write one short line per emotion, covering the key facial features. A real expression change moves the eyebrows, eyelids, cheeks and mouth together, so a mouth-only change does not count as a new emotion.

  • Neutral: relaxed eyebrows, normally open eyes, closed neutral mouth, no added blush

  • Happy: relaxed, slightly lifted eyebrows, raised cheeks, slightly narrowed smiling eyes, a clear open-mouth smile

  • Angry: eyebrows drawn downward toward the center, narrowed eyes, firmly closed tense mouth

  • Sad: raised inner eyebrows, slightly lowered upper eyelids, downturned mouth corners, no tears

  • Surprised: raised eyebrows, wide-open eyes, a small open O-shaped mouth

  • Embarrassed: visible cheek blush, slightly raised inner eyebrows, shy eyes still toward the viewer, a small hesitant closed-mouth smile

Written out, these six lines act as a character emotion sheet you can check every result against. Both routes use the exact same lines, so the generation method is the only variable.

Step 2: Make One Neutral Reference

Both routes start from the same neutral portrait, so make it first. A good reference is straight-on and head and shoulders, with both eyebrows and eyes visible, a relaxed closed mouth and a plain background. This one came from the PixAI image generator with Tsubaki.3 Pro. It has clear eyebrows, visible ears and a calm mouth against a pale beige background.

The neutral reference portrait both routes start from

No reference is flawless. This one has ear cuffs on both ears, faintly lifted mouth corners and one strand of hair touching a brow. Write down the details to check later: short charcoal-gray side-parted hair, bright violet eyes, a small silver ear cuff on each ear and an olive-green high-collar jacket over a white T-shirt. Step 5 compares every result against that list.

Step 3: Route A: Generate the Whole Sheet at Once

One upload, one prompt, one image. Upload the neutral portrait to Edit Pro and ask for all six expressions in three columns and two rows, with no labels. The expression-sheet prompt in PixAI's OC and VTuber character sheet guide is a good starting point. Swap in your character's details and add the six lines from Step 1. Settings were 2K, 3:2, Standard quality and High Priority on.

Edit Pro with the neutral reference uploaded and the Route A prompt entered

The full prompt, including the margin sentence added after the first run:

Use the uploaded image as the only character reference. Create a six-expression character sheet arranged in exactly three columns and two rows. Every panel shows the same young man with short charcoal-gray side-parted hair, bright violet eyes, a small silver ear cuff on each ear, an olive-green high-collar jacket over a plain white T-shirt, light-medium warm skin tone and a pale warm-beige background. Preserve his facial proportions, hairstyle, ear cuff positions, jacket, illustration style, lighting and background. Use matching straight-on head-and-shoulders framing and equal head sizes across all six panels. Keep the complete head visible in every panel. Frame each portrait slightly wider and leave a clear margin of background above the hair in every panel, so the top of the hair never touches or crosses the panel edge. Expressions in reading order: Top left, NEUTRAL: relaxed eyebrows, normally open eyes, closed neutral mouth, no added blush. Top middle, HAPPY: relaxed, slightly lifted eyebrows, raised cheeks, slightly narrowed smiling eyes, a clear open-mouth smile. Top right, ANGRY: eyebrows drawn downward toward the center, narrowed eyes, firmly closed tense mouth. Bottom left, SAD: raised inner eyebrows, slightly lowered upper eyelids, downturned mouth corners, no tears. Bottom middle, SURPRISED: raised eyebrows, wide-open eyes, a small open O-shaped mouth. Bottom right, EMBARRASSED: visible cheek blush, slightly raised inner eyebrows, shy eyes still toward the viewer, a small hesitant closed-mouth smile. Keep the gaze toward the viewer, the head upright and the shoulders still. Change facial expressions only. Use equal-sized panels with clear spacing. Exactly one portrait per panel. No labels, speech bubbles, emotion icons, hands or extra portraits.

The first run took 32 seconds and the Generate button showed 10,000 credits during the test. All six expressions landed in the right panels, no two looked alike and the character held. Sad and embarrassed both raise the inner eyebrows, but the blush and the mouth keep them apart. The failure was framing: the top of the hair was cut off in every panel.

The fix was one added sentence asking for a margin above the hair, then a second run. That run took 37 seconds and the same 10,000 credits, and it produced the sheet below. Two full-sheet runs came to 69 seconds and 20,000 credits. I also tried Repaint on one panel, which did not solve the framing problem. Step 5 covers it.

The finished Route A sheet, six expressions in one image

Step 4: Route B: Generate One Expression at a Time

Route B skips the sheet. Upload the same neutral portrait to Edit Pro for each expression, always from the original and never from an edited result. Settings matched Route A (2K, Standard quality, High Priority on) except for a 1:1 ratio, which gives 1920 x 1920 images. Only the expression line changes between runs. This is the full prompt for Happy:

Use the uploaded image as the only reference. Change the character's expression to happy: relaxed, slightly lifted eyebrows, raised cheeks, slightly narrowed smiling eyes, a clear open-mouth smile. Preserve his facial identity, short charcoal-gray side-parted hair, bright violet eyes, a small silver ear cuff on each ear, olive-green high-collar jacket over a plain white T-shirt, illustration style, lighting and pale warm-beige background. Keep the same head angle, gaze toward the viewer, shoulder position and head-and-shoulders framing. Keep the complete head visible with a clear margin of background above the hair. One portrait only. No text, symbols, hands or additional panels.

Each run took roughly 30 seconds and showed 10,000 credits during the test. The six first runs added up to 181 seconds and 60,000 credits.

Add the Sad fix from Step 5 and Route B totals 212 seconds and 70,000 credits, against 69 seconds and 20,000 credits for Route A. That is about three times slower and about 3.5 times more in credits.

Side by side, head size and eye position stayed almost identical across the six images, and no expression drifted toward another. Because the eyes sit on nearly the same line, flipping between images barely moves the face. Hair, eye color, jacket and both ear cuffs held. Sad was weak on the first run, and Step 5 shows the fix.

Headroom was the main limitation. In all six images the top of the hair touches the top edge, even though the prompt asked for a margin of background above it. The heads also sit larger in the frame than in the Route A panels.

I did not fix this in the test. Asking for more space above the head, or trying a taller aspect ratio, might help, but both are untested suggestions. If your project needs generous headroom or room to crop, test the framing on a sample image before committing to Route B.

The six Route B results together, with the fixed Sad from Step 5

Step 5: Check the Sets and Fix the Failed Expressions

A character expression sheet is only as good as its weakest panel. Check both sets against the Step 2 details and the six Step 1 lines, looking for weak or wrong emotions, near-duplicates, changes to the character and cropped heads.

After the fixes, all six emotions read clearly in both sets and the character held. What failed was framing in both routes, plus one weak Sad in Route B's first run.

Route A: the cropped crown. The first sheet cut off the top of the hair in every panel. The problem hit all six panels, so the fix was to regenerate the whole sheet with a margin sentence added. Every panel was redrawn and none of the good ones was kept, but the faces, hair, jacket and cuffs stayed consistent. The margin is still thin in the top row and slightly larger in the bottom row, and the heads are a little smaller with more shoulder showing.

Can you fix just one panel instead? Repaint was tried on a single panel of the first sheet. It took 58 seconds and 2,500 credits, which are not counted in the Route A totals. The crown stayed at the edge, and the hair, face shape and rendering style changed, so the panel no longer matched the others.

Route A, the cropped panel, one Repaint attempt and the regenerated sheet

Route B: the weak Sad. In the first run the fringe covered one eyebrow and the mouth barely turned down. Only that image needed redoing, so Sad was regenerated from the original reference with a clearer expression line: "clearly sad: both inner eyebrows raised and drawn together, upper eyelids lowered, eyes slightly glossy, mouth corners clearly turned down in a small frown, no tears." That took one extra try, 31 seconds and 10,000 credits, and the other five images were untouched.

Sad, before and after one clearer expression line

Which route was easier to fix? It depended on the failure. For one weak expression, Route B was easier because a single image was redone. For a framing problem across the whole sheet, Route A was easier because one run fixed all six panels. Route B's shared headroom problem stayed unfixed. The table sums up the test:

How the two routes compared in this test

Time and credits are as shown on screen during the test. These results come from one test with one original character.

Which Route Should You Use?

Neither route won across the board, so it depends on the job. For your AI expression sheet:

  • Character profile or design reference: Route A. One sheet gave all six expressions side by side, and fixing the framing took one more run.

  • Visual novel or game portraits: Route B, with a check first. The images are large, head size and eye position were nearly identical, and a weak expression could be redone on its own. The hair touched the top edge in all six images, so test the headroom on a sample before you commit.

  • Comic panels or other story material: either route is worth trying. This test did not cover those uses. Start with Route A to review several expressions together, or Route B to work on one expression individually.

Image size matters too. Route A panels came out at 784 x 784 px, cut from a 2352 x 1568 px sheet. Route B images came out at 1920 x 1920 px, more than twice the width and height. Route A panels suit a character profile or a quick review. Route B gives more pixels for showing individual expressions larger, though its tight top framing may limit how freely you can crop or position them.

On cost, Route A was cheaper: 20,000 credits against 70,000 for Route B, retries included, so Route B used 3.5 times as many.

If you cut single portraits out of the Route A sheet, you have to remove the gaps and line the faces up yourself, and add labels yourself if you want them.

Conclusion

The workflow is the same either way: one original character, six emotions, one neutral reference, a whole sheet or six single images, a careful check, and a fix for whatever failed. You do not need to draw anything. Start both routes from the same reference and use the same six expression lines to keep the character details consistent across the set.

Route A is the faster, cheaper way to see all six expressions together. Route B costs more and takes longer, but gives larger images and lets you redo one expression alone, as long as you check the headroom first.

To build your own character expression sheet, upload a neutral portrait to Edit Pro and try both routes with the same six lines.

Disclosure: I write freelance content for PixAI.

Top comments (0)