Watch Dogs - customOutfits mod

Discussion in 'Game Tweaks and Modifications' started by infiniium, Oct 6, 2015.

  1. infiniium

    infiniium Member Guru

    Messages:
    168
    Likes Received:
    1
    GPU:
    Sapphire NITRO R9 390 8GB
    Watch Dogs - customOutfits mod & outfit modding tutorial

    ***** customOutfits by infiniium *****

    !!! WARNING - KNOWN ISSUE !!!

    This mod adds outfits to the clothing store. If you buy any modded outfits, then remove the mod, your save file will still contain the data about the outfits that they are bought, and should you later install the mod again you can't buy the outfits. A workaround is to make a copy of your save files before installing the mod, or when you want to remove the mod. When you ever want to install the mod again just restore the save files.

    *** UPDATES ***

    v3 2016-05-30

    [​IMG]

    - Added The Silver's Punisher outfit
    - Fixed a bug with the char36 head

    Download:
    The patch files include everything from v3a_extended (cars, weapons), the loose only my stuff (the outfits and NPCs).

    Folder on mediafire
    Or direct links on openload:
    https://openload.co/f/3HSF_7wdmIw/patch.dat
    https://openload.co/f/-Ytnm35biuc/patch.fat

    Loose:
    mediafire
    openload

    The loose was missing a file, now it is fixed


    v3a_extended 2016-05-29

    Added Ultimate cars on demand (couldn't find the author) + Death Race car skin (The Silver)
    [​IMG]

    Added all weapons unlock + new weapon skins (both by The Silver)
    [​IMG]

    Download: https://www.mediafire.com/folder/kb4bt7delxabn/customOutfits_v3a_extended

    I'm not providing loose files, my files are the same as in v3a, just added other people's stuff.

    v3alpha 2016-05-28
    Showcase on Youtube
    Download here: https://www.mediafire.com/folder/a606pa8h9o17g/customOutfits_v3alpha
    - 19 NPCs added
    - The Division agent added

    TBD:
    - The Silver's Punisher is missing
    - Due to several requests, I want to do some mod-merging, adding the cars on demand (dunno who made it) + Death Race car (The Silver), weapon unlocks (The Silver). Maybe another version with a visual improvement mod.

    v2b: 2015-11-08
    - added helmet biker outfit to Bad Blood
    - added backpack to outfit to fix wrench positioning. Backpack only appears in Bad Blood
    - replaced Silver's Collateral outfit with my own version. This uses a composed model to avoid the head alpha workaround.

    v2: no official release
    - fixed head model for the collateral and notoriety outfits
    - changed color of beard on chopper outfit to match the hair
    - changed shader on sunglasses
    - fixed file naming in .libs

    v1: 2015-10-06
    Adds 7 new outfits to the clothing store in the exclusive category.

    *** DESCRIPTION ***

    This mod adds 7 new outfits to the cloth shop, named, priced and with shop icons as well. You have to go to a cloth shop to buy the outfits. No existing outfit is replaced!
    It includes my previous two outfits from the biker minimod, plus the professional and the collateral outfits from The Silver.

    *** INSTALLATION ***

    Download the patch.dat and patch.fat files, then just copy them into watch_dogs\data_win64 folder. Download from here:

    v2b:
    customOutfits_v2b
    v1:
    removed

    Loose files for modders (v2b):
    customOutfits_v2b_loose.zip

    *** RESPECT ***

    Thanks to The Silver for all the help and the outfits he added to the pack.

    *** IMAGES ***

    v2b: Bad Blood helmet biker with backpack
    [​IMG]

    Vigilante without hat (Vigilante)
    [​IMG]

    Professional (Notoriety)
    [​IMG]

    Collateral (COLLATERAL)
    [​IMG]

    Cop disguise (Police Chase)
    [​IMG]

    Biker without helmet (Sayonara)
    [​IMG]

    Biker with helmet (Sayonara LE)
    [​IMG]

    Bad boy biker (Chopper)
    [​IMG]
     
    Last edited: Jun 1, 2016
    Dora Chau likes this.
  2. infiniium

    infiniium Member Guru

    Messages:
    168
    Likes Received:
    1
    GPU:
    Sapphire NITRO R9 390 8GB
    Outfit modding tutorial

    Modding possibilities for character models:

    Basics:

    - Unpack the patch files (patch.fat and patch.dat from watch_dogs\data_win64 folder) with gibbed.disrupt.unpack.exe
    - Unpack the binaries (.lib files) with Gibbed.Disrupt.ConvertBinaryObject.exe
    - After modifying, pack the binaries with ConvertBinaryObject again, put them inside the patch folder then pack the whole thing with gibbed.disrupt.pack.exe. Mind the file names remove "_converted" from them after converting.

    1. XMLs in items.lib

    The outfits in the shop are described here (eg. Clothing_SP.DefaultSkin.SP_Cloth_Store_Aiden_01.xml).
    You can create more of these files, only restriction is the key in this line:
    <field name="hidKey" type="StringId">0x876BED86</field>
    must be unique. However adding more files may or may not result in more items in shop. To make it 100% working you have to add the hidkey value to files inside shopsettings.lib (ClothingShop.***.xml), then you will have to go to a cloth shop to unlock the added outfit. If you add files to the unpacked items folder be sure to add them to the items_converted.xml too, or they won't load.

    Useful fields:
    GraphicKit model ID:
    <field name="graphickitmodelModel" type="BinHex">84504AEC</field>
    This line contains the ID of the model that will be loaded if you choose the outfit. This is the first point where we can change the outfits. If you check graphicKit_models.lib, there are thousands of NPC models and of course the main characters and Aiden's outfits. If you know a model's ID, you can write it here and it will load that model when you change clothes.​
    Name:
    <field name="LocalizationId" type="UInt32">195863</field>
    Currently we don't know how to change texts in game, however we can replace the names with other items' names, like cars, bikes, etc. by changing this id value.​
    Shop Icon:
    <field name="sItemIconTextureName" type="String">Aiden/Aiden_kit_01</field>
    xbt images from \ui\fire\sources\textures\nexus_items\shop\​
    Availability:
    <field name="accessidAccessIdToGiveItem" type="BinHex">FF</field>
    Change this to FF to give access to unlockable or DLC items​
    Shop price:
    <field name="uiItemPrice" type="UInt32">1000</field>

    2. XMLs in graphickit_models.lib

    These are the definitions of the models. All NPC, all Aiden, all maincharacter models are here. There are composed and single object models.
    Main elements of the files:
    - header: name, key (field hash="389F6DA7", referenced in items.lib files. Must be unique), other unknown stuff
    - model parts: starting with this line <object hash="A88188FA">, there will be one for single models and several for composed models of this:
    <object hash="E93DDFF8">
    <field hash="6816806D" type="BinHex">03</field>
    <field hash="D935FAD9" type="BinHex">57D3BCBC</field> <-- graphickit part ID
    <field hash="14088DCA" type="BinHex">FF</field> <-- unknown atm, usually FF but sometimes has other value
    <field hash="73CEC34A" type="BinHex">1E7C8A1A</field> <-- material variation of the model part
    <object hash="37CF95BD">
    <field hash="CF1DBEC6" type="BinHex">FFFFFFFF</field>
    <field hash="5177A0C7" type="BinHex">000000000000000000000000</field> <-- position (z,y,x)
    <field hash="99298BDA" type="BinHex">000000000000000000000000</field> <-- rotation (z,y,x)
    <field hash="FC176C73" type="BinHex">0000803F0000803F0000803F</field> <-- scale (z,y,x)
    </object>
    </object>
    - then near the end of the files there are the parts again, but only 1 line per part
    - at the end there are the 3 main parts again: head, torso, legs. head and legs are empty rows for single object models

    If you know the model part ID and material variation ID you can add it to any model. Any number of parts can be added.
    Position, rotation and scale can't be changed on skinned meshes, so anything that is animated (faces, jackets, etc) won't use these values. Hats, accessories will work, here's a decimal to binhex converter: http://www.h-schmidt.net/FloatConverter/IEEE754.html
    Model files can be added to the game as well, with unique ID values and of course adding the file names to graphickit_models_converted.xml as well.


    3. XMLs in graphickit_parts.lib

    This is where all the model parts are described.
    <field name="hidKey" type="StringId">0xBCBCD357</field> <-- this is the modelpart ID referenced in the graphickit_model files. Note the reversed byte order.
    The file may or may not contain a list of material overrides, these are the material variations of the model part. The material override entries have a header part, where you will see the ID referenced in the graphickit_model files:
    <field name="Name" type="StringId">0x1A8A7C1E</field> Note the reversed byte order.
    Material overrides usually have this line, which is not translated by disrupt:
    <field hash="9301DFBD" type="BinHex">67726170686963735C5F6D6174657269616C735C6A6D6172636F75782D6D2D32303133303731313137333733372E6D6174657269616C2E62696E00</field>
    You can use a hex to ascii converter to find out what the value means (for example notepad++ with HEX editor plugin, or the Razor.DataConversion):
    <field hash="9301DFBD" type="BinHex">graphics\_materials\jmarcoux-m-20130711173737.material.bin</field>
    Then you will know which material.bin is used in the model part. Sometimes files will be in _UNKNOWN folder, then it will be a painful task to find what you are looking for.

    4. xxx.material.bin files

    Unable to unpack at the moment, but you can check what's inside with any text editor and you will see the textures listed. It is possible to change the file names inside to change materials (textures) to some other.

    Near the beginning of the .bin the type of shader will be defined (for example DriverHair, DriverCloth, etc). After the texture list you will see a lot of hex values, these are the shader parameters. Will describe these in another post below.

    5. textures (.xbt files)

    The material bin file tells you which texture should you edit. More types exist: diffuse texture, normal map, specular texture, alpha...
    Use xbt2dds converter, then you can edit the dds with photoshop (with dds editor plugin), then use dds2xbt to convert back.
    There's a good guide on ZModeler forum on how to modify xbts: http://forum.zmodeler3.com/viewtopic.php?f=28&t=7105&sid=98437e5f150e523bb0752acb07c096fa


    EDIT: you might want to check out these posts where I explain a few things in more depth, with pictures:
    http://forums.guru3d.com/showthread....2960&p=5218700
    http://forums.guru3d.com/showthread....2960&p=5219271
     
    Last edited: May 31, 2016
  3. txgt

    txgt Master Guru

    Messages:
    815
    Likes Received:
    3
    GPU:
    MSI GTX 1060 6G
    Wow! Great work!
     
  4. The Silver

    The Silver Master Guru

    Messages:
    602
    Likes Received:
    14
    GPU:
    GTX 770 2GB
    Congratulations for the release! :cool:

    We hope that this mod and the guide in the second post will inspire other modders! :)
     

  5. infiniium

    infiniium Member Guru

    Messages:
    168
    Likes Received:
    1
    GPU:
    Sapphire NITRO R9 390 8GB
    I decoded some hash values for shader parameters:

    driverGlass:
    00 03 00 00 db 57 9c 2c = TintColor (3)
    02 00 00 00 fa 54 40 8c = Opacity (2)
    04 00 00 00 8c 18 1f 7e = SpecularPower (4)
    02 00 00 00 a1 d4 c1 3d = Reflectance (2)
    04 00 00 00 dd 25 72 34 = Dust (4)
    05 00 00 00 f2 c2 67 a7 = ReflectionTextureSource (5)
    00 03 00 00 53 08 36 c3 = DamageStateUVSlide (3)

    driverCloth:
    05 00 00 00 73 25 b6 91 = DiffuseTexture2BlendingType (5)
    02 00 00 00 ea db 0d f0 = DiffuseOffset2 (2)
    03 00 00 00 77 f7 44 0e = DiffuseColor1 (3)
    03 00 00 00 cd a6 4d 97 = DiffuseColor2 (3)
    05 00 00 00 0c 65 bf 2f = ReflectionType (5)
    01 00 00 00 a1 d4 c1 3d = Reflectance (1)
    04 00 00 00 8c 18 1f 7e = SpecularPower (4)
    06 00 00 00 17 4d fe 91 = LocalWetness (6)
    00 01 00 00 1d 92 07 af = WetDiffuseMultiplier (1)
    01 00 00 00 11 ae ab f1 = WetReflectance (1)
    04 00 00 00 7c e2 0a 2a = WetSpecularPower (4)
    02 00 00 00 f0 ec 5c 92 = NormalOffset2 (2)
    05 00 00 00 51 67 22 b8 = MaskGreenChannelMode (5)
    05 00 00 00 04 64 cc 83 = ClothWrinkleTargetPartId (5)
    04 00 00 00 f1 66 8e 76 = ReflectionIntensity (4)

    EDIT: just to be clear, these hashes are in the material .bin files. With a HEX editor you can edit the values after the hashes to change color, reflection, etc. The numbers after the names mean:
    1 - float x1, binhex
    2 - float x2, binhex
    3 - float x3, binhex
    4 - float x4, binhex
    5 - int, hex (not binhex)
    6 - boolean, ??? couldn't understand how it shows true or false, it was inconsistent
    7 - ?
    8 - string (path + filename for textures, etc)

    Also the first 4 word (4 * 2 bytes) values before the actual hash match the type, but for some reason the values are not always in the first word.

    EDIT2: maybe after a boolean the type code will be on the second word and the first word will represent the boolean value (00 or 01), since after the boolean type there is no 4x2 bytes space for the value. This is just a guess though.
     
    Last edited: Nov 4, 2015
  6. infiniium

    infiniium Member Guru

    Messages:
    168
    Likes Received:
    1
    GPU:
    Sapphire NITRO R9 390 8GB
    And here's an experiment with the shader parameters of the sunglasses:

    Original:
    [​IMG]

    Tint color: 0, 0, 0
    Opacity: 0.5, 0.5
    reflectance: 0.5, 0.5
    [​IMG] [​IMG]

    Tint color:0, 0, 0
    Opacity: 0.75, 0.75
    reflectance: 0.5, 0.5
    [​IMG] [​IMG]

    Tint color:0, 0, 0
    Opacity: 0.9, 0.9
    reflectance: 0.75, 0.75
    [​IMG] [​IMG] [​IMG]

    Tint color:0, 0, 0
    Opacity: 0.8, 0.8
    reflectance: 0.75, 0.75
    [​IMG] [​IMG]

    I think I like it :cool:
     
    Last edited: Oct 26, 2015
  7. The Silver

    The Silver Master Guru

    Messages:
    602
    Likes Received:
    14
    GPU:
    GTX 770 2GB
    So it doesn't need the edited material and new texture anymore? :) The reflection is great! :cool:
     
  8. infiniium

    infiniium Member Guru

    Messages:
    168
    Likes Received:
    1
    GPU:
    Sapphire NITRO R9 390 8GB
    Yeah, I reverted it back to the original (removed your textures), then started playing with the values. I'm glad you like it :D
     
  9. The Silver

    The Silver Master Guru

    Messages:
    602
    Likes Received:
    14
    GPU:
    GTX 770 2GB
    Great! This is the best way possible to improve the glasses, it's a far more elegant solution than the texture workaround. :D

    Would you mind uploading the material file? :) You know, for the lazy people... :p
     
  10. infiniium

    infiniium Member Guru

    Messages:
    168
    Likes Received:
    1
    GPU:
    Sapphire NITRO R9 390 8GB
    Oh yeah, sorry! Somehow i didn't think of it :D

    jmarcoux-m-2013072076896419.material.bin
     

  11. The Silver

    The Silver Master Guru

    Messages:
    602
    Likes Received:
    14
    GPU:
    GTX 770 2GB
  12. ThatGuyOverTher

    ThatGuyOverTher Master Guru

    Messages:
    569
    Likes Received:
    2
    GPU:
    Gigabyte GTX980
    This is really great work you guys are doing!
    How about you try these reflection values on streets, cars, and sidewalks?!
    I might reinstall WD to try this out myself :D
     
  13. The Silver

    The Silver Master Guru

    Messages:
    602
    Likes Received:
    14
    GPU:
    GTX 770 2GB
    Streets, cars and sidewalks already have dynamic paraboloid reflections, and considering that editing the ReflectionTextureSource value from 1 to 0 changes the reflection source from paraboloid to cubemap I'd say that it would be a lot better to use this information for the buildings reflections, if this works for their shader too we could replace the cheap static reflection that everyone jokes about in WD to a dynamic reflection like no other freeroaming have. :cool:
     
  14. Alnaut

    Alnaut New Member

    Messages:
    6
    Likes Received:
    0
    GPU:
    Radeon R9 270x
    Is it possible to mod the outfits in the Bad Blood DLC?
    I'd really like the helmeted biker outfit in that, even if it replaces something.
     
  15. infiniium

    infiniium Member Guru

    Messages:
    168
    Likes Received:
    1
    GPU:
    Sapphire NITRO R9 390 8GB
    I think if I edit the availabilityRule in items.lib and the shopSettings.lib I can make these available in Bad Blood as well.
     

  16. infiniium

    infiniium Member Guru

    Messages:
    168
    Likes Received:
    1
    GPU:
    Sapphire NITRO R9 390 8GB
    Interesting idea :D
    I'll check if they have this parameter in their shader. Don't expect that the reflections will show everything as even the dynamic reflections don't show cars and characters, sadly. But at least they would show the correct reflection of the street and some of the lights (i guess), not like as they are now showing something totally different image. It's hilarious when you see the water on one side and in the reflection on the window there are some buildings, as a Youtube friend shows here, watch for 20 seconds.

    EDIT: just one thing I'm not sure about is the framerate drop the dynamic building reflections will cause... But we'll see how that works out.
     
    Last edited: Nov 3, 2015
  17. infiniium

    infiniium Member Guru

    Messages:
    168
    Likes Received:
    1
    GPU:
    Sapphire NITRO R9 390 8GB
    Ugh, there are 214 material.bins that have driverBuilding in them...
     
  18. Alnaut

    Alnaut New Member

    Messages:
    6
    Likes Received:
    0
    GPU:
    Radeon R9 270x
    If you could make and post that edit I would really appreciate it.
     
  19. infiniium

    infiniium Member Guru

    Messages:
    168
    Likes Received:
    1
    GPU:
    Sapphire NITRO R9 390 8GB
    Oookay, I found the Chase Tower (or Vault Tower in WD) window material. I changed the reflection type, but it didn't really work as expected:

    [​IMG] [​IMG]

    If you don't see, all the windows disappeared, they are not reflecting anything. You can see through the building...

    EDIT: okay, the hex editor screwed the file, that's why the windows disappeared :D Anyway after fixing it, I tried different reflectionType values, but they didn't have any effect :( Maybe if I replace the shader with driverGlass... Stay tuned for updates!
     
    Last edited: Nov 3, 2015
  20. The Silver

    The Silver Master Guru

    Messages:
    602
    Likes Received:
    14
    GPU:
    GTX 770 2GB
    That result means that the engine couldn't "read" the material so I think you've broken it somehow... :O Maybe try to do a hex search on the materials folder to find all the materials that have the hex part that points to the cubemap reflection (AFAIK only Hex Editor Neo can do a search based on hex values inside files), then you can do a batch hex replace on the resulting ones to switch every ReflectionTextureSource parameter from cubemap to paraboloid reflection. ;) This way if it's possible to switch a material to real time reflection you will do it, and then once you've checked if it's working or not you just have to limit it to the shaders you want. :cool:
    IMHO there will be little performance impact since from what I've understood about the paraboloid technique it just renders one real time texture from the camera pov and use that as shared reflection for everything (hence why the strange artifacts on the water reflections when there's something obstructing your view, it's because the reflection is based on what is currently visible). :)
     

Share This Page