Jump to content

OB:Remastered Unreal Modding - What We Know So Far


Recommended Posts

Posted

Thank you for your work!
 

32 minutes ago, Krasue said:

 

Downsides
Currently, we can’t create new assets/object easily. All original game forms are replicated in Blueprint format, which can’t be decompiled and seems to reference a CPP baseclass. In theory, converting to JSON and repacking into new PAKs might work, but I haven’t tried it myself. It depends on whether the forms are modular or hardcoded (for adding new ones).

 

Also, we haven’t figured out how to trigger events from the original engine in a way Unreal can read. You can add new dialogue in the old Construction Set, for instance, but there’s no interface between that and Unreal right now. UE4SS might help, but R&D is still ongoing.

 

I'm not sure if you have seen the news post on nexus https://www.nexusmods.com/news/15252

 

It explains how things in oblivion engine get mapped to unreal. It may cover some of the downside mentioned. I believe some had managed to add new asset and link it properly. (Unconfirmed, just heard somewhere that it works)

Posted

Excellent glad to see specifics and technicalities described and shared. We need this knowledge to know where and how to direct our efforts thanks so much Krause a big help.

 

I modded extensively for the original Oblvion and some for Skyrim so will be watching to see what we discover and what is shared..

 

Please keep sharing as you can.

and thanks again

Cris

Posted (edited)

Looks amazing @Krasue!  I've been digging hard and working with people over on the oblivion modding discord.

What we've really been trying to test is how to add unique assets into the game.  I've been able to add an esp and place an existing object in the game in a unique location.  But sadly even with using the UE dev kit, I can't get the actual model to show up in game:

Proof of concept:

 

Spoiler

 

 

For anyone who wants to hop into the discord its here:

https://discord.gg/VE3cjkn3


In case this discord doesn't work because it was formed from reddit, we can always make our own.  I'm up for creating one as well and I can repost all of my findings there.

Edit:

I also tried to import json directly to UE dev kit, and I have no idea what to classify it as:

image.png?ex=680b8e57&is=680a3cd7&hm=dbf5746683a0650a0fcacdeed75777915db193954198f099e9417cbb52610922&=

Edited by Silvist
Posted (edited)
37 minutes ago, Silvist said:

What we've really been trying to test is how to add unique assets into the game.  I've been able to add an esp and place an existing object in the game in a unique location.  But sadly even with using the UE dev kit, I can't get the actual model to show up in game:

I also tried to import json directly to UE dev kit, and I have no idea what to classify it as:

 

Is that Fur Shield a new item? As in with a unique asset (Or at least attempted)?

 

