Jump to content

SlaveTattoo position exporter for RapeTattoo's


Recommended Posts

SlaveTattoo position exporter for RapeTattoo's

View File

Description

This is a simple tool for exporting your slavetattoo's into the format required for RapeTattoos, along with automated positioning based on reference color-based maps. Just quickly threw it together so I wouldn't have to go through the hassle of manually mapping out tattoos. It supports only face, and body. Not for any other reason other then I was too lazy to do hands. Although programmatically, it would be extremely simple to include if you want to (Just a matter of copy/pasting)

 

 

How to use

  1. Click the Exporter.exe to open the program. (Or compile the software from the source)
  2. Put the absolute path of your slavetats folder for your desired mod. IE: C:\SkyrimSEMods\mods\SlaveTats AIO5\Textures\Actors\Character\slavetats\
  3. Allow the program to read all your SlaveTattoo json files for information, then your DDS files for mapping out the physical position
  4. tats_output.json will be generated after the software is complete. Copy the elements into your Documents\My Games\Skyrim Special Edition\JCUser\rTats\settings.json file from RapeTattoos, and or your template file from the mod.
  5. Run your settings.json file through an online JSON format validator to insure there's no errors: https://jsonlint.com/

 

How to modify position definitions

All the body parts are crudely defined by colors exact colors (RGB). You just grab a female body texture, and paint it the specific colors contained inside my reference pictures. You MUST retain the original sizes, which is 1024x1024 for the body and 512x512 for the face.

 

License

MIT - https://choosealicense.com/licenses/mit/

You can do WHATEVER you want with the source-code or binaries. I do not care

 

Known Issues

  • Little error handling, if you have trouble with the application chances are files are missing
  • Does not map HAND tattoos yet due to lazyness
  • Probably mixed up left/right on some of the arms/legs. Easily corrected by just color swapping
  • Assumes your files are all RGBA

 

Other

Virus-Total: https://www.virustotal.com/gui/file/d4fcb7c5f97df720a09f452f730ee9db88e94cdf86145feb2d4ab22999ef4f63/detection

 

 


  • Submitter
  • Submitted
    02/01/2023
  • Category
  • Requires
    https://www.loverslab.com/files/file/3587-rapetattoos/
  • Regular Edition Compatible
    Yes

 

Link to comment
On 2/4/2023 at 7:25 PM, Loopmc said:

Don't know why but crashes when used for CVScrawlsB, it straight up fails it might be handy for others to know which is crashing it.

Don't know why but his "texture" json key was "textureB". Either he made a mistake, or that represents a different type of overlay?

 

I added error handling in 1.0.1

Link to comment
  • 1 month later...
  • 2 weeks later...

Thanks for the mod!

FYI: you can easily multithread such for loops with OpenMP:
(also need to enable /fopenmp in visual studio)
 

@@ -320,7 +320,9 @@
                                directory = entry.path().string();
                        }

-                       for (const auto& elem : json_obj) {
+                       #pragma omp parallel for
+                       for(int i = 0; i < json_obj.size(); i++){
+                               const auto elem = json_obj[i];

                                if (!elem.count("area") || !elem.count("texture")) {
                                        cout << "Incorrect format, or missing 'area'/'texture' on element: " << endl << elem << endl;

 

 

Attached the modified source and binary below

tat position exporter.exe Source.cpp

Link to comment
  • 1 month later...
On 3/20/2023 at 11:30 PM, yeahhowaboutnooo said:

Thanks for the mod!

FYI: you can easily multithread such for loops with OpenMP:
(also need to enable /fopenmp in visual studio)
 

@@ -320,7 +320,9 @@
                                directory = entry.path().string();
                        }

-                       for (const auto& elem : json_obj) {
+                       #pragma omp parallel for
+                       for(int i = 0; i < json_obj.size(); i++){
+                               const auto elem = json_obj[i];

                                if (!elem.count("area") || !elem.count("texture")) {
                                        cout << "Incorrect format, or missing 'area'/'texture' on element: " << endl << elem << endl;

 

 

Attached the modified source and binary below

tat position exporter.exe 254.5 kB · 6 downloads Source.cpp 8.75 kB · 2 downloads

 

The lines printed before system("pause") should maybe be delayed until all json files have been processed? that way, only one pause needs to be added just before the program exits and the program can just print all errors at the end.

Link to comment
  • 10 months later...

I've read all your comments and I have an idea, is it possible to have the program automatically skip invalid tattoos (automatically skip those files that don't match the rape tattoo json format), and after generating the results, output a detailed report to the file (both successful and unsuccessful)

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...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. For more information, see our Privacy Policy & Terms of Use