Add scene fragments to portrait prompts after clothing.
Thing, room, yard and climate precipitation can contribute a short prompt when they are in frame, with a budget so chairs stay silent. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -13,7 +13,8 @@ internal static class PortraitPromptBuilder
|
||||
PersonCardResponse card,
|
||||
SwarmUiResolvedProfile profile,
|
||||
PortraitKind kind,
|
||||
string? promptExtra = null)
|
||||
string? promptExtra = null,
|
||||
PortraitScene? scene = null)
|
||||
{
|
||||
var parts = new List<string>();
|
||||
Add(parts, profile.ModelPositive);
|
||||
@@ -29,16 +30,36 @@ internal static class PortraitPromptBuilder
|
||||
Add(parts, DescribeAppearance(card));
|
||||
Add(parts, DescribeClothing(card));
|
||||
|
||||
scene ??= PortraitScene.Empty;
|
||||
foreach (var fragment in scene.PositiveFragments)
|
||||
{
|
||||
Add(parts, fragment);
|
||||
}
|
||||
|
||||
var positive = SwarmUiLoraFormatter.AppendEmbedTags(
|
||||
string.Join(", ", parts),
|
||||
profile.PositiveEmbeddings);
|
||||
SwarmUiLoraFormatter.Concat(profile.PositiveEmbeddings, scene.PositiveEmbeddings));
|
||||
var negativeParts = new List<string>();
|
||||
Add(negativeParts, profile.Negative);
|
||||
foreach (var fragment in scene.NegativeFragments)
|
||||
{
|
||||
Add(negativeParts, fragment);
|
||||
}
|
||||
|
||||
var negative = SwarmUiLoraFormatter.AppendEmbedTags(
|
||||
profile.Negative.Trim(),
|
||||
profile.NegativeEmbeddings);
|
||||
string.Join(", ", negativeParts),
|
||||
SwarmUiLoraFormatter.Concat(profile.NegativeEmbeddings, scene.NegativeEmbeddings));
|
||||
|
||||
return (positive, negative);
|
||||
}
|
||||
|
||||
public static SwarmUiResolvedProfile ApplyScene(SwarmUiResolvedProfile profile, PortraitScene scene) =>
|
||||
profile with
|
||||
{
|
||||
PositiveLoras = SwarmUiLoraFormatter.Concat(profile.PositiveLoras, scene.PositiveLoras),
|
||||
NegativeLoras = SwarmUiLoraFormatter.Concat(profile.NegativeLoras, scene.NegativeLoras),
|
||||
};
|
||||
|
||||
private static void Add(List<string> parts, string? value)
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(value))
|
||||
|
||||
Reference in New Issue
Block a user