Inside of FModel (Where I'm guessing a lot people are getting Jsons from) you can see what the UASSET's derived class is. So for example, "SK_HumanoidFull" (The main basemesh of the game) has the SkeletalMesh class. That's a class that is inherent to Unreal. Same goes for "MIC_Imperial_Head_F_01" with it's class being "MaterialInstanceConstant". When it comes to the forms, however, they are also stored as UASSETs and you can see their class but it's not something inherent to Unreal: 


image.png.a0726880021d8b9d9b783d349280160e.png

 

Because of this, I don't think we can easily make these edits inside of the Unreal Editor without having access to the baseclasses that these forms are derived from. That said, that's a guess. If you managed to get a unique item into the game without it crashing, then you're doing something right. Not that I've looked too much into it, I'm a hardcore lurker when it comes to the modding discords.

 

The only theory I personally have at the moment, is that we might be able to edit the UASSET directly somehow or convert it to a Json, edit it, and then convert it back and repackage it without using the editor. 

Edited by Krasue
Posted (edited)

@Krasue - So what I did was I created a unique entry of a copy of the fur shield with a different name just FurShieldTest, and then added it to the arena lockbox.  If you notice if you equip the item, the character even behaves like a shield is in the hand.  But the asset is invisible.

Yea I realized the SM was static mesh, and T_ was the texture.  MIC looked to just be a json with uassets.

Let me load up the CK and I'll post what modifiers I found in there that did not exist in vanilla oblivion.  I saw some kind of formID reference, that we've been trying to find inside of any json inside of the big utoc.

Here are the files I created, which you can even view inside of fmodel:


furtest.zip

 

Fur.esp
 

 

Edit:

Basically what I eventually did because every unrealpaker wasn't working, is grabbed the actual UE5.3 dev kit.  Then I would export from fmodel, and import to blender.  Then assign tex, export as fbx to import into UE5.3.

Then I assigned a chunk over 20 to the 3 meshes:
 

Spoiler

image.png?ex=680b6d6a&is=680a1bea&hm=60ab9b4c8c99ea754dd9239bc92f9eb638bf28e2f86444ad206680270e5ff2b4&=


 

Then created a the pak utoc and ucas.

Edited by Silvist
Posted

Okay so I set AltarESPMain.esp as the active, because it seemed like the biggest.  As you can see by the *, these are all modified by this esp which is not a vanilla esp:

 

Spoiler

image.thumb.png.501186b4f70f4e432724ee6491d361ae.png


Now here's where it gets interesting, notice the name tab:
 

Spoiler

image.png?ex=680bdafe&is=680a897e&hm=92d1a7673883f4b74077bfca9bc9348d67ee47889e0e2de9fccaf34667d29d3c&


LOC_FN is the naming convention, which I think is used with UE somehow.

Posted
12 minutes ago, Silvist said:

Basically what I eventually did because every unrealpaker wasn't working, is grabbed the actual UE5.3 dev kit.  Then I would export from fmodel, and import to blender.  Then assign tex, export as fbx to import into UE5.3.

Then I assigned a chunk over 20 to the 3 meshes:

 

I just checked over your file and for some reason it contains engine content (probably why it's over 100mb for an untextured shield). It doesn't look like it's been quite packaged correctly. Is this the one you were using with your fur shield?

Posted

May as well give some further info based on what was provided here, as well as drop in some of my own findings!

Firstly though, I'd like to point out I made an animation framework in Unreal Engine 5 already, called Sugar Cake Animation Framework for Palworld (https://michaelpstanich.com/?mode=modhack&view=2024-02-19_Palworld_ProjectSugarCake), if someone can let me know or help me find the hooks between the simulated Gamebryo instance created by the Alter plugin or help me reverse engineer it, then I can port over the framework as well as all the advanced animation set-ups we have, since it all runs on base Unreal Engine logic. This would massively speed up development in regards to a framework and also set us up for custom mesh logic. (I've spent the last year doing a TON of this stuff) The only issue I have at the moment is blending between the 'old' logic and new logic, I can find functions for many aspects in UE but it's a very slow process without having that Alter plugin figured out.

Skeletons
Modifying skeletons in Unreal is a bit annoying, It's worth mentioning that if something is created to target a specific skeleton, say, a custom skeleton added by another body, but that skeleton is either overwritten or doesn't exist, it can cause things like animations, meshes swaps, physics, ect, to fail. It'll be important to keep this in mind as mods come about, I was personally just going to use a spring controller for physics since it doesn't require skeleton additions but since the armor is overlayed rather than replacing according to your own accounts, then it won't matter till we want to use multiple different bodies. The main issue is for animation purposes we may want extra 'special' bones, this would need to be standardized at some point if we plan to have a skeleton animate-able and remain cross-compatible. iirc Unreal 5.3 does have live re-targeting, something I haven't played with yet, so that could be useful in this regard but I haven't tested it at all and it may not be an issue at all.

Logic / Scripting
From what I've seen, the old scripting stuff from Construction Set still works, my knowledge on older mods is non-existent but I can confirm we can inject custom Blueprints using UE4SS and run whatever logic we'd like. This has a good number of benefits in comparison to Gamebryo's paralleled scripting, especially for storing data. The main issue here is that Oblivion R refreshes its world context every time you hit a loading screen. They use level transitions instead of level streaming when switching to a new location through a loading screen, this means storing 'active' actors requires extra work. I managed to work around this by creating a dummy widget (which doesn't require world context to function) and applying some logic on that. Could theoretically use anything that doesn't require world context, just has to not be tied to the 'level' or 'world' since it's cleared every loading screen. The game appears to re-create actors upon entering a new zone, so any dynamic edits would also need to be re-applied.

Being able to inject BPs is also extremely handy for reversing certain aspects of the game which only show at run-time, such as exporting all actors and components, active morph target values, ect.

Additional notes

 

