Jump to content
IGNORED

[The Sims 3][Tutorial] Animation Tutorial For Kinky World by Ghost


Recommended Posts

How to create your own animations for Kinky World:-

Hello,

This tutorial will teach you how to make animations for Kinky World. You must have some basic knowledge of blender.

 

 

Topics that will be covered in this tutorial:-

  • Making animations in blender.
  • Making Package file.
  • Adding sound to your animations.
  • Importing and using objects/accessories in blender.

 

Tools Required:-

  1. S3PE - http://www.simlogical.com/s3pe.htm
  2. S3OC http://www.simlogical.com/ContentUploadsRemote/uploads/190/index.htm 
  3. S3PE Wrappers (Required to add sounds) - https://code.google.com/archive/p/s3pi-wrappers/downloads
  4. Blender 2.79b - https://download.blender.org/release/Blender2.79/
  5. TS3 Sound Tool-  
  6. TS3 Clip Tool 2.1 (Blender Plugin) - https://younameitillposeit.tumblr.com/post/650833923910303744/sims-3-clip-tool-for-blender-279-compatible
  7. Easy STBL Manager - https://modthesims.info/d/489424/easy-stbl-manager-game-strings-translations-utility.html
  8. Lucas Rigs:-malefemale.zip
  9. Rigs with Penis bones:-NewRig.zip
  10. Female Rigs with Butt bones :-FemWithButt.zip
  11. Penis mod(if using Riga with penis bones):-

Woohooable Object List:-

Spoiler

AdultMagicBroom

Alter

Bathtub
BedSingle
BedDouble

Bicycle

BoatSpeedBoat
BoatRowBoat
BoatSpeedFishingBoat
BoatWaterScooter

BrainEnhancingMachine

CarSports
CarExpensive1
CarExpensive2
CarHatchback
CarUsed1
CarUsed2
CarNormal1
CarVan4door
CarPickup2door
CarSedan
CarHighSocietyOpen
CarHighSocietyVintage
CarLuxuryExotic
CarLuxurySport

ChairLiving
ChairDining
ChairLounge
ChairSectional

CornerBathtub

CounterIsland
Counter

CrossWood            

Desk

Dollhouse

DoorSingle

Dryer

Easel

ExpensiveAdultBroom

FixerCar
FixerCar.FixerCarFixed

FenceRedwood_Gate        

Floor

Fridge

HauntedHouse

HoleInWall

HotTub4Seated
HotTubGrotto

Igloo

JungleGymTower

KissingBooth

Loveseat

MassageTable

ModerateAdultBroom

MotorcycleRacing
MotorcycleChopper

PicnicTable

Podium

Pot

PoolTable
PoolLadder

RockingChair

Rug

SaunaClassic

Scarecrow

ScienceResearchStation

SculptureFloorGunShow

SinkCounter
Sink    

Sofa
Shower
ShowerOutdoor

ShowerPublic_Dance
ShowerTub

SleepPodFuture

StockadeFurniture 

Stove

SwingSet

Sybian                               

TableEnd
TableDining1x1
TableDining2x1
TableDining3x1
TableCoffee
TableBar

Telescope

Toilet

ToiletStall

Urinal

Urnstone (Tombstone)

WashingMachine

Windows

WorkoutBench

 

 

 

Step 1 - Setting up Blender:

1. Once you have installed blender, open it. Go to Files ===> User Preferences. Click on Add-ons tab, then click on Install Add-on from file button. Navigate to the folder where you have kept that plugin file (io_s3py_animation-2.1.zip).

2.Select io_s3py_animation-2.1.zip and click Install Add-on from file button. Click on checkbox in front of Import-Export: S3PY Animations Tools and click on save User Settings and close the window.

 

 

 

Step 2 - Creating your animation in Blender

This step is separated into four parts.

 

Part I :- Adding Objects and making initial pose.

We will be making animations for Sink object. It's just positioning the bones in a certain way. Female Actor will be using a wrench as an accessories. It will be assigned to her right hand. Note that objects used as accessories can't be animated and you can rotate them only at one axis.

 

Video Tutorial:-https://drive.google.com/file/d/1W04nDjybe7so7rn9OmKRPQG9r8OLZ5cK/view?usp=sharing

 

Part II :- Making a loop.

Now that initial pose is done, we will try to make a loop pose out of it.

 

Video Tutorial:-https://drive.google.com/file/d/1OsprRe9g2JWWGMJGb21JwoDYCccs3kqf/view?usp=sharing

 

 

