Jump to content

Trails of Cold Steel 4 (Mod Request)


Recommended Posts

Posted
On 2/7/2023 at 8:01 PM, jimkage said:

Can you remove Estelle spats so we can see some butt ? ?

 

This tutorial from amorrow explains what is probably the easiest way to do that:

 

Posted
2 hours ago, NotAZebra said:

 

I was working on Juna’s travel clothes (CS4/Hajimari default with red jacket and yellow shirt) and kept getting this weird line like a javelin through her shoulder. I looked in your files and noticed your “Even Shorter Skirt - Broken” folder with models that produce the same problem. This is the issue:

  Hide contents

Juna_Travel_Shirt_Bug.thumb.png.51d969233a8c8f6b98c551386c706039.pngJuna_Travel_Shirt_Bug02.thumb.png.454c9aeb40483d2f70e37e6ae8f27144.png

 

Did you ever come up with ideas about what causes this? It seems to be specific to replacing the yellow shirt mesh, and it happens even if all I do is dump the mesh, merge, import to Blender, export, and split (no changes to the mesh in Blender). It does not happen if I just tell 3dmigoto to skip the mesh. I think I remember seeing something similar with Towa, but I am having trouble reproducing it.

 

I don't know what causes this.  I tried Normalize All in weight paint mode and it didn't fix it.  I suspect one of the weight groups is wrong.  Without access to the bone palettes though, troubleshooting this would be a nightmare.  If I recall correctly, this only came up 2-3 times when I was making my unskirt mod.

 

BTW I haven't exactly given up on the bone palette (vgmap) thing for these games, but I also really haven't made any meaningful progress.

Posted (edited)

30269552_2023-02-1422_37_47-Blender.png.ecc54833d85ea444be81ffaff434ba8a.png

 

To my fellow modders,