Packaging / Pak Loading
OblivionR seems to package with Unreal Engine 5.3.x with IOStore, this means any tools that support iostore/zenstore are fully functional and most have 5.3 support, which will make modding the unreal side of things easier. To get packages loading it's recommended to install Unreal Engine v5.3.x installed and name your project "OblivionRemastered" (the same as the game's set project name), then use ChunkIDs to split up things into their own .pak files with Packaging. This is exactly what we do for Palworld modding but Palworld uses UE5.1.x instead. Thankfully it doesn't look like they made any engine edits that interfere in this regard, but we can't export the Alter plugin they use to run the original game logic so there could be more packaging steps in the future. The game appears to have recursive pak loading enabled which means any .pak in the Paks folder will load in without issue, we don't need a .pak injector. (We still need a way to spawn things for logic however, UE4SS allows us to do that with their BPModLoaderMod)

Custom Assets
You can inject assets and spawn actors in-game using Unreal Engine, it appears all the physics are also tied to Unreal, if you spawn a box with collision actors will collide and game logic responds. What we don't have to my knowledge is a way to tie this between the normal game logic and Unreal Engine for custom content made using the Construction Set. I've not dived deep enough to see if we can edit save data in some way, so currently items spawned with Unreal are just temporary.

As for other things, I've been rather disorganized without a specific target in-mind. Was going to try and make a nude body and mess with that for a bit so that the paywall jerks don't get to scam more people, and we can have a proper option even if my version probably won't be the best. lol

Posted
13 minutes ago, Spirit_Shard said:

Skeletons
Modifying skeletons in Unreal is a bit annoying, It's worth mentioning that if something is created to target a specific skeleton, say, a custom skeleton added by another body, but that skeleton is either overwritten or doesn't exist, it can cause things like animations, meshes swaps, physics, ect, to fail. It'll be important to keep this in mind as mods come about, I was personally just going to use a spring controller for physics since it doesn't require skeleton additions but since the armor is overlayed rather than replacing according to your own accounts, then it won't matter till we want to use multiple different bodies. The main issue is for animation purposes we may want extra 'special' bones, this would need to be standardized at some point if we plan to have a skeleton animate-able and remain cross-compatible. iirc Unreal 5.3 does have live re-targeting, something I haven't played with yet, so that could be useful in this regard but I haven't tested it at all and it may not be an issue at all.

 

The ability to inherent animations from other skeletons is something that I think was introduced in one of the later releases of the engine because it certainly wasn't in UE4. We can't make additions or changes to the main skeleton because of all the data associated with it that we don't have access to. OBR uses a control rig for its IK but that can't be extracted or studied so it's best to leave the main skeleton alone and use what I outlined above. We probably don't want loads of different skeletons as that would definitely overcomplicate things, but maybe one universal skeleton with all the bones we need can be used going forward. Any animations imported on that skeleton should work even if most of the gameplay is driven by the main one.

 

There is a definitely need for standardisation and communication with something like this. A body mod with physics applied probably shouldn't be rushed out the door as it will ultimately effect anything that relies on that mod such as armor replacements.

 

Quote

Logic / Scripting
From what I've seen, the old scripting stuff from Construction Set still works, my knowledge on older mods is non-existent but I can confirm we can inject custom Blueprints using UE4SS and run whatever logic we'd like. This has a good number of benefits in comparison to Gamebryo's paralleled scripting, especially for storing data. The main issue here is that Oblivion R refreshes its world context every time you hit a loading screen. They use level transitions instead of level streaming when switching to a new location through a loading screen, this means storing 'active' actors requires extra work. I managed to work around this by creating a dummy widget (which doesn't require world context to function) and applying some logic on that. Could theoretically use anything that doesn't require world context, just has to not be tied to the 'level' or 'world' since it's cleared every loading screen. The game appears to re-create actors upon entering a new zone, so any dynamic edits would also need to be re-applied.

Being able to inject BPs is also extremely handy for reversing certain aspects of the game which only show at run-time, such as exporting all actors and components, active morph target values, ect.

 

It'd be difficult to make a deep framework with these limitations, but that's only if we were relying on Unreal alone. That's why I do think that actor values that can be stored and tracked across instances, will probably be better handled by Gamebryo, with Unreal stepping in when an animation needs to play. It's also worth noting that I think Gamebryo still handles the AI of NPCs and, if we wanted paired animations, we'd need a way to stop those NPCs from walking around and doing stuff. I could be wrong though. When/if I have time I'd like to look more into what's possible with BP injection and see how much is possible with it.

 