Part III :- Adding more details.

We will be adding more details to the animations such as repairing sink and wiping sweat from forehead. Those extra bones for Spines, Hands and Legs, comes in play here.

 

Video Tutorial:-https://drive.google.com/file/d/19c2YCVYIrQDJPhFzk24YtU14cgpL1yUx/view?usp=sharing

 

 

Part IV :- Facial Expression.

Final part of this step, adding facial expression. If you look at the video tutorial you will notice that there is an extra pane opened in top left side. I use this to find out when I should play a certain sound. I usually do this after the facial animations but in this case, I have to add extra sound effects such as repairing & clap sounds and we only have two sound sources.

 

Video Tutorial:-https://drive.google.com/file/d/1cj-TN8PkuA54pn2vMzQBglGLQqS9uFa6/view?usp=sharing

 

 

 

Step 3 - Baking and Exporting Animations

Before exporting animations we must make sure that our first frame matches the last frame. To do that follow this steps:-

1.Make sure that there are no yellow keyframes in the dopesheet. If there are any press 'A' once or twice (by keeping the mouse pointer on dopesheet) to deselect them.

2.Now select any armature first and press 'Alt+H' to unhide all bones. Now select all of the bones by pressing 'A' once or twice and go back to the first frame and press 'I'.

3.Now duplicate those keyframes at first frame and paste them at last the last frame. 

4.Do the same with other rig.

 

Please note that you should never save your work after baking or you will not be able to do any changes in the future.

 

Baking the animation is important or you will get some weird animations if you are using a rig with IK. Before baking make sure that all of the bones are selected. Now in 3D panel, go to Pose----->Animations------>Bake Action. In Back Action option, check the options Only Selected, Visual Keying, Clear Constraints and Clear Parents, and click on Ok. Once the process is completed, your animations is baked. Now do the same with other rig.

 

Once you have baked both of animations, go to Files------->Export------>Sims 3 Animation (.animation). In the export pop up rename your animations something unique like this- a_authorname_objectname_posename_posenumber. I have named it a_lucas_sink_repairgirlA_02 for male and a_lucas_sink_repairgirlB_02 for female.

 

Video Tutorial:-https://drive.google.com/file/d/1-REpbcgFmo80YCcGenPWHgs2d6hYtokD/view?usp=sharing

 

 

 

Step 4 - Creating Packages and Adding Data

You will need to make two package files in order to use your animations in game. First file contains your animations and the other one contains data such as in-game name of animations, objects used,etc.

 

Creating Animation.package file:- This file contains all your animations.

1.Open 's3pe' and create a new file. Then go to Resources---->Import---->From file...  Then navigate to the folder containing the exported animations and select the animations and click 'Open'.

1.png.ee98aedf432b5e6db3a351e249fc552e.png

 

2.Once the Import Resources box appears click on Import.

2.png.a889a3fa64f89169e226f24e5280aa39.png

 

3.Now save this file with name similar to this- KinkyAuthornameAnimations. ('KinkyGhosttestAnimations' for this tutorial). There! Your first file is done.

 

Creating AnimationData.package file:-This file contains your animation names and other data.

1.Open 's3pe' again, and create a new file. Then go to Resources----->Add, to add a new resource file.

2.In Resource Details, select _XML 0x0333406C  as type of resource, in Group field type '0x0' and copy paste your first file name (KinkyGhosttestAnimations) in the Name field and click on 'FNV64' to auto generate Instance hash and press Ok.

3.png.631541de1bafd82e89a84e37693d3aee.png

 

3.Right Click on the XML file and select 'Notepad' to edit it. Copy and paste texts from the template below and edit them accordingly. You can also view example for reference. Once you are done save the 

 

Note:-

Categories- None, Oraljob, Handjob, Teasing, Vaginal, Anal

NakedFlags - None, UpperBody, LowerBody, FullBody

 

If you are not using accessory then delete the part from    '<Accessory Key="Accessory">' to '</Accessory>'.

Copy the key name (KinkyGhosttestAnimations.a_lucas_sink_repairgirl_02) and keep it somewhere. It is required later to name your animation.

 

Accessories Offset and Axis:- Consider an  accessory is parented to right wrist.

Axis:-

Unit X - Rotate your wrist like you are waving.

Unit Y - Rotate your wrist like you are patting something.

Unit Z - You can't rotate your wrist around Z but it's something like using screw driver.

 