Finally, vertex group mapping in CS3/CS4/Hajimari!  (and probably CS1/CS2/TXe, I haven't tried)

 

cold_steel_vgmaps.zip


(Latest version always at my GitHub)


The phyre Engine format for models is incredibly complex, and thankfully @uyjulian had already dissected it to allow access to the skeleton.  However his model convertor followed Sony's original design and all the weight groups were merged together, making the tool useless for 3DMigoto modders.  I've modified his tool to preserve mesh segmentation, so now my vgmap tool can be used.


How is this useful?  I can think of three things.

  • Weight painting is achievable now.  You can adjust the paint, and then move the skeleton to see how the model deforms without loading it in the game.  You can (probably?) even run the animations to see if your model looks good!  (I have not tried this.  I am not good at painting.)
  • Weight transfer is 99.9% easier now!  My tool maps all the weight groups to their proper bones, the names of which are shared across characters.  So now instead of the upper leg being a random number, it will always be "LeftLeg" - which means all the meshes are ALREADY RENAMED when you load them!  Just merge one mesh into the other, and you are done!!
  • For the very ambitious, we can now theoretically merge our mods into a complete model and export as FBX.  This would be the first step in creating actual PKG mods.  Unfortunately the subsequent steps will require Maya and more knowledge than I have, but I think it can be done.  Also, with the glTF, we can inspect the structure and see the names of the materials and shaders, etc, which will (probably) help in reconstruction.

Admittedly this will be a niche tool, for what is already a small modding community.  But it was something I wanted to get done.


How to use:
 

Quote

 

This is an advanced skill.  If you have never modded CS3/CS4/Hajimari before, please see my other tutorials!

 

PLEASE NOTE - Commonly you might only need 1-2 meshes.  I grabbed the whole model for demonstration purposes, you do not need to import so many meshes!

 

You need to know what models you want to mess with.  Here are tables for CS3, CS4 and Hajimari (Reverie) with lists of the models.  (They don't list DLC so you will have to hunt through the files for those.)

 

cs3_models.csv

cs4_models.csv

hajimari_models.csv

 

First, obtain the meshes that you want to mod using frame dump as usual.  Merge them with my tool as you normally would.  Open the meshes that you want in Blender.  Save the meshes that you want to work with as ib/vb/fmt  (File -> Export -> 3DMigoto raw buffers).  (While I have function calls in my new script to work with the raw text files, Blender cannot open VG Maps when first importing text files so it does not matter.  You need ib/vb/fmt.)  Do not split the buffers yet.  (Notice in the picture, the vertex groups are still random numbers.)

 

Spoiler

610038678_2023-02-1421_44_22-Blender.png.e5b1cc8e336c8b4bfb89852b7c2c88dc.png


Get the model file from your assets.pka file.  For CS3 and CS4, put extract_pka.py into {CS3 / CS4 folder}/data/asset/D3D11 and double-click it, press enter (first question asks for pka and defaults to assets.pka), then second question asks which files you need.  If you put in a search term, it will match and grab multiple files (typing in CHR087 is like *CHR087*).  (You don't need extract_pka for CLE Hajimari since it's not archived in the first place, just grab the file you need.)  Here I need Juna's Thors outfit, C_CHR011.pkg, so I will type that into extract_pka.py.

 

Spoiler

690453028_2023-02-1421_47_52-C__ProgramFiles_WindowsApps_PythonSoftwareFoundation.Python.3_10_3_10_2800.0_x6.png.d0bd6811246fb7b28611f805750b1b67.png


Convert the pkg file to glTF, by double-clicking ed8pkg2gltf.py in the folder with the pkg file.  (Note: CLE files require the python zstandard modules to decompress.  If you have not yet installed this, double-click install_zstandard.bat to install it.)

 

Spoiler

1868375056_2023-02-1421_48_51-Juna.png.06c96d26c89bb8d458b24335b3fc4114.png

 

Import the glTF file in Blender, and examine the meshes on the model.  Note that some of the meshes are shadow meshes (used for generating shadows), hide those for now.  Note which mesh corresponds to the 3DMigoto mesh you are hoping to map.  (To make this easy, keep this open while you make your maps in the next step!)

 

Spoiler

2066806102_2023-02-1422_08_09-Blender.png.22bb47638a34d78dc23adad42dc4a0fe.png


 

Quote

 

(Completely optional - Julian's script is fully-featured and will apply materials, but you will need to convert all the BC7-compressed textures to BC1.  Grab texconv.exe from here, then run in the same folder as the textures:

texconv.exe -r *.dds -f DXT1 -y

 

Now if you open the glTF and switch to Material Preview, Juna will look like this instead!

 

Spoiler

535931910_2023-02-1422_10_54-Blender.png.4466742c4eb3d9bafb2add1ebb9510c8.png

 

 

Put the gltf file, make_vgmap_from_gltf.py and lib_fmtibvb.py in the same folder as the ib/vb/fmt files you want to map.  Double-click the script.  It will go through the meshes you have, one by one, and ask you which mesh mapping you want to use.  Pick the mesh that matched when you went through the glTF.  Here, the skirt is polySurfaceShape3915polySurfaceShape3924_1_node, which is option 2, so I typed 2.

 

Spoiler

683940016_2023-02-1422_08_48-C__ProgramFiles_WindowsApps_PythonSoftwareFoundation.Python.3_10_3_10_2800.0_x6.png.bf20c3b54ecae24bb4bbaefb53a39a81.png

 

Now re-import the meshes.  You will see that all the weight groups have been named properly!

 

Spoiler

2029702873_2023-02-1422_34_05-Blender.png.689d097537bfe3130a48e89ea1a7b0b3.png

 

For weight painting, you will want to rig your mesh to the skeleton.  Open the gltf file.  You can hide or delete the glTF meshes, they cannot be exported.  I generally just delete them.  I also hide the joints, so you can clearly see the bones and mesh.


Select all your 3DMigoto meshes (in the list on the upper right, click the top one, then shift-click the bottom one).  Then SHIFT-click on one of the bones (in the scene, NOT on the list).  You should see the meshes outlined in red, and the skeleton outlined in orange.  Press Ctrl-P to parent, and select "Armature Deform."  Do NOT pick any of the "With..." options.

 

Spoiler

2112071098_2023-02-1422_17_54-Blender.png.d38250108536b3e7219c7c7385bd5352.png

 

The model is rigged!  You can now do what you need to do.

 

Spoiler

811642060_2023-02-1422_24_33-Blender.png.6cb01910b5175c2bf0376233d2c5a63e.png

 

When you are done with your mesh, export as usual (File -> Export -> 3DMigoto raw buffers).  You can now proceed to split the buffers as usual.

 

 

Enjoy!  I look forward to seeing what you do with this and trying out your mods!

 

Edited by amorrow28
Posted
On 2/15/2023 at 12:55 AM, amorrow28 said:

30269552_2023-02-1422_37_47-Blender.png.ecc54833d85ea444be81ffaff434ba8a.png

 

To my fellow modders,


Finally, vertex group mapping in CS3/CS4/Hajimari!  (and probably CS1/CS2/TXe, I haven't tried)

 

cold_steel_vgmaps.zip 40.46 kB · 5 downloads


(Latest version always at my GitHub)


The phyre Engine format for models is incredibly complex, and thankfully @uyjulian had already dissected it to allow access to the skeleton.  However his model convertor followed Sony's original design and all the weight groups were merged together, making the tool useless for 3DMigoto modders.  I've modified his tool to preserve mesh segmentation, so now my vgmap tool can be used.


How is this useful?  I can think of three things.

  • Weight painting is achievable now.  You can adjust the paint, and then move the skeleton to see how the model deforms without loading it in the game.  You can (probably?) even run the animations to see if your model looks good!  (I have not tried this.  I am not good at painting.)
  • Weight transfer is 99.9% easier now!  My tool maps all the weight groups to their proper bones, the names of which are shared across characters.  So now instead of the upper leg being a random number, it will always be "LeftLeg" - which means all the meshes are ALREADY RENAMED when you load them!  Just merge one mesh into the other, and you are done!!
  • For the very ambitious, we can now theoretically merge our mods into a complete model and export as FBX.  This would be the first step in creating actual PKG mods.  Unfortunately the subsequent steps will require Maya and more knowledge than I have, but I think it can be done.  Also, with the glTF, we can inspect the structure and see the names of the materials and shaders, etc, which will (probably) help in reconstruction.

Admittedly this will be a niche tool, for what is already a small modding community.  But it was something I wanted to get done.


How to use:
 

 

Enjoy!  I look forward to seeing what you do with this and trying out your mods!

 

 

Possible change that might improve the tutorial:

 

Original: “Put the gltf file and make_vgmap_from_gltf.py in the same folder as the ib/vb/fmt files you want to map”

 

Alternative: “Put the gltf file, make_vgmap_from_gltf.py, and lib_fmtibvb.py in the same folder as the ib/vb/fmt files you want to map”

Posted (edited)
On 2/15/2023 at 12:55 AM, amorrow28 said:

30269552_2023-02-1422_37_47-Blender.png.ecc54833d85ea444be81ffaff434ba8a.png

 

To my fellow modders,


Finally, vertex group mapping in CS3/CS4/Hajimari!  (and probably CS1/CS2/TXe, I haven't tried)

 

cold_steel_vgmaps.zip 40.46 kB · 5 downloads


(Latest version always at my GitHub)


The phyre Engine format for models is incredibly complex, and thankfully @uyjulian had already dissected it to allow access to the skeleton.  However his model convertor followed Sony's original design and all the weight groups were merged together, making the tool useless for 3DMigoto modders.  I've modified his tool to preserve mesh segmentation, so now my vgmap tool can be used.


How is this useful?  I can think of three things.

  • Weight painting is achievable now.  You can adjust the paint, and then move the skeleton to see how the model deforms without loading it in the game.  You can (probably?) even run the animations to see if your model looks good!  (I have not tried this.  I am not good at painting.)
  • Weight transfer is 99.9% easier now!  My tool maps all the weight groups to their proper bones, the names of which are shared across characters.  So now instead of the upper leg being a random number, it will always be "LeftLeg" - which means all the meshes are ALREADY RENAMED when you load them!  Just merge one mesh into the other, and you are done!!
  • For the very ambitious, we can now theoretically merge our mods into a complete model and export as FBX.  This would be the first step in creating actual PKG mods.  Unfortunately the subsequent steps will require Maya and more knowledge than I have, but I think it can be done.  Also, with the glTF, we can inspect the structure and see the names of the materials and shaders, etc, which will (probably) help in reconstruction.

Admittedly this will be a niche tool, for what is already a small modding community.  But it was something I wanted to get done.


How to use:
 

 

Enjoy!  I look forward to seeing what you do with this and trying out your mods!

 

 

This tool is wonderful. I ran into a problem on my second use, though. I imported the gltf file for Alfin’s Astraia costume into Blender, but I think Blender truncates names of objects, so I cannot tell which one to use when running make_vgmap_from_gltf.py:

Spoiler

NamesBlender.png.2ecf5f4cbbbdb9daa415aec2c274ac8b.pngNamesMakeVGMap.png.e9d4d518e80901735a82b8dcec18fec3.png

The first one in Blender does not seem to be the _0 mesh, but I can just try each mesh with the script until I find the right one.

 

A more general fix might be to shorten the names of the meshes output by ed8pkg2gltf.py. Is that possible? It looks like the strings in the names are taken directly from the pkg files (e.g. “polySurfaceShape” is not in the script), so this might require knowing all the possible strings to decide how to shorten them, which sounds like a mess. Alternatively, if anyone knows how to get Blender to keep long names, that would be useful. Edit: it seems that raising the 63-character limit has come up for Blender devs before and been rejected.

Edited by NotAZebra
Posted
3 hours ago, NotAZebra said:

 

Possible change that might improve the tutorial:

 

Original: “Put the gltf file and make_vgmap_from_gltf.py in the same folder as the ib/vb/fmt files you want to map”

 

Alternative: “Put the gltf file, make_vgmap_from_gltf.py, and lib_fmtibvb.py in the same folder as the ib/vb/fmt files you want to map”

 

Done!

 

3 hours ago, NotAZebra said:

 

This tool is wonderful. I ran into a problem on my second use, though. I imported the gltf file for Alfin’s Astraia costume into Blender, but I think Blender truncates names of objects, so I cannot tell which one to use when running make_vgmap_from_gltf.py:

  Hide contents

NamesBlender.png.2ecf5f4cbbbdb9daa415aec2c274ac8b.pngNamesMakeVGMap.png.e9d4d518e80901735a82b8dcec18fec3.png

The first one in Blender does not seem to be the _0 mesh, but I can just try each mesh with the script until I find the right one.

 

A more general fix might be to shorten the names of the meshes output by ed8pkg2gltf.py. Is that possible? It looks like the strings in the names are taken directly from the pkg files (e.g. “polySurfaceShape” is not in the script), so this might require knowing all the possible strings to decide how to shorten them, which sounds like a mess. Alternatively, if anyone knows how to get Blender to keep long names, that would be useful. Edit: it seems that raising the 63-character limit has come up for Blender devs before and been rejected.

 

The names in the meshes are absolute insanity.  It is very strange to me that the meshes in the glTF are not in the correct order though, as I append their nodes in the correct order.  Very strange!  I will think about the best way to proceed, truncating the names is not really a good option because of how the files are organized, I worry about non-unique names overwriting each other and preventing the entire mesh from rendering.

 

In the meantime, you are free to try my experimental branch that I'm developing right now, here.  This version dumps .fmt/.ib/.vb/.vgmap files as it makes the gltf, so you don't even need to load the gltf.  Just load the .fmt/.ib/.vb/.vgmap files, figure out which vgmaps you need, and copy the .vgmap file.  (In fact, you *could* try to mod the .fmt/.ib./vb files directly, but it might be frustrating because the .vb files will split into 19 parts or something like that - there are more vb files inside .pkg files than are used by the GPU.  If you decide to go this route, just delete the .vbX files you don't need.  You'll have to look inside a .fmt file from a 3dmigoto dump to see which .vbX files you actually want; most of the time it's the first 4 and the last 2; i.e. vb17 becomes vb4 and vb18 becomes vb5.)

Posted
4 hours ago, NotAZebra said:

 

This tool is wonderful. I ran into a problem on my second use, though. I imported the gltf file for Alfin’s Astraia costume into Blender, but I think Blender truncates names of objects, so I cannot tell which one to use when running make_vgmap_from_gltf.py:

  Reveal hidden contents

NamesBlender.png.2ecf5f4cbbbdb9daa415aec2c274ac8b.pngNamesMakeVGMap.png.e9d4d518e80901735a82b8dcec18fec3.png

The first one in Blender does not seem to be the _0 mesh, but I can just try each mesh with the script until I find the right one.

 

A more general fix might be to shorten the names of the meshes output by ed8pkg2gltf.py. Is that possible? It looks like the strings in the names are taken directly from the pkg files (e.g. “polySurfaceShape” is not in the script), so this might require knowing all the possible strings to decide how to shorten them, which sounds like a mess. Alternatively, if anyone knows how to get Blender to keep long names, that would be useful. Edit: it seems that raising the 63-character limit has come up for Blender devs before and been rejected.

 

Ok, I think I actually figured out what is happening.  Try this instead:

 

ed8pkg2gltf.py

 

It seems that when there are multiple meshes (for example, body, hair and shadow), phyre Engine just mashes them together during the compilation process into a single mesh, and then names that mesh the combination of all the original mesh names.  I am able to exploit this by using the first mesh name instead of the final mesh name, since they're all mashed together anyway.  I'm going to go with this until I'm proven wrong.

Posted (edited)
On 2/19/2023 at 1:18 AM, amorrow28 said:

 

Ok, I think I actually figured out what is happening.  Try this instead:

 

ed8pkg2gltf.py 159.62 kB · 4 downloads

 

It seems that when there are multiple meshes (for example, body, hair and shadow), phyre Engine just mashes them together during the compilation process into a single mesh, and then names that mesh the combination of all the original mesh names.  I am able to exploit this by using the first mesh name instead of the final mesh name, since they're all mashed together anyway.  I'm going to go with this until I'm proven wrong.

 

Great! I did not expect a solution.

 

Mapping the VGs does not mean I can just join any two (character) meshes, right? If the donor has groups that the recipient does not, I still have to merge those into their parents, right?

Edited by NotAZebra
Posted
1 hour ago, NotAZebra said:

 

Great! I did not expect a solution.

 

Mapping the VGs does not mean I can just join any two (character) meshes, right? If the donor has groups that the recipient does not, I still have to merge those into their parents, right?


Yes, that is correct. The GPU is sent a limited number of bones per mesh, and each mesh is unaware of bones that are not on its palette. As far as I know, this results from a limitation imposed by Sony (sort of), because the engine was designed for PS3 / Vita. Each palette must have 80 bones or fewer, or the GPU cannot perform the pose transformations and the CPU is stuck doing it (with the frame rate decrease that would be expected).

 

Strangely, the same limitation is enforced for PS4 and PC, even though there is more VRAM etc. ??‍♂️ But it doesn’t matter, the palettes are segmented and we can’t do anything about it until we can make our own .pkg files. (If you make your own pkg files, you can break the 80 bone rule, it will just force CPU posing.)

Posted
1 hour ago, amorrow28 said:


Yes, that is correct. The GPU is sent a limited number of bones per mesh, and each mesh is unaware of bones that are not on its palette. As far as I know, this results from a limitation imposed by Sony (sort of), because the engine was designed for PS3 / Vita. Each palette must have 80 bones or fewer, or the GPU cannot perform the pose transformations and the CPU is stuck doing it (with the frame rate decrease that would be expected).

 

Strangely, the same limitation is enforced for PS4 and PC, even though there is more VRAM etc. ??‍♂️ But it doesn’t matter, the palettes are segmented and we can’t do anything about it until we can make our own .pkg files. (If you make your own pkg files, you can break the 80 bone rule, it will just force CPU posing.)

 

Too bad. This makes working with Alfin difficult. I tried to turn her Astraia dress into a “little black dress”, but the body mesh is too simple, so the bathing body mesh I merge in moves along with the shoulders, causing floppy noodle arms that I can’t stop looking at:

Spoiler

1661799175_Screenshot2023-02-2001_14_13.thumb.png.54b3fae84a84dc24cd37bede3a724359.png

 

But her two costumes with lots of skin have very simple clothing meshes, causing similar problems if I try to port the Astraia dress to them. The best that I found (other than just recoloring and shortening the bathing clothes) was to join the bathing body mesh to the Astraia dress mesh and then try to make the skin texture not horrible. So far still weird:

Spoiler

1495368555_Screenshot2023-02-2023_55_43.png.0895f4a0741ad38be9c970fdd7e1c3c2.png

 

Posted (edited)
1 hour ago, NotAZebra said:

 

Too bad. This makes working with Alfin difficult. I tried to turn her Astraia dress into a “little black dress”, but the body mesh is too simple, so the bathing body mesh I merge in moves along with the shoulders, causing floppy noodle arms that I can’t stop looking at:

 

But her two costumes with lots of skin have very simple clothing meshes, causing similar problems if I try to port the Astraia dress to them. The best that I found (other than just recoloring and shortening the bathing clothes) was to join the bathing body mesh to the Astraia dress mesh and then try to make the skin texture not horrible. So far still weird:

 


Those floppy noodle arms…!!

 

For reasons even I don’t understand, I am attempting to create a tool chain to modify models directly (new .pkg files). Being able to add bones to the bone palette and/or changing shaders would be possible at that point, plus mods could be used on steam deck and possibly jailbroken consoles (maybe?). So stay tuned? (Honestly my hopes are not high, but I haven’t given up yet… and Alfin in a little black dress would be quite the motivator haha)

Edited by amorrow28
Posted
On 2/19/2023 at 3:18 PM, amorrow28 said:

 

Ok, I think I actually figured out what is happening.  Try this instead:

 

ed8pkg2gltf.py 159.62 kB · 7 downloads

 

It seems that when there are multiple meshes (for example, body, hair and shadow), phyre Engine just mashes them together during the compilation process into a single mesh, and then names that mesh the combination of all the original mesh names.  I am able to exploit this by using the first mesh name instead of the final mesh name, since they're all mashed together anyway.  I'm going to go with this until I'm proven wrong.

Hi, dude, is there any way to modify the vgmap files? since the meshes are spilt, they always lack some of the vertex groups.

Kind Regard.

Posted (edited)
On 2/7/2023 at 6:36 PM, amorrow28 said:

 

cs4_elie.png.8c02c7f57c3de4e7e387fd428c139961.png

 

Previously not possible, the problem has been solved!  More nudes in CS4!  (Thank you to the folks at discord for helping me out.)

 

I had to re-install CS4 to help debug something anyway, so I finally took the time to tackle this.  This basically takes the nude mods by @coomi work with more models in CS4 by replacing the CS4 default models with the Hajimari Towel-wearing models.  You will need to install the basic mods (coomi's Hajimari mod {bodies only}, the CS4 version of my UnskirtMod as well as my compatibility wrapper), all information can be found here:

 

https://www.loverslab.com/topic/166239-trails-of-cold-steel-4-mod-request/?do=findComment&comment=3832221

 

Beware - this is NOT for the faint of heart.  There are a lot of steps here.  But this is still much easier than in CS3.

 

ed8_inject_v2.0.0.zip 31.41 kB · 35 downloads

 

Finally, this is achievable by taking assets from CS4 (10 of the girls) and Hajimari (Claire and Vita).  So you need to have those games too.  (This download package contains my python scripts, same as on GitHub.  It does NOT contain assets.)

 

Ok, here we go...
 

 

Enjoy!

For Cold Steel 3 I can't get the extract_pkia.py to just extract the specified files need for the mod. It just extracts everything form my 20GB assets.pka file and all the required C_CHR files are not among the extracted files at all. I'm running Fitgril's repack of the game. Does this mod only work on the official steam version?

Edited by amdhater
Posted
11 hours ago, ro9190 said:

Hi, dude, is there any way to modify the vgmap files? since the meshes are spilt, they always lack some of the vertex groups.

Kind Regard.


No, the vgmap files are nothing more than an aid. They are not used by 3dmigoto at all. 3dmigoto does not have a way to replace the bone palette as far as I know. (Although maybe it’s possible? We would need to dump the constant buffers to find out.)

Posted
5 hours ago, amdhater said:

For Cold Steel 3 I can't get the extract_pkia.py to just extract the specified files need for the mod. It just extracts everything from my 20GB assets.pka file and all the required C_CHR files are not among the extracted files at all. I'm running Fitgril's repack of the game. Does this mod only work on the official steam version?


I have no idea.

Posted
1 hour ago, amorrow28 said:


No, the vgmap files are nothing more than an aid. They are not used by 3dmigoto at all. 3dmigoto does not have a way to replace the bone palette as far as I know. (Although maybe it’s possible? We would need to dump the constant buffers to find out.)

get it, cheers

Posted (edited)

juna_cs4.png.55935868a6e9f2f230e492e35ccc2ef7.png

(Huh... I thought we decided that shirt was not moddable...)

 

To my fellow modders,

 

I have written a tool chain to simplify making .pkg mods!  You can now make mods that do not need 3dmigoto, and I hope this can lead to mods we could not easily do before.  I owe lots of thanks to the folks over at the modding discord, who helped me with sample files and troubleshooting.

 

Upload replaced with v2.3.8!

 

ED8ModTools_v2.3.8.zip

 

Changelog:

Spoiler

v2.3.8

  • Add support for updated Blender plugin that outputs .vb0 files (needed for Blender 4.x, tested with plugin commit 5fd206c).
  • Fix ARBG8 texture support in ed8pkg2gltf.py.
  • Add compression flag to animation metadata (compression flag was added to model metadata in v2.3.7).

 

v2.3.7

  • Add LZSS compression support for Tokyo Xanadu eX+.  Note that while write_pkg.py can perform LZSS compression, it is very slow.  If it finds sentools.exe (from SenPatcher by github.com/AdmiralCurtiss) in the same directory, it will use sentools.exe instead for greatly improved compression speed.
  • Remove animation channels without target nodes, as these are not compatible with glTF (in fact I suspect they are defunct).
  • Fix for compiling models with both skinned and unskinned meshes in the same model.

 

v2.3.6

  • build_collada.py will now detect and remove nested duplicate nodes, a compiler artifact that corrupts repeated decompile-recompile cycles.
  • Add an internal suffix to texture names to prevent crashes in situations where a texture name matches a node name.
  • Changed detection of skinned shaders at the time of decompile, so that materials with the word "skinned" in them no longer fool the decompiler.

 

v2.3.5

  • Detect multiple parent assignment (node tree error).
  • Armature defaults to top node if the skeleton does not have up_point or root as a child of the top node.
  • New command-line option for outputting .gltf instead of .glb.
  • Bug fix for animation metadata containing entries from prior .pkg files when using ed8pkg2gltf.py in batch mode.
  • Prevent crash with build_collada.py when attempting to import an empty animation.  (This will still cause errors with the compiler, however.)

 

v2.3.4

  • Fixed crash when exporting .pkg files with animations and without locators.

 

v2.3.3

  • Updated code base of ed8pkg2gltf.py to latest version from uyjulian/ed8pkg2glb.  Significant speed improvements, support for animation channels targeting mesh instance objects instead of nodes.
  • Updated ed8pkg2gltf.py to properly detect missing / corrupt texture references in a material and will output an empty string instead of a float6.  Updated build_collada.py to detect both missing / misspelled textures and invalid float6 entries.
  • Added support for models with embedded animation.
  • Added support to glTF extractor for non-skinned meshes.

 

v2.3.2

  • Added support for animation.  Considered experimental at this time.  Only single (non-clip) animations are supported.
  • ed8pkg2gltf.py now outputs .glb files instead of .gltf/.bin files.

 

v2.3.1

  • Texture only mode if metadata.json is not present (for hair/eye color packages)
  • Ported over animation key frame fix for ed8pkg2gltf from uyjulian/ed8pkg2glb

 

v2.3.0

  • Added support for collision meshes (physics support).  This is an experimental feature that allows for modifying maps and levels.

 

v2.2.5

  • Decompiler now properly identifies the R32_UINT vs R16UINT vs R8_UINT index buffers, instead of assuming R16_UINT.
  • Unskinned meshes are now properly attached to parent nodes.
  • Improved compatibility with switchless shaders.

 

v2.2.4

  • README updated, adding URL to Tutorial wiki.
  • Catch and report errors for:
    • Invalid JSON (update of lib_fmtibvb from repository eArmada8/gust_stuff)
    • Missing python module(s)
    • Invalid vertex group assignments
    • Missing shaders in metadata.json
    • Missing materials in metadata.json
    • Missing shader files in pkg build folder
  • ed8pkg2gltf.py now correctly outputs FMT element indices
  • extract_pka.py update from repository eArmada8/extract_pka.  The script now asks for confirmation before extracting entire pka if a user inputs nothing when asked which files to extract.

 

v2.2.3

  • Cubemap support is now working.
  • The repaired .dae.phyre file is moved back into the compile folder (D3D11) prior to moving images to the build folder.  This prevents the compiled version from overwriting the corrected version if there are any textures in the folder with the compiled map.

 

v2.2.2

  • build_collada.py will now exit gracefully if a .vgmap contains a bone that does not exist on the skeleton, with an error message identifying the name of the submesh and the name of the missing bone.
  • build_collada.py will no longer crash if an invalid (singular) matrix is found in the heirarchy, if the node does not belong to the model skeleton (e.g. if it is a locator).
  • Cubemap support has been re-implemented (removed in v2.2.0).  It does not appear to be applied properly (no visible effect on the model), but models with cubemaps can once again be compiled properly by the compiler and will otherwise load in-game properly.

 

v2.2.1

  • Improved sampler state preservation.  Compare mode sampling (casts shadow) flag, min LOD, max LOD now preserved.  Wrap format now preserves all 5 possible states (including clamp to edge and clamp to border).

 

v2.2.0

  • The 'images' section has been removed from metadata.json.  The build script will now construct it from the images in 'materials'.
  • Cubemap support has been removed, as it was dependent on 'images' and there is no clear timeline for adding map support.  If reimplemented, it will be done differently.
  • The write_pkg script now parses asset_D3D11.xml if available, and will only include files listed in the xml (and the xml file itself).

 

v2.1.8

  • Fix crash with glTF extractor (bug in node suffix detection).

 

v2.1.7

  • Adds support for decompile of recompiled packages.
  • Added '_node' to new nodes to get around a strange bug in the compiler.
  • Fixed all geom regression (This bugfix was included in v2.1.4 but somehow disappeared).
  • Fix asset_D3D11.xml generation when the xml is from a template instead of the original package.

 

v2.1.6

  • Preserve the original heirarchy matrices (inverted bind matrices) where possible, instead of calculating them.  This is necessary because some matrices from Falcom do not match their node matrices.
  • Preliminary support for multi-dae pkgs and switchless shaders.  Also shader switches are now preserved in the dae (this results in zero change in the final pkg since the shaders are replaced with genuine shaders, but is necessary to manage switchless shaders).

 

v2.1.5

  • Multiple UV/TEXCOORD elements are now supported.  The ed8pkg2gltf.py script will now use the stream binding data to generate .uvmap files that are used to map textures to secondary uv's.  (The build script cannot map secondary uv's without these .uvmap files, so re-extract meshes to get the .uvmap files as needed for ongoing projects; back up all work first.)  Note: ed8pkg2gltf.py also removes all unmapped uv maps from the gltf (they are still present in the raw buffers), and extract_from_gltf will expect all unmapped uv maps to have been removed when it generates .uvmap files.  I had to implement gltf extract this way because the extractor does not have access to the stream binding data (there is no way to store it in the gltf itself).  For glTFs generated with versions before 2.1.5, delete unused uv's before extraction.
  • Bug fix - increase limit on texcoord from 3 to 8, as the secondary uv is often stored in the 4th texcoord.
  • Bug fix - prevent crash if non-skeletal nodes are in the vgmap (artifact of FBX->glTF conversion)

 

v2.1.4

  • LZ4 compression is now applied by default, resulting in ~50% reduction in .pkg size.  Tested in NISA CS3, CS4 and CLE Hajimari.  Requires lz4 python module to be installed, please run install_python_modules.bat again to install the new module.
  • Remove rounding on values for geometry and skeletal weight (bug fix).  This was present to mimic Maya output (when I was first trying to get the compiler to accept my dae without crashing), but is not needed so there is no reason not to use full precision.
  • Small bugfix for non-skinned meshes / non-character models.  Compiler will not accept more than one instance_geometry per node so now each is placed in a separate node.  Behavior for instance_controller is unchanged.
  • Updated README to call attention to using BC7 compression for textures or textures may be horizontally flipped in-game.

 

v2.1.3

  • Many bugfixes to glTF extraction
  • Add tangent calculator to glTF extractor for meshes without tangent
  • glTF produces partial vgmaps with non-empty groups only by default, as fbx export can result in non-node vertex groups (and these are retained going through conversion, but will cause the collada build to fail).  Override with command line.
  • ed8pkg2gltf.py no longer exports more than 3 uv/tangent/binormal semantics per mesh by default.  Override with command line.
  • build_collada.py now supports out-of-order node lists, TRS-transformation nodes
  • Bugfixes to build_collada.py, especially for skeleton math
  • Prevent import of top nodes without children.  These are inserted by noesis during glTF export, causes the compiler to fail, and are unnecessary as the collada builder can create the nodes as needed in the correct location.
  • Allow arbitrary mesh filenames
  • Preliminary support for non-skinned meshes and non-character models (untested)
  • RunMe.bat does not delete temporary shader files until the end of the build process

 

v2.1.2

  • Fix location of .dae file for non-base costumes (e.g. C_CHR001_C00)
  • build_collada.py now writes an updated asset_D3D11.xml file in the build directory
  • ed8pkg2gltf.py now writes TANGENT into the gltf regardless of expanded handedness (needed for extraction tool)

 

v2.1.1

  • Add handling for the COLOR semantic to ed8pkg2gltf.py and build_collada.py
  • Add experimental glTF to raw buffer extraction tool
  • Update lib_fmtibvb.py

 

v2.1.0

  • Overhaul of the materials section of the metadata.json
  • The mesh .material files also no longer say "Skinned" (unneeded)

 

v2.0.1

  • Fix collada build failure when mesh name has underscores in it

 

v2.0.0

  • This is now a modding tool chain for CS3/CS4/Hajimari (although the prior functionality still exists). Can build COLLADA .dae files and generates all necessary files to build a new .pkg for insertion into the game. Please see README.md for more details.

 

v1.0.1

  • QOL improvements (textures go in a folder now, status messages during processing, double-click to run

 

v1.0.0

  • Initial release

 

NOTE: The new v2.1.0 metadata format and .material files are not compatible with versions prior to v2.1.0. Please back up your work, compile and build your .pkg using the version you started with, and unpack with this new version to get new metadata.

 

As always, the latest version is at my GitHub.

 

Features:

  • Easy mesh editing using the familiar 3dmigoto plugin, so you can still follow all my tutorials
  • You can change textures, materials and shaders.  If you want to add a shader with transparency to a character who does not have one, you can do that!
  • You can use all the bones!  (Although you do not want to go over 80 bones on one mesh or GPU skinning will be disabled for that mesh.)
  • The resulting mod does not need 3dmigoto.  Great for users of Steam Deck, or anyone who loves steam overlay / steam input.

The phyre engine format is a nightmare, and its container files cannot be edited directly due to excessive use of pointers.  So making .pkg mods will require use of a compiler, which means the results will not be identical to original, but so far it is hard to tell if there is any difference.

 

How to use:

 

Quote

UPDATE:  There are new updated tutorials on the github wiki!

 

To explain, I am going to do a simple skirt and tights delete for Emma.  (Actually I've already made this mod for 3dmigoto, so I'm just going to go through the steps.  There is actually a way to port 3dmigoto mods, which I will go through at the end.)

 

First you need to set up Blender with the 3dmigoto plugin, please see the top of this tutorial.

 

You will need to know what model you are using, you can use this table for CS4, or look here for tables for CS3 / Hajimari.

 

CS4 characters.csv

 

You need my tools, above.

 

Finally, you will need the compiler, here.  Also, you need the Windows SDK for the compiler.

 

First, go to {Steam}\steamapps\common\The Legend of Heroes Trails of Cold Steel IV\data\asset\D3D11, and put extract_pka.py here, and run it.  Just hit enter for the first question, and type in the name of the pkg you want to extract in the second question.  Here, I am extracting C_CHR005.pkg, which is Emma.

 

Spoiler

821858130_2023-02-2419_26_36-Window.png.e63c81185613fdab435dcda052c78f94.png

 

Put the pkg file, ed8pkg2gltf.py and lib_fmtibvb.py from the download above into a folder.  Double-click ed8pkg2gltf.py.

 

Spoiler

261359964_2023-02-2419_27_30-Emma.png.c07d9c75e4a62d96e7c916a884d8e73a.png

 

It will make a folder with the same name as the pkg.  Go into that folder.  Inside you will see several subfolders.  There will be a meshes folder with the meshes, there will be a build folder (it has the same name as the package), and a third folder with the textures.  The name of the textures folder is determined by Falcom and might be different in the model you are working on, but for Emma the textures are in assetconv_temp/dds_dae/D3D11.


 

Spoiler

768103427_2023-02-2419_28_22-Emma.png.6553b7461781e08a98be5d20eb5bfe45.png

 

1588808340_2023-02-2419_32_06-C_CHR005.png.31e0065b128cda5d1156e404965b99b3.png

 

Now you can mod!  First, I will delete Emma's skirt in Blender.  Import the meshes with the 3dmigoto plugin.  When you are done, export again and overwrite the meshes with your new version.  I am not going to go over how to modify meshes in Blender, because I have tutorials for this already.  See this tutorial on modifying meshes, and this tutorial on how to delete a skirt.  (Stop at step 10, you do not need to split the buffers or make ini files, that is for 3dmigoto.)  In my case, I modified meshes 3, 4 and 5.


 

Spoiler

1059343124_2023-02-2419_34_17-Blender.png.452a9553942201afe68653669a3f97c4.png

 

1219679528_2023-02-2419_34_36-Blender.png.594f9328a72c00827568157ccbbce9a7.png

 

133542819_2023-02-2419_40_52-Blender.png.89e6169866e33a05bd6b275f0ea34da8.png

 

Second I will replace her tights.  Again, I will not teach you how to edit the texture because I already have a tutorial for that too, right here.

 

Put your new texture in the texture folder.  If the texture is needed only in one place, or if it is precisely made so the rest of the texture is not affected (like mine), you can just overwrite the old texture.  (Edit: Overwriting the texture only works if you have removed assets.pka, because pka files override pkg files when it comes to textures.  Please add new textures with unique names instead.)  This texture is used by 2 meshes - since I am adding it with a new name, I can use the new texture for the legs and the old texture for the other mesh.

 

Spoiler

2003402478_2023-02-2419_43_10-D3D11.png.afd4d6a05f2fac0b7af5429c24334365.png

 

You will need to know where the texture goes.  In this case, I want to change the texture for the material that is applied to mesh 2.  So I will open up 02.material and I can see that it uses the chr001_munamoto material.
 

Spoiler

1788872136_2023-02-2419_41_41-Blender.png.6f86519c0724597a3d1ad0e6682d936f.png

 

 

1247512336_2023-02-2513_22_47-D__Emma_C_CHR005_meshes_chr005_body_setup5_02.material-Notepad.png.347172b3ce8382e85e565b98a82f30e4.png

 

Open metadata.json. Go to chr001-munamoto in the materials section, go to the bottom, and change the texture name.  Here I have set it to EmmaTightsDelete.dds.

 

Spoiler

853677728_2023-02-2513_26_07-JSONEditorOnline_JSONeditorJSONformatterqueryJSONMozillaFirefox.png.71567f4cf69f0ddec5325fdacb4eb4f2.png

 

Copy build_collada.py, lib_fmtibvb.py, replace_shader_references.py and write_pkg.py into the folder.  From the compiler, copy CSIVAssetImportTool.exe, all the PhyreAsset_____ files, PhyreDummyShaderCreator.exe, SQLite.Interop.dll and System.Data.SQLite.dll into the folder (you don't need the shaders folder).

 

Spoiler

763605417_2023-02-2419_30_22-ED8ModTools.png.865d0bad7972eaa1ff473be5e2e60943.png

 

Double click build_collada.py.  It will build a collada file (it is in chr/chr/chr005/) and a shader file (it is in shaders/).  It will also make a new file called RunMe.bat.

 

Spoiler

2042613049_2023-02-2419_46_40-C_CHR005.png.e36df62c26d14bd1b2c83236ca7b7970.png

 

Double click RunMe.bat.  It will first run the compiler, then it will replace all the references to broken shaders that the compiler makes with references to real shaders from your original .pkg file.  Finally, it will move the textures and your compiled model into the build directory, and package the whole thing up.  If everything went well, you should have a new .pkg file!

 

Spoiler

1101196323_2023-02-2419_56_22-C_CHR005.png.375b250f697f99938765a0f2f57863b7.png

 

Put the package back into {Steam}\steamapps\common\The Legend of Heroes Trails of Cold Steel IV\data\asset\D3D11 (or D3D11_us if you are using CS3) and try the package in game!  Please note that packages between games are not directly compatible, I discuss porting pkgs from one game to another here.

 

Spoiler

1838537918_2023-02-2419_56_57-C_CHR005.png.ac438add0a83e50a447a000528ae8529.png

 

Spoiler

1907659907_2023-02-2420_03_07-TheLegendofHeroes-TrailsofColdSteelIV_SteamEnabled_GoGInited.png.5bf9e50e40f78bb7084c2f6278df52c5.png

 

Advanced:

 

If you want to replace materials / shaders from one character to another (for example if you want a transparency shader for a character that does not have transparency), you will need to:
1. Copy the material section from the donor metadata.json to your character's metadata.json.  You need to copy BOTH the unskinned and skinned section.  Even though the collada builder only uses the unskinned version, the shader repair tool needs data from both sections to do its job.  BE VERY CAREFUL with commas and brackets - JSON is very strict!  Please consider using a dedicated JSON editor like jsoneditoronline.org.  Here for example, you can see how I can copy sk_arfa over - both versions should be copied!  (Don't use that copy button in the middle, it replaces the entire section.

 

Spoiler

1339226119_2023-02-2513_31_04-JSONEditorOnline_JSONeditorJSONformatterqueryJSONMozillaFirefox.png.ef2ebd53334ab6a29ffe4a0f6a992df8.png


2. Update the texture names in the sections you copied to point to your character's textures.  You must have a texture for each slot, you cannot add or delete slots because these are determined by the shader!

 

Spoiler

1562696763_2023-02-2513_33_18-JSONEditorOnline_JSONeditorJSONformatterqueryJSONMozillaFirefox.png.e7e1f44725133934021c31777e6be617.png

 


3. Copy the two relevant shaders (skinned and unskinned) from the build folder of the donor to your character's build folder.  The ones you need are listed in the metadata for the material, two lines below the material name.

 

Spoiler

 

197635676_2023-02-2513_33_44-JSONEditorOnline_JSONeditorJSONformatterqueryJSONMozillaFirefox.png.aea498509ea3d142e7b814569e0443f1.png

 

739944693_2023-02-2513_34_42-C_CHR043.png.374ecd5d8c3cfdf3143029a80c5efa9b.png

 

 


4. Finally, change the .material file to point to the new shader that you copied over.

 

If you already made your mod in 3dmigoto and you want to copy it, there are two ways.  You need to know that the meshes dumped by ed8pkg2gltf have remapped bones to give access to the whole skeleton.  That means that they are not compatible with your 3dmigoto mods.  You can either:

  1. [Hard way, but you get the full skeleton on the other meshes] Use the merge technique to preserve the skeleton and the entire structure, just like in my weight paint tutorial.  (Select none on the mod mesh, select all on the donor mesh, then join, and go into edit mode and delete.)  The weight groups must match.  The easiest way to do this is to use my vgmap tool.
  2. [Easy way, but you give up full skeleton access] Before dumping the meshes, edit ed8pkg2gltf.py.  At the top, change partial_vgmaps_default to True.  Now when you dump the meshes, the vgmaps are compatible with 3dmigoto.  Delete the relevant .fmt/.ib/.vb for the meshes you are replacing, and put your mod meshes there in its place (do not delete .vgmap and .material or the import will fail!).
  3. [In-between] Dump with full skeleton like #1.  Instead of using the merge technique, use my vgmap tool to get the .vgmap.  Replace .fmt/.ib/.vb/.vgmap, keep the original .metadata.  (Both Blender and my importer uses the vgmap file to know where the bones go.)

 

 

Enjoy!  I look forward to seeing what the community does with this!

 

Edited by amorrow28
Posted

Upload replaced with new version 2.1.0.  The metadata should be much easier to work with!  I recommend using JSON editor online or equivalent to edit metadata.

 

If you are one of the 5 people who already downloaded the prior version, please back up your work, compile and build your .pkg using the version you started with, and unpack with this new version to get new metadata.  (and thanks for being one of the 5!)

Posted
16 hours ago, amorrow28 said:

juna_cs4.png.55935868a6e9f2f230e492e35ccc2ef7.png

(Huh... I thought we decided that shirt was not moddable...)

 

To my fellow modders,

 

I have written a tool chain to simplify making .pkg mods!  You can now make mods that do not need 3dmigoto, and I hope this can lead to mods we could not easily do before.  I owe lots of thanks to the folks over at the modding discord, who helped me with sample files and troubleshooting.

 

 

Upload replaced with v2.1.0!

 

ED8ModTools_v2.1.0.zip 43.78 kB · 0 downloads

 

NOTE: The new v2.1.0 metadata format and .material files are not compatible with versions prior to v2.1.0. Please back up your work, compile and build your .pkg using the version you started with, and unpack with this new version to get new metadata.

 

As always, the latest version is at my GitHub.

 

Features:

  • Easy mesh editing using the familiar 3dmigoto plugin, so you can still follow all my tutorials
  • You can change textures, materials and shaders.  If you want to add a shader with transparency to a character who does not have one, you can do that!
  • You can use all the bones!  (Although you do not want to go over 80 bones on one mesh or GPU skinning will be disabled for that mesh.)
  • The resulting mod does not need 3dmigoto.  Great for users of Steam Deck, or anyone who loves steam overlay / steam input.

The phyre engine format is a nightmare, and its container files cannot be edited directly due to excessive use of pointers.  So making .pkg mods will require use of a compiler, which means the results will not be identical to original, but so far it is hard to tell if there is any difference.

 

How to use:

 

 

Enjoy!  I look forward to seeing what the community does with this!

 

Great!

 

Two questions (that are sort of just one question):

 

1. Does this allow adding meshes? For example, could I add a skirt from model A into the package for swimsuit model B, or would I still need to join the mesh for the skirt into some mesh in model B?

 

2. If I still have to join meshes, do I still have to merge bones that are not in model B? I understand “you can use all the bones” to mean that I could join mesh A to mesh B without worrying about which bones were present in each (as long as there are fewer than 80 total).

 

If I understand correctly, it would be feasible to replace ride-along friends with modular costume pieces. But I do not know how the positioning of those things works.

Posted
30 minutes ago, NotAZebra said:

Great!

 

Two questions (that are sort of just one question):

 

1. Does this allow adding meshes? For example, could I add a skirt from model A into the package for swimsuit model B, or would I still need to join the mesh for the skirt into some mesh in model B?

 

2. If I still have to join meshes, do I still have to merge bones that are not in model B? I understand “you can use all the bones” to mean that I could join mesh A to mesh B without worrying about which bones were present in each (as long as there are fewer than 80 total).

 

If I understand correctly, it would be feasible to replace ride-along friends with modular costume pieces. But I do not know how the positioning of those things works.


Yes, you can add meshes, as long as all the bones in the vgmap exist on the skeleton. Just keep numbering past the end. You can also delete meshes.

 

You can merge meshes if you want as well. When I say you can use all the bones, I mean that each individual palette is not restricted by the original palette, like 3dmigoto. For example, in the past, if the mesh did not have Spine1, you were stuck and could not use it. Now every submesh can use any bone.


Weapons, accessories, ride-alongs, etc are separate models entirely. They attach to the model at special nodes called “locators.” (Bones are also nodes btw) The list of nodes that are locators is at the bottom of the metadata.json.

 

Posted
20 hours ago, amorrow28 said:

juna_cs4.png.55935868a6e9f2f230e492e35ccc2ef7.png

(Huh... I thought we decided that shirt was not moddable...)

 

To my fellow modders,

 

I have written a tool chain to simplify making .pkg mods!  You can now make mods that do not need 3dmigoto, and I hope this can lead to mods we could not easily do before.  I owe lots of thanks to the folks over at the modding discord, who helped me with sample files and troubleshooting.

 

 

Upload replaced with v2.1.0!

 

ED8ModTools_v2.1.0.zip 43.78 kB · 2 downloads

 

NOTE: The new v2.1.0 metadata format and .material files are not compatible with versions prior to v2.1.0. Please back up your work, compile and build your .pkg using the version you started with, and unpack with this new version to get new metadata.

 

As always, the latest version is at my GitHub.

 

Features:

  • Easy mesh editing using the familiar 3dmigoto plugin, so you can still follow all my tutorials
  • You can change textures, materials and shaders.  If you want to add a shader with transparency to a character who does not have one, you can do that!
  • You can use all the bones!  (Although you do not want to go over 80 bones on one mesh or GPU skinning will be disabled for that mesh.)
  • The resulting mod does not need 3dmigoto.  Great for users of Steam Deck, or anyone who loves steam overlay / steam input.

The phyre engine format is a nightmare, and its container files cannot be edited directly due to excessive use of pointers.  So making .pkg mods will require use of a compiler, which means the results will not be identical to original, but so far it is hard to tell if there is any difference.

 

How to use:

 

 

Enjoy!  I look forward to seeing what the community does with this!

 

 

I tried changing one mesh each in CS3 and CS4. The altered meshes are not showing up in the games, though. Sometime during RunMe.bat, I repeatedly saw the message “Unable to find fxc.exe to build FX shaders”. Do I need to install a Windows SDK to get that? I realize this might be a problem with using a tool you did not create.

Posted
28 minutes ago, NotAZebra said:

 

I tried changing one mesh each in CS3 and CS4. The altered meshes are not showing up in the games, though. Sometime during RunMe.bat, I repeatedly saw the message “Unable to find fxc.exe to build FX shaders”. Do I need to install a Windows SDK to get that? I realize this might be a problem with using a tool you did not create.


Would you mind trying the Windows SDK? I think it comes with the basic DirectX stuff.

 

It’s hard for me to know exactly what I have installed, I installed a bunch of stuff when I was trying to compile 3dmigoto for Kuro No Kiseki.

Posted
7 minutes ago, amorrow28 said:


Would you mind trying the Windows SDK? I think it comes with the basic DirectX stuff.

 

It’s hard for me to know exactly what I have installed, I installed a bunch of stuff when I was trying to compile 3dmigoto for Kuro No Kiseki.

Of course. I installed the SDK, and I now no longer see the message about fxc, but the mods still do not show up in the game. I did not notice any issues in the console messages, but they go by fast, and I do not know how to log them to a file.

 

Posted (edited)
1 hour ago, NotAZebra said:

Of course. I installed the SDK, and I now no longer see the message about fxc, but the mods still do not show up in the game. I did not notice any issues in the console messages, but they go by fast, and I do not know how to log them to a file.

 

 

Try adding this to the bottom of RunMe.bat:

 

cmd /k

 

Also, what do you mean by the mods do not show up?  Is the game crashing?  Is the character invisible?

Edited by amorrow28
Posted (edited)
On 2/26/2023 at 12:08 AM, amorrow28 said:

 

Try adding this to the bottom of RunMe.bat:

 

cmd /k

 

Also, what do you mean by the mods do not show up?  Is the game crashing?  Is the character invisible?

 

The console output follows. The problems are near the end. It seems like something is locking the fx and cgfx files. Perhaps running each program separately would help. I can test each part of RunMe.bat separately if you can tell me how to do the equivalent of `set "SCE_PHYRE=%cd%"` with the individual commands. Edit: I feel silly. I can just make multiple scripts and put that at the beginning of each. I will try that.

Spoiler

Mesh segment has more than 80 bones - will fall back to CPU skinning on all platforms
Writing file {Mod folder}/C_CHR005/D3D11/assetconv_temp/dds_dae/D3D11/chr005_02n_conv.dds.phyre for platform D3D11
Writing file {Mod folder}/C_CHR005/D3D11/assetconv_temp/dds_dae/D3D11/chr005_03_conv.dds.phyre for platform D3D11
Writing file {Mod folder}/C_CHR005/D3D11/assetconv_temp/dds_dae/D3D11/chr005_02_conv.dds.phyre for platform D3D11
Writing file {Mod folder}/C_CHR005/D3D11/assetconv_temp/dds_dae/D3D11/eyes_sphere_conv.dds.phyre for platform D3D11
Writing file {Mod folder}/C_CHR005/D3D11/assetconv_temp/dds_dae/D3D11/chr005_03n_conv.dds.phyre for platform D3D11
Writing file {Mod folder}/C_CHR005/D3D11/assetconv_temp/dds_dae/D3D11/fc_damyc00_conv.dds.phyre for platform D3D11
Writing file {Mod folder}/C_CHR005/D3D11/assetconv_temp/dds_dae/D3D11/dlight_all_conv.dds.phyre for platform D3D11
Writing file {Mod folder}/C_CHR005/D3D11/assetconv_temp/dds_dae/D3D11/chr005_01hr_conv.dds.phyre for platform D3D11
Writing file {Mod folder}/C_CHR005/D3D11/assetconv_temp/dds_dae/D3D11/chr005_04n_conv.dds.phyre for platform D3D11
Writing file {Mod folder}/C_CHR005/D3D11/assetconv_temp/dds_dae/D3D11/chr005_eyes_a_conv.dds.phyre for platform D3D11
Writing file {Mod folder}/C_CHR005/D3D11/assetconv_temp/dds_dae/D3D11/chr005_eyes2_conv.dds.phyre for platform D3D11
Writing file {Mod folder}/C_CHR005/D3D11/assetconv_temp/dds_dae/D3D11/chr_shadow_conv.dds.phyre for platform D3D11
Writing file {Mod folder}/C_CHR005/D3D11/assetconv_temp/dds_dae/D3D11/chr005_04_conv.dds.phyre for platform D3D11
Writing file {Mod folder}/C_CHR005/D3D11/assetconv_temp/dds_dae/D3D11/chr005_01_low_conv.dds.phyre for platform D3D11
Writing file {Mod folder}/C_CHR005/D3D11/assetconv_temp/dds_dae/D3D11/chr005_eyes_conv.dds.phyre for platform D3D11
Writing file {Mod folder}/C_CHR005/D3D11/assetconv_temp/dds_dae/D3D11/dlight_skin_conv.dds.phyre for platform D3D11
Writing file {Mod folder}/C_CHR005/D3D11/assetconv_temp/dds_dae/D3D11/chr005_00_low_conv.dds.phyre for platform D3D11
Writing file {Mod folder}/C_CHR005/D3D11/assetconv_temp/dds_dae/D3D11/chr005_01n_conv.dds.phyre for platform D3D11
Writing file {Mod folder}/C_CHR005/D3D11/chr/chr/chr005/chr005.dae.phyre for platform D3D11
Writing file {Mod folder}/C_CHR005/D3D11/shaders/ed8_chr.fx#451FDF2C03175389203490413C510041.phyre for platform D3D11
Writing file {Mod folder}/C_CHR005/D3D11/shaders/ed8_chr.fx#CC0818A01B06E27F87A8F35C0F3E48F4.phyre for platform D3D11
Writing file {Mod folder}/C_CHR005/D3D11/shaders/ed8_chr.fx#8DB19F4CD93353F35570013A68692DFC.phyre for platform D3D11
Writing file {Mod folder}/C_CHR005/D3D11/shaders/ed8_chr.fx#50BF1A225DCFF24125423BC24766F014.phyre for platform D3D11
Writing file {Mod folder}/C_CHR005/D3D11/shaders/ed8_chr.fx#330F1934F4CCE59D196305E09AB7B570.phyre for platform D3D11
Writing file {Mod folder}/C_CHR005/D3D11/shaders/ed8_chr.fx#24635FDEFD27F877DDC48748AE58FF24.phyre for platform D3D11
Writing file {Mod folder}/C_CHR005/D3D11/shaders/ed8_chr.fx#292920F7BCF964F57685F714FA5020C3.phyre for platform D3D11
Writing file {Mod folder}/C_CHR005/D3D11/shaders/ed8_chr.fx#0BD7EF090E4D36AB8D9EF43E31D9C26F.phyre for platform D3D11
Writing file {Mod folder}/C_CHR005/D3D11/shaders/ed8_chr.fx#970AC0B255DC467CF5E0BCFB33CB2EE5.phyre for platform D3D11
Writing file {Mod folder}/C_CHR005/D3D11/shaders/ed8_chr.fx#6AEC59FE520B0B2D509313FEC81103B7.phyre for platform D3D11
Writing file {Mod folder}/C_CHR005/D3D11/shaders/ed8_chr.fx#B3C5B53A51735CA8B34C26E931F9F893.phyre for platform D3D11
Writing file {Mod folder}/C_CHR005/D3D11/shaders/ed8_chr.fx#96A1EF93DE8131E2E4066E57856A742A.phyre for platform D3D11
Writing file {Mod folder}/C_CHR005/D3D11/shaders/ed8_chr.fx#9C40B80C13BAC9CE7EA92791F51FF0C3.phyre for platform D3D11
Writing file {Mod folder}/C_CHR005/D3D11/shaders/ed8_chr.fx#8A8675FF48E773A55B3DA12D2C20E157.phyre for platform D3D11
Writing file {Mod folder}/C_CHR005/D3D11/shaders/ed8_chr.fx#724573739B14E6DAB3563D3216A9EC62.phyre for platform D3D11
Writing file {Mod folder}/C_CHR005/D3D11/shaders/ed8_chr.fx#DA10203EE75100D0C19C65D404B72261.phyre for platform D3D11
Writing file {Mod folder}/C_CHR005/D3D11/shaders/ed8_chr.fx#1096D31A85168EF633089AC120F8AFAE.phyre for platform D3D11
Writing file {Mod folder}/C_CHR005/D3D11/shaders/ed8_chr.fx#749AC112D59695716EB1EEE52CEF7266.phyre for platform D3D11
Writing file {Mod folder}/C_CHR005/D3D11/shaders/ed8_chr.fx#334A54F82BE95DCFEF9C987CCDD49DCA.phyre for platform D3D11
Writing file {Mod folder}/C_CHR005/D3D11/shaders/ed8_chr.fx#0557A723EF1150C6BB59E6B495DE9F2E.phyre for platform D3D11
Writing file {Mod folder}/C_CHR005/D3D11/shaders/ed8_chr.fx#6E92A88AC045F9DE5C8F78C2D166E49A.phyre for platform D3D11
Writing file {Mod folder}/C_CHR005/D3D11/shaders/ed8_chr.fx#CE9B1B600A9CB46EDAB191648B183996.phyre for platform D3D11
Writing file {Mod folder}/C_CHR005/D3D11/shaders/ed8_chr.fx#E9FA70D02BE22E1FDA6658470CA1DF57.phyre for platform D3D11
{Mod folder}\C_CHR005\dummy_ed8_chr.fx#451FDF2C03175389203490413C510041.fx
The process cannot access the file because it is being used by another process.
{Mod folder}\C_CHR005\dummy_ed8_chr.fx#50BF1A225DCFF24125423BC24766F014.cgfx
The process cannot access the file because it is being used by another process.
{Mod folder}\C_CHR005\dummy_ed8_chr.fx#8DB19F4CD93353F35570013A68692DFC.cgfx
The process cannot access the file because it is being used by another process.
        1 file(s) copied.
        1 file(s) moved.
D3D11\assetconv_temp\dds_dae\D3D11\chr005_00_low_conv.dds.phyre
D3D11\assetconv_temp\dds_dae\D3D11\chr005_01hr_conv.dds.phyre
D3D11\assetconv_temp\dds_dae\D3D11\chr005_01n_conv.dds.phyre
D3D11\assetconv_temp\dds_dae\D3D11\chr005_01_low_conv.dds.phyre
D3D11\assetconv_temp\dds_dae\D3D11\chr005_02n_conv.dds.phyre
D3D11\assetconv_temp\dds_dae\D3D11\chr005_02_conv.dds.phyre
D3D11\assetconv_temp\dds_dae\D3D11\chr005_03n_conv.dds.phyre
D3D11\assetconv_temp\dds_dae\D3D11\chr005_03_conv.dds.phyre
D3D11\assetconv_temp\dds_dae\D3D11\chr005_04n_conv.dds.phyre
D3D11\assetconv_temp\dds_dae\D3D11\chr005_04_conv.dds.phyre
D3D11\assetconv_temp\dds_dae\D3D11\chr005_eyes2_conv.dds.phyre
D3D11\assetconv_temp\dds_dae\D3D11\chr005_eyes_a_conv.dds.phyre
D3D11\assetconv_temp\dds_dae\D3D11\chr005_eyes_conv.dds.phyre
D3D11\assetconv_temp\dds_dae\D3D11\chr_shadow_conv.dds.phyre
D3D11\assetconv_temp\dds_dae\D3D11\dlight_all_conv.dds.phyre
D3D11\assetconv_temp\dds_dae\D3D11\dlight_skin_conv.dds.phyre
D3D11\assetconv_temp\dds_dae\D3D11\eyes_sphere_conv.dds.phyre
D3D11\assetconv_temp\dds_dae\D3D11\fc_damyc00_conv.dds.phyre
       18 file(s) copied.

 

I meant that the character shows up unmodified in the game. For example, I removed the bottom half of Emma’s jacket, ran the scripts, and copied the pkg file back into the game data/asset/D3D11 folder, but the jacket was still down to her feet when I loaded the game (I even uninstalled 3dmigoto to be sure).

Edited by NotAZebra

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