Under "Import Model", there's an option to import the skeleton from the .gltf file. This will detect any changes to the joints & any new joints, and add them to the skeleton. The tooltip describes some guidelines for how to safely add joints (mainly ensuring that they have sequential IDs, and not to remove/re-index existing joints - Blender reference for setting the joint's index).
Using this, I was able to add a new joint above the head, and animate it to spin while sitting. Very rough, but demonstrates that it's possible with a skeleton-animation rather than a particle. Since no other mesh is weighted to that joint, it only has impact on the mesh I added.
Also, there's a new "Workspace" tab. Currently, this can be used to revert changes to individual resources within a .DAT file, and make basic modifications to some resource types. The main purpose of the workspace is to allow making multiple changes to a single file (ex: changing multiple animations in the race/gender file).
I tried simulating some of the emissive effects on FF14 armor - it works well enough when the vertices are only attached to a single joint (Mithra available here). This effect was done by adding two particles - one with a sharp version of the emissive texture, and one with a smaller, blurred version of the emissive texture (to make it "glow"). The particle mesh itself is a small cutout of those sections.
YouTube Video Placeholder
---
XimTools workspaces now supports viewing/modifying Texture (palette, full color, compressed) & Environment (lighting, skybox, draw-distance, etc) resources in .DAT files.
It's also a bit more flexible about importing textures from glTF folders - it'll try prefix matching and padding based on the mesh's diffuse material definition, so that you don't have to mess around with Custom Data in Blender (or at least not as much). I still highly recommend compressing .png into DXT1/DXT3 .dds.
this looks incredible.. is it possible for someone with no experience to do this? or am I awaiting the .dat swaps? lol
Thanks! It should be possible for someone with no experience to modify meshes (especially existing FFXI meshes), but adding particle effects still requires writing a script and having a decent understanding of how particle generators work. I'm trying to think of what a reasonable UI would look like for those.
I can't seem to load my inbox due to the ongoing site issues, so I'll respond here regarding the map question.
In FFXiMain.dll, there's a table that contains map metadata (currently at 0x595F0). In Xim, the class that loads & parses the table is ZoneMapTable.kt. The entries in the table contain information about:
the zone ID / sub-zone ID of the entry
the size of the map. Xim uses this field to place icons on the map, so I imagine the retail client does as well, but I don't think I ever actually verified. The function Xim uses to translate world-space coordinates into map-space coordinates is getMapPosition(...) in MapDrawer.kt
the map's offset (for areas that have multiple sub-zones, like Windurst Waters)
some other misc fields (links to the file-table for the UI .DAT)
Adjusting the size field by the same factor that you adjust the UI might work.
This port gave me a lot of trouble at first, but after spending more time learning Blender, I think I was able to get a reasonable result. I used the Shrinkwrap modifier, the Subdivision Surface modifier, and the Decimate modifier to make a base model & fit the clothes to it.
I also used texture painting to add some shadows/contours to make up for FFXI's basic lighting engine, but now I wonder if I could've used Blender's renderer to calculate the shadows and bake them into the texture instead.
YouTube Video Placeholder
---
XimTools received a couple of minor updates. It now supports making basic edits to skeleton-mesh metadata in the workspace, and has some better error reporting.
Here's a link to that code. It's not robust at the moment (the .obj parser is particularly bad), but it was able to create this mod without any need for hex-editing.
That link doesn't work for me. GitHub just says "aamace doesn't have any public repositories yet." Is the repository private?
Also, is it possible to use XimTool with Maya and the FBX file format instead of Blender and glTF?
Also, is it possible to use XimTool with Maya and the FBX file format instead of Blender and glTF?
I don't have access to Maya, so I'm not sure. I tried used Blender to convert the glTF to & from FBX (ensuring that Custom Properties are included), and it seems to work. I'll take a look at adding it to XimTool, but it probably won't be high priority if the work-around is functional.
I don't have access to Maya, so I'm not sure. I tried used Blender to convert the glTF to & from FBX (ensuring that Custom Properties are included), and it seems to work. I'll take a look at adding it to XimTool, but it probably won't be high priority if the work-around is functional.
Maya does not support the glTF format out of the box, and requires a paid plugin in order to use the format. Maya does, however, support both the FBX and OBJ file formats out of the box. I personally am not familiar with Blender, as I learned how to model using Maya, and I would prefer to continue using Maya if possible. How difficult would it be to reprogram XimTool to work with Maya directly so that I could cut Blender out of my development pipeline?
How difficult would it be to reprogram XimTool to work with Maya directly so that I could cut Blender out of my development pipeline?
It would be difficult - however, automating the conversion using headless Blender was doable (though, still plenty of weird edge-cases...). The newest version (0.8) of the tool will automatically do the conversion based on the file name. This is only integrated in Export/Import Model for now.
I tried it out with a free trial of Maya very briefly. When importing, the only setting I changed was Units -> Meters. I didn't change any settings on export.
I received a couple of requests for a guide, so I put together a quick tutorial to demonstrate a minimal mod. Feel free to ask any questions, or make suggestions about features / quality-of-life improvements.
Here's a basic tutorial on weapons, demonstrating a simple port from FFXIV (Polaris Point, without particles). I'll probably do another tutorial to demonstrate an armor port.
Hello - as a proof-of-concept, I tried porting the Morbid Mogblade from FFXIV, and adding a basic particle effect to it. The .DAT files are available here.
YouTube Video Placeholder
My process for creating the mod was:
Used "FFXIV TexTools" to export the Morbid Mogblade model as .obj & textures as .dds (DXT1)
Used Blender to split the .obj file into specular/matte models, and create a simplified model for the particle effect.
Wrote some code that converts the resources into FFXI types, configures the particle effect, and overwrites an in-game item.
In the FFXI client, unequip and equip the item to reload the model
Here's a link to that code. It's not robust at the moment (the .obj parser is particularly bad), but it was able to create this mod without any need for hex-editing.
If you'd like to try running the code, I'd recommend using IntelliJ IDEA (since it's kotlin). The MogbladeMod is currently configured to overwrite "Bronze Sword" (but also generates backups, and contains a utility to restore from the backups). For example, you could experiment with the `ColorInitializer` to change the color of the particle.
If you like the sword, but not the particle effect, then simply removing this line is sufficient.
It uses "Bronze Sword" as a base, since it has the appropriate sound-effects & I had a couple in my inventory.
I plan to port/rewrite the tools I used for the Firetongue mod, including the one that translates from Skeleton-mesh to Particle-mesh
If you're curious about the internals of the tool, I'd recommend cross-referencing with Xim's source code. A lot of this was just copied over, and is the "write" counterpart to Xim's "read" functionality.
Missing Particle/Routine functionality is easy to implement (as long as it is understood in Xim)
Ideally, there'd be a GUI, but that's a long ways away.
The port will never be 1:1, but for rigid models (attached to only a single joint), it's not too bad. FFXIV models use normal/specular textures, which FFXI doesn't support, so there's some workarounds with the diffuse texture & specular material settings.
I think FFXIV models have various LoDs, so it should be possible to use one of the simpler models in order to reduce triangle-count (but I couldn't figure out how to export them from TexTools)
Similarly, TexTools supports exporting the various mipmap levels, so those can be used to reduce texture size
For skinned models (ie: armor), I imagine it's not feasible to port, but I haven't looked into how FFXIV implements them.