Template:-

Spoiler

<?xml version="1.0"?>
<WooHooStages>

<!-- Sink /////////////////////////////////-->

<!-- Vaginal -->

<!-- Repair Girl B - Doggystyle -->
<WooHooStage>
    <Creator>Lucas</Creator>
    <Key>KinkyPackageAnimation.a_author_object_animation_number</Key>
    <Category>Categories</Category>
    <LoopMax>LoopNumber</LoopMax>
    <Skill>0</Skill>
    <Objects>Object</Objects>
    <MinSims>SimsNumber</MinSims>

 

    <WooHooActor Id="0">
    <Animation>a_author_object_animationA_number</Animation>
    <NakedFlags>FullBody</NakedFlags>
    <Genders>Male,Female</Genders>  
    <Species>Human</Species>
        <Action>
            <Category>Category2</Category>
            <Partner>1</Partner>
            <Arousal>-50</Arousal>
              </Action>
        </WooHooActor>

 

    <WooHooActor Id="1">
    <Animation>a_author_object_animationB_number</Animation>
    <NakedFlags>NakedFlags</NakedFlags>
       <Genders>Female,Male</Genders>
    <Species>Human</Species>
        <Accessory Key="Accessory">
        <Slot>Slot</Slot>
        <Offset>X,Y,Z</Offset>
        <Axis>Axis</Axis>
        <Angle>90</Angle>
        </Accessory>
         <Action>
            <Category>Category2</Category>
            <Partner>0</Partner>
            <Arousal>-50</Arousal>
              </Action>
        </WooHooActor>
    
</WooHooStage>


</WooHooStages>

 

Example:-

Spoiler

<?xml version="1.0"?>
<WooHooStages>

<!-- Sink /////////////////////////////////-->

<!-- Vaginal -->

<!-- Repair Girl B - Doggystyle -->
<WooHooStage>
    <Creator>Lucas</Creator>
    <Key>KinkyGhosttestAnimations.a_lucas_sink_repairgirl_02</Key>
    <Category>Vaginal</Category>
    <LoopMax>8</LoopMax>
    <Skill>0</Skill>
    <Objects>Sink</Objects>
    <MinSims>2</MinSims>

    <WooHooActor Id="0">
    <Animation>a_lucas_sink_repairgirlA_02</Animation>
    <NakedFlags>FullBody</NakedFlags>
    <Genders>Male</Genders>  
    <Species>Human</Species>
        <Action>
            <Category>Vaginal</Category>
            <Partner>1</Partner>
            <Arousal>-50</Arousal>
              </Action>
        </WooHooActor>

    <WooHooActor Id="1">
    <Animation>a_lucas_sink_repairgirlB_02</Animation>
    <NakedFlags>FullBody</NakedFlags>
       <Genders>Female</Genders>
    <Species>Human</Species>
        <Accessory Key="Wrench">
        <Slot>RightHand</Slot>
        <Offset>0,0.04,0</Offset>
        <Axis>UnitZ</Axis>
        <Angle>90</Angle>
        </Accessory>
         <Action>
            <Category>Vaginal</Category>
            <Partner>0</Partner>
            <Arousal>-50</Arousal>
              </Action>
        </WooHooActor>
    
</WooHooStage>


</WooHooStages>

 

 

4.Once you are done, save by pressing 'Ctrl+S' or by going to 'File----->Save' then close the notepad.

5.After closing it you are prompt to Commit changes. Press Yes and save the package file with the name such as, OKW_KinkyAuthornameAnimations ('OKW_KinkyGhosttestAnimations' for this tutorial) and close it.

6.Now open 'Easy STBL Manager' and open your OKW_KinkyAuthornameAnimations.package

7.Once it's open, click on 'Add STBL'. In the Unique Name field you will type this 'KinkyAuthornameAnimations' and click on Add STBL.

4.png.0fc69964bd35dd06cbfdc915d1d020cf.png

 

8.Once it's done, go to Add a string tab and copy paste the key (KinkyGhosttestAnimations.a_lucas_sink_repairgirl_02) copied from earlier in the Key Text to Hash field. In the table below write the name you want for you animation and click on Add String. Save your work and close the application.

5.png.523f70eb55ebade5b2046b785f335f9a.png

 

 

 

 

Step 5 - Adding Sounds

You can use 'TS3 Sound Tool' if you are looking for any specific sound. You can extract sound from there and import them into Blender's video sequence editor to find out the exact time when that sound should be played.

 

 Add Sounds:-