Quote

As for other things, I've been rather disorganized without a specific target in-mind. Was going to try and make a nude body and mess with that for a bit so that the paywall jerks don't get to scam more people, and we can have a proper option even if my version probably won't be the best. lol

 

As I mentioned before, I do think that rushing one out the door wouldn't be wisest move but at the same time, I can see how people are impatient. Starfield's body modding scene is a bit of a mess due to early adoption of an unfinished asset. Making a nude body, even one with physics, is not that difficult but I personally think that it needs to be made with future use-cases in mind. Armor replacements are something I think are on the horizon and considering how OBR has that all set up, having a good base body to work with is going to be essential. Or maybe I'm overthinking it.

Posted (edited)

In Unreal they have a feature called Animation Retargeting. It's very easy to do and it lets you use animations from one skeleton on another. There's a lot of settings that can help you copy over animations that you'd think would never work, but they do. The tool is very powerful.

Here is a link to a video explaining how to use it.


You could use this to copy over animations from https://www.fab.com/ which has animations built for unreal and will be easier to retarget.

You could also use this tool to copy over basically any animation from any game (even skyrim animations) into oblivion. :)

Edited by Feldspare
Posted

Thank you for posting this.  I've been working for some time on a race for starfield, (which does character customization outside of the game, in blender, eventually) and would like to have all of its planned functionality added to oblivion as well.  But i'm really anal about animations that look bad, and oblivions... well... might be worse than vanilla skyrim imo 😂 so getting those swapped out is sort of a prereq for me doing much in oblivion.  Good to know that swapping that is somewhat feasible!
 

9 hours ago, Krasue said:

As I mentioned before, I do think that rushing one out the door wouldn't be wisest move but at the same time, I can see how people are impatient. Starfield's body modding scene is a bit of a mess due to early adoption of an unfinished asset. Making a nude body, even one with physics, is not that difficult but I personally think that it needs to be made with future use-cases in mind. Armor replacements are something I think are on the horizon and considering how OBR has that all set up, having a good base body to work with is going to be essential. Or maybe I'm overthinking it.



In working on the starfield body/race, a lot of thought has gone into planning/designing both the body and a framework for totally custom heads, trying to allow for other future things I want implemented, I frequently have the thought "man, i wish this was unreal and I could just XXXXXXX". Now that it's here i'm sort of like a deer in the headlights...  I too tend to overthink things (and have spent over a year overthinking the starfield project :P), and feel like I have a pretty good pipeline/framework in mind.  But, there are so many things i'm not sure about how to do in unreal, or if they're possible, or theoretically possible... 

Posted

There are plenty of Unreal Engine adult games on F95 Zone with many animations. Does it mean it would only take plugging in and connecting them and they would work for Oblivion Remaster?

Posted
10 hours ago, Spirit_Shard said:

Skeletons
Modifying skeletons in Unreal is a bit annoying, It's worth mentioning that if something is created to target a specific skeleton, say, a custom skeleton added by another body, but that skeleton is either overwritten or doesn't exist, it can cause things like animations, meshes swaps, physics, ect, to fail. It'll be important to keep this in mind as mods come about, I was personally just going to use a spring controller for physics since it doesn't require skeleton additions but since the armor is overlayed rather than replacing according to your own accounts, then it won't matter till we want to use multiple different bodies. The main issue is for animation purposes we may want extra 'special' bones, this would need to be standardized at some point if we plan to have a skeleton animate-able and remain cross-compatible. iirc Unreal 5.3 does have live re-targeting, something I haven't played with yet, so that could be useful in this regard but I haven't tested it at all and it may not be an issue at all.


I have a (somewhat theoretcial) blender based setup that i've been working on while developing the starfield body/race i've been working on that negates a lot of the need for standardization, but not sure if/how those things apply in UE5, or even how some things work. It's somewhat like how daz studio can autofit clothes and they follow the body, but tends to be better fitting/minimal distortion compared to what normally comes out of daz, though in some cases it can be higher effort for mod authors. based on modifiers + geonodes instead of just transferring morphs.  Also have some ideas about ways to have dynamic weighting for cloth, body physics, potentially (maybe) dynamic topology changes to properly capture small details like pressure where armor is resting on the skin, things like that. though those are the somewhat theoretical parts still lol

