persona-community-5/pkg/persona/face.go
jordan bd2f591b98
Some checks failed
ci/woodpecker/push/woodpecker Pipeline failed
ci/woodpecker/manual/woodpecker Pipeline was successful
Initialize project from skeleton template
2026-02-24 07:39:46 +00:00

356 lines
11 KiB
Go

package persona
// FaceDNA contains all facial feature specifications for a character.
// These features are selected BEFORE generation and must be used verbatim.
// The combination of these features creates the character's unique facial identity.
type FaceDNA struct {
// ========== Structure ==========
// FaceShape is the overall face shape category.
FaceShape FaceShapeCategory `json:"face_shape" yaml:"face_shape"`
// BoneStructure describes the underlying facial bone structure.
BoneStructure BoneStructureCategory `json:"bone_structure" yaml:"bone_structure"`
// Jawline describes the jawline shape and definition.
Jawline JawlineCategory `json:"jawline" yaml:"jawline"`
// Cheekbones describes cheekbone prominence and position.
Cheekbones CheekbonesCategory `json:"cheekbones" yaml:"cheekbones"`
// ========== Eyes ==========
// EyeShape is the structural category of eye shape.
EyeShape EyeShapeCategory `json:"eye_shape" yaml:"eye_shape"`
// EyeColor is the iris color category.
EyeColor EyeColorCategory `json:"eye_color" yaml:"eye_color"`
// EyeSpacing describes the distance between the eyes.
EyeSpacing EyeSpacingCategory `json:"eye_spacing" yaml:"eye_spacing"`
// EyeSize describes the relative size of the eyes.
EyeSize EyeSizeCategory `json:"eye_size" yaml:"eye_size"`
// ========== Nose ==========
// NoseShape is the structural category of nose shape.
NoseShape NoseShapeCategory `json:"nose_shape" yaml:"nose_shape"`
// NoseBridge describes the nose bridge characteristics.
NoseBridge NoseBridgeCategory `json:"nose_bridge" yaml:"nose_bridge"`
// NoseTip describes the nose tip characteristics.
NoseTip NoseTipCategory `json:"nose_tip" yaml:"nose_tip"`
// ========== Lips ==========
// LipShape is the structural category of lip shape.
LipShape LipShapeCategory `json:"lip_shape" yaml:"lip_shape"`
// LipFullness describes the volume/fullness of the lips.
LipFullness LipFullnessCategory `json:"lip_fullness" yaml:"lip_fullness"`
// SmileType describes the characteristic smile pattern.
SmileType SmileTypeCategory `json:"smile_type" yaml:"smile_type"`
// ========== Brows ==========
// BrowShape is the structural category of eyebrow shape.
BrowShape BrowShapeCategory `json:"brow_shape" yaml:"brow_shape"`
// BrowThickness describes the thickness/density of the eyebrows.
BrowThickness BrowThicknessCategory `json:"brow_thickness" yaml:"brow_thickness"`
// ========== Skin ==========
// SkinTone is the overall skin tone category.
SkinTone SkinToneCategory `json:"skin_tone" yaml:"skin_tone"`
// SkinUndertone is the undertone category (warm, cool, neutral).
SkinUndertone SkinUndertoneCategory `json:"skin_undertone" yaml:"skin_undertone"`
// SkinTexture describes the skin texture characteristics.
SkinTexture SkinTextureCategory `json:"skin_texture" yaml:"skin_texture"`
// ========== Hair ==========
// HairColor is the natural hair color category.
HairColor HairColorCategory `json:"hair_color" yaml:"hair_color"`
// HairTexture is the natural hair texture category.
HairTexture HairTextureCategory `json:"hair_texture" yaml:"hair_texture"`
// HairLength describes the current hair length.
HairLength HairLengthCategory `json:"hair_length" yaml:"hair_length"`
// HairThickness describes the hair strand thickness/density.
HairThickness HairThicknessCategory `json:"hair_thickness" yaml:"hair_thickness"`
// ========== Unique Features ==========
// UniqueFeatures contains distinctive facial features.
// ALLOWED: dimples, cleft chin, widow's peak
UniqueFeatures []UniqueFeatureCategory `json:"unique_features,omitempty" yaml:"unique_features,omitempty"`
}
// Face shape categories
type FaceShapeCategory string
const (
FaceShapeOval FaceShapeCategory = "oval"
FaceShapeHeart FaceShapeCategory = "heart"
FaceShapeSquare FaceShapeCategory = "square"
FaceShapeRound FaceShapeCategory = "round"
FaceShapeDiamond FaceShapeCategory = "diamond"
FaceShapeOblong FaceShapeCategory = "oblong"
)
// Bone structure categories
type BoneStructureCategory string
const (
BoneStructureDelicate BoneStructureCategory = "delicate"
BoneStructureModerate BoneStructureCategory = "moderate"
BoneStructureStrong BoneStructureCategory = "strong"
)
// Jawline categories
type JawlineCategory string
const (
JawlineSoft JawlineCategory = "soft"
JawlineRounded JawlineCategory = "rounded"
JawlineDefined JawlineCategory = "defined"
JawlineAngular JawlineCategory = "angular"
JawlineSquare JawlineCategory = "square"
)
// Cheekbones categories
type CheekbonesCategory string
const (
CheekbonesSubtle CheekbonesCategory = "subtle"
CheekbonesModerate CheekbonesCategory = "moderate"
CheekbonesProminent CheekbonesCategory = "prominent"
CheekbonesHigh CheekbonesCategory = "high"
)
// Eye shape categories
type EyeShapeCategory string
const (
EyeShapeAlmond EyeShapeCategory = "almond"
EyeShapeRound EyeShapeCategory = "round"
EyeShapeHooded EyeShapeCategory = "hooded"
EyeShapeMonolid EyeShapeCategory = "monolid"
EyeShapeUpturned EyeShapeCategory = "upturned"
EyeShapeDownturned EyeShapeCategory = "downturned"
EyeShapeDeepSet EyeShapeCategory = "deep_set"
)
// Eye color categories
type EyeColorCategory string
const (
EyeColorDarkBrown EyeColorCategory = "dark_brown"
EyeColorBrown EyeColorCategory = "brown"
EyeColorHazel EyeColorCategory = "hazel"
EyeColorAmber EyeColorCategory = "amber"
EyeColorGreen EyeColorCategory = "green"
EyeColorBlue EyeColorCategory = "blue"
EyeColorGray EyeColorCategory = "gray"
)
// Eye spacing categories
type EyeSpacingCategory string
const (
EyeSpacingClose EyeSpacingCategory = "close_set"
EyeSpacingAverage EyeSpacingCategory = "average"
EyeSpacingWide EyeSpacingCategory = "wide_set"
)
// Eye size categories
type EyeSizeCategory string
const (
EyeSizeSmall EyeSizeCategory = "small"
EyeSizeAverage EyeSizeCategory = "average"
EyeSizeLarge EyeSizeCategory = "large"
)
// Nose shape categories
type NoseShapeCategory string
const (
NoseShapeButton NoseShapeCategory = "button"
NoseShapeStraight NoseShapeCategory = "straight"
NoseShapeWide NoseShapeCategory = "wide"
NoseShapeRoman NoseShapeCategory = "roman"
NoseShapeAquiline NoseShapeCategory = "aquiline"
)
// Nose bridge categories
type NoseBridgeCategory string
const (
NoseBridgeLow NoseBridgeCategory = "low"
NoseBridgeModerate NoseBridgeCategory = "moderate"
NoseBridgeHigh NoseBridgeCategory = "high"
NoseBridgeBumped NoseBridgeCategory = "bumped"
)
// Nose tip categories
type NoseTipCategory string
const (
NoseTipRounded NoseTipCategory = "rounded"
NoseTipPointed NoseTipCategory = "pointed"
NoseTipUpturned NoseTipCategory = "upturned"
NoseTipBulbous NoseTipCategory = "bulbous"
)
// Lip shape categories
type LipShapeCategory string
const (
LipShapeFull LipShapeCategory = "full"
LipShapeThin LipShapeCategory = "thin"
LipShapeBow LipShapeCategory = "bow"
LipShapeRounded LipShapeCategory = "rounded"
LipShapeWide LipShapeCategory = "wide"
)
// Lip fullness categories
type LipFullnessCategory string
const (
LipFullnessSubtle LipFullnessCategory = "subtle"
LipFullnessModerate LipFullnessCategory = "moderate"
LipFullnessPlump LipFullnessCategory = "plump"
LipFullnessVoluptuous LipFullnessCategory = "voluptuous"
)
// Smile type categories
type SmileTypeCategory string
const (
SmileTypeSubtle SmileTypeCategory = "subtle"
SmileTypeBroad SmileTypeCategory = "broad"
SmileTypeAsymmetric SmileTypeCategory = "asymmetric"
SmileTypeGummy SmileTypeCategory = "gummy"
SmileTypeClosed SmileTypeCategory = "closed"
)
// Brow shape categories
type BrowShapeCategory string
const (
BrowShapeNatural BrowShapeCategory = "natural"
BrowShapeArched BrowShapeCategory = "arched"
BrowShapeStraight BrowShapeCategory = "straight"
BrowShapeRounded BrowShapeCategory = "rounded"
BrowShapeAngled BrowShapeCategory = "angled"
)
// Brow thickness categories
type BrowThicknessCategory string
const (
BrowThicknessThin BrowThicknessCategory = "thin"
BrowThicknessNatural BrowThicknessCategory = "natural"
BrowThicknessThick BrowThicknessCategory = "thick"
BrowThicknessFluffy BrowThicknessCategory = "fluffy"
BrowThicknessBleached BrowThicknessCategory = "bleached"
)
// Skin tone categories
type SkinToneCategory string
const (
SkinToneFair SkinToneCategory = "fair"
SkinToneLight SkinToneCategory = "light"
SkinToneMedium SkinToneCategory = "medium"
SkinToneOlive SkinToneCategory = "olive"
SkinToneTan SkinToneCategory = "tan"
SkinToneBrown SkinToneCategory = "brown"
SkinToneDarkBrown SkinToneCategory = "dark_brown"
SkinToneDeep SkinToneCategory = "deep"
)
// Skin undertone categories
type SkinUndertoneCategory string
const (
SkinUndertoneWarm SkinUndertoneCategory = "warm"
SkinUndertoneCool SkinUndertoneCategory = "cool"
SkinUndertoneNeutral SkinUndertoneCategory = "neutral"
)
// Skin texture categories
type SkinTextureCategory string
const (
SkinTextureSmooth SkinTextureCategory = "smooth"
SkinTextureNormal SkinTextureCategory = "normal"
SkinTextureTextured SkinTextureCategory = "textured"
SkinTextureMature SkinTextureCategory = "mature"
)
// Hair color categories
type HairColorCategory string
const (
HairColorBlack HairColorCategory = "black"
HairColorDarkBrown HairColorCategory = "dark_brown"
HairColorBrown HairColorCategory = "brown"
HairColorLightBrown HairColorCategory = "light_brown"
HairColorBlonde HairColorCategory = "blonde"
HairColorRed HairColorCategory = "red"
HairColorAuburn HairColorCategory = "auburn"
HairColorGray HairColorCategory = "gray"
)
// Hair texture categories
type HairTextureCategory string
const (
HairTextureStraight HairTextureCategory = "straight"
HairTextureWavy HairTextureCategory = "wavy"
HairTextureCurly HairTextureCategory = "curly"
HairTextureCoily HairTextureCategory = "coily"
HairTextureKinky HairTextureCategory = "kinky"
)
// Hair length categories
type HairLengthCategory string
const (
HairLengthPixie HairLengthCategory = "pixie"
HairLengthShort HairLengthCategory = "short"
HairLengthChin HairLengthCategory = "chin"
HairLengthShoulder HairLengthCategory = "shoulder"
HairLengthMidBack HairLengthCategory = "mid_back"
HairLengthLong HairLengthCategory = "long"
HairLengthVeryLong HairLengthCategory = "very_long"
)
// Hair thickness categories
type HairThicknessCategory string
const (
HairThicknessFine HairThicknessCategory = "fine"
HairThicknessMedium HairThicknessCategory = "medium"
HairThicknessThick HairThicknessCategory = "thick"
)
// Unique feature categories (allowed features only)
type UniqueFeatureCategory string
const (
UniqueFeatureDimples UniqueFeatureCategory = "dimples"
UniqueFeatureCleftChin UniqueFeatureCategory = "cleft_chin"
UniqueFeatureWidowsPeak UniqueFeatureCategory = "widows_peak"
)