1.Open your 'KinkyAuthornameAnimations.package' in s3pe.

2.Select an animation and click on 'Grid' button at the bottom (if Grid button is greyed you will need to install s3pe wrappers). In Data Grid box, click on Events to reveal three dots on it's right side. Click them to open another Data Grid.

6.png.2c760bad51520add589c40bf90d81ff9.png

 

3.In the second Data Grid, click on Add and select SoundEvent from the list. Fill up the data as shown in the image below. Repeat if your animation has multiple Sound Events. Press Ok to close this Data Grid and Commit to close the other Data Grid. Do the same for other animations and save the package file.

1571449298_Screenshot(35).png.d8c97b5f47587fcd2a1b3cbb784e8b79.png

 

Note:- 

Event Name - Use audio file names.

Id- Event Number (0x00001, 0x00002,0x00003......)

Int01 - Don't know what that does.

TimeCode- When the sound should be played (3.9 seconds later)

SoundName - Use audio file names.

 

 

 

THAT'S ALL! Now test your animations in game by using the keyword (kinkyauthornameanimations). 

If you are facing any issues feel free to contact me.

 

 

Edited by ghost-17a
Link to comment
  • 2 weeks later...
On 10/2/2021 at 1:19 AM, ghost-17a said:

Int01 - Don't know what that does.

Just saw this.....

I also do not know what exactly it does, but it should ALWAYS be "0x00000003" in respect to sounds in animations.

(look through the clip files in the game FullBuild0.package if you want to see it. I.e. scripts in animations use 0x00000007 usually)

 

2 hours ago, TakumiiSakura said:

Angle and Offset?

Good question, I am also interested how it works without tiring try and error

Link to comment
3 hours ago, TakumiiSakura said:

Angle and Offset

 

1 hour ago, Clydie said:

how it works 

 

I'm not the best guy to ask but here's how I do it.

 

First take care of angles. I think you can only rotate an object on one axis. Press N in blender to see transform properties. Change the rotation mode to XYZ Euler to get the values in degrees. As you can see in the image below, I have to turn object at 90 degrees on AxisZ for my animation.

540289039_Screenshot(49).png.89f78fd517aac7ba0e227fab7e04e9a3.png

 

I haven't found any effective way to find offset so you have to try changing the values during the game.

If you palm is facing ground.

Offset X - direct of you palm is -X and opposite is +X

Offset Y- where you finger point is +Y and opposite is -Y

Offset Z- Left is +Z and Right is -Z.

 

Or you can try feeding the values in Location properties but you will need to add "0.01" to X value and subtract "0.04" from Y value(it works for me most of times).

For this animations values were "0,0.04,0" in XML file(in Blender "-0.01,0.08,0").

 

 

Link to comment

Thank you for your reply. Will test your way to do.

Always went the other way around and aligned the object (i.e. dildo) first in a straight angle and then put the hand on the object, test in game if it has the right position, then say child off in Blender and then it works too. But this first step is a loong way to find the right numbers. Many time consuming try and error !

Did animations with a dildo in one hand and a hand mirror in the other, a nightmare for me. But finally I got it done in a -for me- acceptable way ?

Link to comment

Ah, ok! I'll see how it turns out in my animation. Well, I hope that it won't be too bad LOL.

 

But to your animation video: It was a bit too fast for me + It confused me that there was no cursor?

I had to slow it down a bit since I didn't understood things at because you're so experienced in animating. But it was an amazing Tutorial video apart from the speed. But it might be that I'm the problem since I'm not too experienced with Blender. I'm using it since one year now and just began animating in spring this year.

Link to comment
  • 4 weeks later...

I have made a small tutorial on how to add visual effects to animations, I have also made some simple effects to get things started, the package containing the effects and a list of all base game effects are attached to this post.

 

I highly recommend you read the first post by ghost-17a and familiarize yourself with the FNV Hash tool found in s3pe as this is needed to understand this tutorial.

 

Visual effects are added as animation events just like sound, you use Add EffectEvent to start the effect but unlike sound you also need to stop the effect (Add StopEffectEvent), otherwise the effects will remain active across different animations until it is replaced by another effect (like the zzz bug from the Dream Pod). The effects I made are all one-time effects (0.4s) but I still recommend stopping them.

 