Since you have experience in unreal - is it possible, or theoretically possible, to add unreal plugins/frameworks?  Mainly i'm interested in chaos flesh (if it's not already in of course), ML deformer, and groom/strand hair?  I'm trying to push realism as far as it will go for characters and any/all of those would help a ton I think

 

Posted
34 minutes ago, Nepro said:

There are plenty of Unreal Engine adult games on F95 Zone with many animations. Does it mean it would only take plugging in and connecting them and they would work for Oblivion Remaster?


If you're able to extract the animation in literally any readable format and convert to fbx, the animation can be used.  In fact, if you're familiar with virt-a-mate, you can actually just record animations in that (even procedural/dynamic ones), export them to blender, and convert.  There are literally thousands of animations/scenes in VAM, many of which are even mocapped, all of which have the licensing conveniently listed next to the download link.  I converted a few as a proof of concept for starfield, but never got around to doing a full pack, but the process is relatively straightforward.  For unreal it's even less work, it can actually do them all in bulk once they're in .fbx 

Posted
2 hours ago, drp23 said:


If you're able to extract the animation in literally any readable format and convert to fbx, the animation can be used.  In fact, if you're familiar with virt-a-mate, you can actually just record animations in that (even procedural/dynamic ones), export them to blender, and convert.  There are literally thousands of animations/scenes in VAM, many of which are even mocapped, all of which have the licensing conveniently listed next to the download link.  I converted a few as a proof of concept for starfield, but never got around to doing a full pack, but the process is relatively straightforward.  For unreal it's even less work, it can actually do them all in bulk once they're in .fbx 

How did you export them to blender? I looked into that ages ago but never figured out how to do it

Posted

Making some major progress on reversing the Unreal Engine side of things, and I also got modifying assets at run-time working across loading screens/instances but with a few quirks we'd need to find hooks for. I'm slowly working through the game's internal plugins and figuring out how to generate a UE project with proper references and dummy assets so we can pull data much easier. Here's some updates...

Game Logic is stuck in a plugin...
All the game logic runs through a few plugins, namely there's OblivionThirdParty and a few Altar labeled plugins. The Altar plugins seem responsible for translating the actual game to Unreal so it can render things, and also receive things like collision callbacks. All objects spawned from the base game is its own AActor but with a base class of "VModdable---" which seems to hold some base data related to this communication. There's a "VTESRefComponent" on every single object that I presume may hold references between the the game's logic and Unreal Engine, however the actual object is handled by a plugin so until I get actually get a working chain of references and get a UE project with working hierarchy this won't be easy to really understand.

Naming Convensions
It seems like the devs made quite a few custom objects and versions of base-classes which is held in a few of the plugins, all are prefixed with a "V" such as "VActorBase" and "VFormData" which seem to be translations from Gamebryo's base types. By default, I can't dummy these assets without the plugins, but a lot of data is transparent through Unreal Engine by just creating an actor reference and setting up the correct variables. I presume by using these we could interact with the Gamebryo side of things through Unreal and vise-versa. (This could be critical for an Animation Framework to function properly, since animations are all handled on the Unreal side of things it appears?) Additionally, all the base game assets have a Blueprint version listed in the .pak files, these are under the Forms folder, however each reference generic classes found under the Dev folder. I presume the Dev folder is where they set up containers and general classes, then "Forms" is what stores all the base game's translated assets.

Obfuscation through lacking toolset
Some bad news, since a lot of the heavy lifting is done through plugins and modules they've built in a non-standard way, it's not easy with existing tools to really dig into it. There is a ConstructionKit64 plugin they made and ship with the game which references some base-game plugin related functions, this most likely holds the loading functions for OBscript and 'og' mod style data. It's very difficult to tell exactly what's happening since tools for Unreal Engine, while still awesome as they are, lack the needed depth outside direct Unreal Engine content/functions, once things become custom such as new plugins/modules stuff like UE4SS struggles to detect and pull data, the best we got are some basic headers that are rather broken and requiring a lot of fixing.

Adding New Items/Animations/Meshes
So we can spawn in stuff with relative ease, however getting them to interact properly with game systems is a bit more complicated. Objects are not just standard meshes but rather one of the custom version of meshes with a "V" prefix I mentioned before. This means in-order to properly add new objects on the Unreal side we'll need to replicate these custom objects with the appropriate data. I've not gotten to pulling this apart but I'm hopeful once I get some plugins figured out I'll have at least a few updates on this. This also affects some mesh replacements since these custom mesh objects hold critical gameplay data. (This needs a lot of research)

 

