Huge shout out to @paluding for collaborating with me on this and who honestly did most of the work as far as I'm concerned.
Download // Simblr Alt
This is a default replacement mesh for kitten and puppy faces that allows heterochromia. This was done by separating the left and right eyes onto different groups and subsets so they can be colored independently. They have morphs, so these cuties will properly emote! This is possible thanks to @crispsandkerosene's blender plugin, make sure to grab it if you're interested in meshing for pets!
Pet heterochromia is NOT hereditary, and in fact only a pet's right eye color can be passed down. Heterochromia is a purposeful decision that you have to apply manually. Do this by opening a pet's AgeData inside their CharacterData.package, then find and change the eyecolor and/or alteyecolor lines to the desired colors. If you need better instructions, I go more in depth in my Pet Genetics How-To here.
Last but not least, consider grabbing my Kitten & Puppy Eye Fix! Maxis didn't enable eye colors for all ages, so without my fix only custom eye colors will actually display with heterochromia.
My first ever conversion! These are converted from @cakenoodles which were converted from chisami...from brntwaffles...ANYWAY! French Bulldog also from @cakenoodles
-Characteristics-
Non-Default
For Big and Small Dogs
Primary and Secondary ENABLED(heterochromia)
18 Swatches
THIS IS NOT MY CREATION, FULL CREDIT GOES TO NAMES LISTED ABOVE! IF THERE ARE ANY PROBLEMS PLEASE LET ME KNOW SO I CAN TRY TO FIX/HELP!
This How-To can help with editing in game Pets or PetBreeds to change their face/body, adding fur accessories, adding heterochromia, or to blend genetics to mimic the pacifier*. Be sure to edit appearance in mirror to see any changes.
I will do my best to make this as clear and easy to understand as possible, but in all honesty there is A LOT of information. Some of it will only make sense if you already are familiar with editing CC and game files due to the jargon and syntax. Some things I also just frankly don't know, or I may have forgotten. As such, if you discover something about pets that I haven't mentioned, please share it here for others as well. Please refer to this spreadsheet for all pet genetic codes.
Now to start! Pet genetic data is stored in the AGED (Age Data). You can find this file in any petbreed.package or in a pet's personal characterdata.package. All things genetic and appearance wise seem to pull directly from this file (except collars). When you first open it, it can get overwhelming at first. Once you know what you're looking for though, it gets (a bit) easier. Below are the important lines of interest:
eyecolor (dtString)
alteyecolor (dtString)
Pretty straight forward. These are the eyes. If both values are the same, then the pet will have only one eye color. If they are different, the pet has heterochromia. Heterochromia is NOT normally inheritable, so editing this value yourself is the only way to mimic it. Not only is heterochromia NOT inheritable, but only the right eye color can be passed down and never the left. All born-ingame pets will have both these lines somewhere already, but sometimes alteyecolor may be closer to the middle of the list or the bottom. Some petbreeds may be missing this line however. Luckily, it is very easy to just add it in yourself. Note that puppies and kittens can't display heterochromia yet due to the way their mesh was made. You will need Paluding's and my default replacement meshes for rectify this.
petbodyoption# (dtString)
These are the tail shape and ear shape. There are currently 4 possible tail options for cats. For dogs, there are 2 ear and 6 tail options.
coatlayers (dtUInteger)
The number of coat layers. Pretty obvious, which is nice. This includes the pet's base coat, so for example if a pet has 5 coat markings then this should say 6.
coattex# (dtString) - Coat Texture, color of the coat
coatmask# (dtString) - Coat Mask, or the marking
coatmaskamt# (dtUInteger) - Coat Mask Amount, the opacity
These are the markings themselves. coatmask0 should always be left blank as it is the base coat color. 0x000000FF is the maximum opacity that a layer can have. If a pet offspring inherits a marking, it will usually be an exact copy color/opacity wise of their parent.
numpsd (dtUInteger) - the number of archetypes/modifers applied
psd# (dtString) - References the Face Arch Modifiers and Pet Body Modifiers
...Pet Slider Detail, maybe? In a vanilla game, 1 click of a slider is typically equal to 0.150000. Psds are typically written as family:4:amount of change. Positive values go left, and negatives go right. There will at times be multiple copies of the family, it's due to the game listing every time it's changed even slightly. I believe the game takes the sum value of all and applies them (or it goes down the list, if order turns out to matter). You can edit these lines directly to change them, or you can add/delete the lines yourself. Just make sure to have the psds numbered numerically and the numpsd line matches any changes. All modifiers are applied over the base archetype used, which means if you remove all but the psd0 lines, you will have the base pet shape.
Value wise, I'm not sure what the limit may or may not be, but you can go pretty extreme and even use whole numbers. Here's my experiments with Skull Small-Big set to 4.000000 and to -9.000000
You may notice that some lines don't have a family or they have a number that is NOT 4. Those are archetype modifiers. Archetypes are the "face templates". Edit those values at your own risk, as the possible results for these are more unpredictable.
numpbd (dtUInteger) - Number of Pet Body Decorations, or the number of fur accessories
pbd# (dtString) - Pet Body Decoration, or at least that's what I choose to believe
This is where you can add or remove fur accessories. Those are the fluffy face or beards and such. These objects are typically dependent on the color of the pet. Can be edited, added, or removed to your liking. Just be sure the numbers are correct.
coatflags (dtUInteger) - Coat Flag, the type of fur for cats & dogs
This determines whether a pet is "smooth" or "curly". This can also be easily changed in the mirror instead.
coatshapemod (dtString) - Dog only, refers to the Coat Shape Modifiers (the "collie" or the "airedale" body shapes, etc.)
coatshapemodamt (dtString) - Dog only, refers to the slider amount applied. Values are in decimal, with 1 being the max slider.
These are the dog only coat shape sliders. Dogs can only have 1 I believe. I didn't test this section heavily, so I don't now if values can be more than 1.
Note: About the "pacifier". When pets breed in game, they don't mix face genetics like humansims. All kittens/puppies will either get mom OR dad's shape, not a mixture of both. While it's tedious, you could in theory use the knowledge from this How-to to pull parts from both parents to be "inherited" by their offspring. You can randomize features with a coin flip or something and then apply them into the Age Data. As a reminder, edit appearances in mirror to see any changes.
🐾 Pet DNA Testing: What Your Dog or Cat’s DNA Can Reveal
Modern Pet DNA Testing kits allow pet owners to uncover breed ancestry, detect genetic health risks, and better understand inherited traits that influence behavior and wellness.
Whether you adopted a rescue dog or want to better understand your cat’s genetic background, dog DNA tests and cat DNA tests provide powerful insights for smarter preventive pet care.
🧬 Learn how Pet DNA Testing works and whether it’s worth it for your pet.
Why Some Cats Meow More: New Study Links Vocal Traits to Genes
Have you ever wondered why one cat in your home is a quiet observer while the other loudly meows for food or attention?Cat vocalisation genes A new study from Kyoto University in Japan suggests the answer may lie deep in your cat’s genetic code.
Researchers led by wildlife specialist Yume Okamoto found that variations in a specific gene—the androgen receptor (AR) gene—may influence how vocal or…
Last week the US Supreme Court ruled that company Myriad Genetics could not patent the gene thought responsible for breast cancer. This ruling has far-reaching implications for both human and veter...