Adding a visual effect
Unfortunately the s3pe CLIP wrapper doesn't map the EffectEvent entirely correct, Unknown01 and Unknown02 are actually the EffectNameHash (FNV64) and EffectNameHash is a unique ID used to stop the effect.
 

s3pe1.png.55d75c5420857657edaff87fd928cc06.png

 

s3pe2.png.abdd6d2d9694ee2cd20e9fc9567fc2a8.png

 

Field explanation:

 

EventName:
I recommend using the name of the effect.

 

Id:
Unique event ID in this animation starting with 0x00000001, just keep counting (in hex), all events, including sound.

 

Int01:
All base game animations have the value 0x00000003.

 

Timecode:
Time in seconds into the animation when the effect should start, just like playing sound events.

 

Unknown01 & Unknown02:
This is the FNV64 hash of the effect being played, it needs to be split into the two Int32 fields (Little-endian, right to left), d47_climax_far1_x=0x1829B1736261F653 split into 0x1829B173 and 0x6261F653.

 

EffectNameHash:
Unique FNV32 hash to stop the effect, if you play an effect multiple times you should add a number to the name like this, d47_climax_far1_x1=0x1C2552F8, d47_climax_far1_x2=0x1C2552FB etc.

 

ActorNameHash:
Hash of the ActorName, usually x (0x050C5D67) or y (0x050C5D66), if you are using different names you need to calculate the hash.

 

SlotNameHash:
Slot/bone to attach the effect, b__Penis2__=0xE52D685C

 


s3pe3.png.f6514b5bfee47dc73594fc525f87fdf8.png

 

Field explanation:

 

EventName:
I recommend using the name of the effect.

 

Id:
Unique event ID in this animation starting with 0x00000001, just keep counting (in hex), all events, including sound.

 

Int01:
All base game animations have the value 0x00000003.

 

Timecode:
Time in seconds into the animation when the effect should stop.

 

EffectNameHash:
The unique FNV32 hash from above to stop the effect.
 

 

Denton47_VFX.package contains the following effects:

 

d47_climax_far1_x (0x1829B1736261F653) Unknown02=0x1829B173, Unknown01=0x6261F653
d47_climax_med1_x (0x1F9D842AC3B2ACA4) Unknown02=0x1F9D842A, Unknown01=0xC3B2ACA4
d47_climax_close1_x (0x91ACD8298E011B4A) Unknown02=0x91ACD829, Unknown01=0x8E011B4A

 

I have not been able to test the effects with the new AP clips, there may be some alignment issues.
 

Denton47_VFX.zip effect_names.zip

Link to comment
  • 4 weeks later...
  • 3 weeks later...
  • 3 months later...
Posted (edited)

Hello. I'm trying to modify an existing animation in Blender. Problem is when I load it, one of the characters is in the wrong position. So I move him to the correct one using G and rotate him using R and when I play the animation it looks as if it works, but when I try it in game his position is still the wrong one.

 

I tried applying keyframes and baking the animation, but it's the same result. The only thing that works is deleting the part that says "b__ROOT_bind__" from the Dope Sheet, but his feet, hands and hip movement mess up by doing that.

Edited by IroquoisPliskin
Link to comment
On 5/13/2022 at 8:56 PM, IroquoisPliskin said:

The only thing that works is deleting the part that says "b__ROOT_bind__"

See no solution as to redo the b_ROOT_bind_ for all corrupted frames, but

On 5/13/2022 at 8:56 PM, IroquoisPliskin said:

when I play the animation it looks as if it works

If the animation looks good in Blender, try to bake the animations by first using "A" to mark the actor, then "alt H" then go to Pose/Animation/Bake Action and check "Only Selected" , "Visual Keying" , "Clear Constrains" and "Clear Parents".

If this is not working, you must redo the animation for this actor I am afraid.

Link to comment
On 5/14/2022 at 4:56 AM, IroquoisPliskin said:

Hello. I'm trying to modify an existing animation in Blender. Problem is when I load it, one of the characters is in the wrong position. So I move him to the correct one using G and rotate him using R and when I play the animation it looks as if it works, but when I try it in game his position is still the wrong one.

 

I tried applying keyframes and baking the animation, but it's the same result. The only thing that works is deleting the part that says "b__ROOT_bind__" from the Dope Sheet, but his feet, hands and hip movement mess up by doing that.

 

Does his hands and feet move in the animation?  If they are fixed or holding onto something like a mattress the animator might have used IK settings to lock them in place which won't be there when you go to edit the animation later.

Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...