FormID Format is different between OBscript and Unreal
Was noticed by someone in one of the discords (I won't mention them by name on a NSFW website like this lawl, but they can speak up to take credit if they'd like). The FormID is in a standard Hex format within Oblivion OG/Construction Set, however when translating to Unreal Engine it's stored as a Decimal value. And odd choice but probably done to prevent casts. The Altar functions appear to take in the Decimal version of the Hex, you can find these formIDs in FModel with the blueprints I mentioned before so we don't even need Construction Set to get them for Unreal, however I've not really been able to do much with them yet since I'm stuck trying to figure out the plugins.

Morphs and FaceGen Data are a static array index, many things use static array index'
A lot of vanilla style data is stored in really simple data containers, such as a large float array or large int array. It seems they have some sort of mappings within the plugin to translate this data to specific sliders, traits, ect. They also heavily use Enums for different states and definitions, this may make it more difficult to add new states since enum definitions are immutable within Unreal Engine after compiling.

There's more I've slowly been figuring out but I've written enough here for now, if you're curious on what I'm working on or want to help, I encourage you to join our discord, The Broken Chatbox. Every server I've been in for "Oblivion Modding" keeps up this "anti-woke" bullshit while being the opposite of productive, so I'll most likely just stick to our own welcoming community instead of dealing with random transphobes and bigots... >.> (This modding scene is going to be a disaster if we don't start kicking these people around a bit >.<). When I get a working Unreal project, I'll upload it for others to use, can get a link in our discord.

Posted
9 hours ago, zechosen said:

Can anyone check if its possible to change NPC looks?

 

NPC data such as face morphs is stored in UASSETs which make it difficult to modify. That said, difficult to modify doesn't mean impossible. In theory we could recreate the UASSET form data by recreating the base class in Unreal but this hasn't been tested yet. The same thing applies to pretty much all cosmetic data in the game (Including what models are used when you spawn an item). If we can recreate that data, it might be possible to also add new items into the game but more R&D needs to be done first.

 

7 hours ago, Nepro said:

There are plenty of Unreal Engine adult games on F95 Zone with many animations. Does it mean it would only take plugging in and connecting them and they would work for Oblivion Remaster?

 

A couple of people have mentioned taking external animations and retargeting them, and while that is possible, I think it'd be better to come up with new animations that could fit both the body proportions and a new framework (when the time comes). 

 

6 hours ago, drp23 said:

Since you have experience in unreal - is it possible, or theoretically possible, to add unreal plugins/frameworks?  Mainly i'm interested in chaos flesh (if it's not already in of course), ML deformer, and groom/strand hair?  I'm trying to push realism as far as it will go for characters and any/all of those would help a ton I think

 

ML deformer is built into Unreal but OBR's skeleton makes use of corrective bones and a control rig (an asset type in Unreal Engine) to drive them. In my examples, I attached the breast bones to an already existing set of pectoral correctives. So far there haven't been any noticeable issues outside of the quick and dirty rigging job.

Posted
1 hour ago, Krasue said:

A couple of people have mentioned taking external animations and retargeting them, and while that is possible, I think it'd be better to come up with new animations that could fit both the body proportions and a new framework (when the time comes). 


VAM actually has plugins that correct proportions + procedurally align bones between actors, change speed, etc based on whatever logic you input.  Idk if anyone wants to dig into all of that too deep, but as far as proportions + alignment goes, that could technically be accounted for beforehand.  

Another thought i've had, which i'd been planning to explore in starfield (but hadn't gotten around to it), was to make a retargeting setup in NAF blendgraphs to retarget vanilla animations to actors of different proportions, or even totally different skeletons. (At one point, i was planning on just making a flat out daz g9 to starfield pipeline, so you could just play as whatever daz character you wanted, but eventually decided to upgrade that a bit further bc daz characters looked very cartoonish next to vanilla starfield heads, which are super high-density in the face).  I was thinking there could be a way to also have a procedural alignment system for actors, like some sort of IK thing that aligns hips instead of hands/feet.  But we should probably take things one step at a time here lol

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
×
×
  • Create New...