356 lines
11 KiB
Go
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"
|
|
)
|