Saturday, March 6, 2021

Repost from Neko-Sentai: Setting Vertex Weights in Virtual Reality Studio (VRS)

The following is a repost of an old thread that was originally posted in September of 2018 on the Neko-Sentai forums. The thread discusses how to set vertex weights in Virtual Reality Studio (VRS). The forums also contain a fair amount of adult content, so consider this your fair warning if you decide to visit the page.

Neko-Sentai » FFXI DAT Section » FFXI Modders Corner
Another animation problem with Skirt

09-04-2018, 05:35 PM
candypants2

I'm trying to make the mithra byakko skirt look tighter and shorter. When she walks and does other animations, the back of her skirt disappears into the back of her ass. Can anyone point me in the right direction to solving it?

Attached Files:
dat 127-63.DAT (110.1 KB, 69 views)
09-05-2018, 01:30 AM
crinton

The skeli rig for the pants and the legs are off you need to manual set the weights for the shorts I can go into more detail later if you don*t know how to do it. About to finally get my computer up and running and I*ll make a few more trust mods.

09-05-2018, 04:20 AM
candypants2

Thanks for getting back. Yes if you could let me know more details on how to fix the weights, that would be great! Send me a PM if you need VRS8.

09-09-2018, 08:47 AM
candypants2

Small update

Just wanted to post an update of where I am. I found where the weights are configured. I guess I need to re-bind the faulty vertex's to different parts of the skeleton?

I am also not sure what the actual weight values mean. They go from 0.1 to 1 and even the smallest change seems to mess it up badly.

Here's a couple of screenshots:

09-20-2018, 06:21 PM
KorithXI

Each vertex can be assigned to 1 or 2 skeleton bones. If you want the end result to make any sense, the total value should add up to 1. In your screenshot, it only adds up to 0.9. Also, you aren't limited to only 0.1 increments. You could do 0.45 and 0.55 too.

In terms of what they mean, it just means how closely that vertex follows that bone. If a vertex is set to 1.0 on a bone, it will follow it completely. If it's only 0.5, it would only move half as far as the bone did. When assigned to two bones, it will combine the results. Ex:
- Vertex 1 is connected to bone 1 with a value of 1.0
- Vertex 2 is connected to bone 1 with a value of 0.5 and bone 2 with a value of 0.5
During an animation, bone 1 moves 4 units to the right. Bone 2 moves 2 units left and 2 units up. The result is that vertex 1 would move 4 units to the right, just like bone 1 did. Vertex 2 would get moved 2 units to the right (since it only moves 0.5x as far) but then it would also move 1 unit left and 1 unit up, because it follows bone 2 as well (but again, only 0.5x as far). The result is vertex 2 would go up 1 and right 1.

It's really a process of trial and error. Adjust the weights a little, export and see if it clips too much. A good starting point is often to select a nearby vertex on the underlying model and see what their weight is.

Given how high you've raised the skirt, you'll probably want the first two rows of vertices to be bound mostly to the pelvis skeleton. The second row might need a bit on the legs or flaps, but it might also be fine on just the pelvis. The third row looks like it's not clipping too bad, so it might be ok as-is.

Skirts are especially annoying, since the game doesn't have any proper skeleton bones for them. You have to make due with these bones (bone numbers are for Mithra):

  • 3 - Pelvis
  • 5,11 - Upper Leg
  • 16 - Upper Front Flap
  • 17 - Lower Front Flap
  • 18,20 - Upper Side Flap
  • 19,21 - Lower Side Flap
  • 24 - Upper Back Flap
  • 25 - Lower Back Flap
  • 26,27 - Lower Back Flap Sides
  • 22,23 - Thigh Guards

To get a better idea of how they're used, you can look at like the Wool Robe. It uses all of those except 22 and 23, which are used for metal plate armor, like the Breastplate.

09-21-2018, 08:08 PM
candypants2

Thank very much for the info. This has helped me fix the skirt. I will publish the results soon with all the AF brands.

Huge thanks again ^^

09-21-2018, 08:48 PM
candypants2

The outcome

[CENSORED]

FFXI Tool

Some of you may remember an old 3rd-party program called FFXI Tool that was created way back in 2006 by some Japanese guy. I think he went by the username "Tomato," and his code is the original reverse engineered code from which all other FFXI model viewers (including Noesis) are derived. Here's some links for anyone who's interested:

FFXI Tool Official Website:
http://cosmosa.jp/ffxitool/

解析メモ
Kaiseki Memo (Analysis Memo):

http://cosmosa.jp/ffxitool/kaimemo.html

ジェネレーター 解析メモ
Jenerētā Kaiseki Memo (Generator Analysis Memo):

http://cosmosa.jp/ffxitool/generator.html

ジェネレーター データ番号使用表
Jenerētā Dēta Bangō Shiyō-hyō (Generator Data Number Usage Table):

http://cosmosa.jp/ffxitool/gene.html

メモというぼやき
Memo to iu Boyaki (A Murmur Called a Memo):

http://cosmosa.jp/ffxitool/note.html

Basically the above links are an analysis of how several of the data flags on the FFXI models are used. This should be very useful to anyone trying to mod FFXI models in any significant way. Note that it's all in Japanese, so you'll probably have to use Google Translate to understand it (unless you can read Japanese, of course).

On the FFXI Tool website, there are four email addresses listed, which I assume are the emails for the team members who created FFXI Tool. The project lead appears to be the one named "Tomato."

メールは f on2 あっと c o s m o s a . j p です。
以前使用していた、
http://members.at.infoseek.co.jp/tomato1980/ffxi/
fo@cosmosa.jp
akake@platon.co.jp
tomato1989@lycos.jp
salsa877@hotmail.com は 現在利用不能となっています。

Putting the above through Google Translate gives us this:

The mail is f on2 and c o s m o s a .jp.
I used to,
http://members.at.infoseek.co.jp/tomato1980/ffxi/
fo@cosmosa.jp
akake@platon.co.jp
tomato1989@lycos.jp
salsa877@hotmail.com is currently unavailable.

If you want to try contacting the creators of FFXI tool, there you go. But be forewarned, they're Japanese, and as such, probably don't speak English. Also, I have no idea if any of them still check those email addresses or not.

Mooshywooshy's blog

Ashenbub recently informed me about an old blog from a longtime FFXI modder by the name of Mooshywooshy. Check out his stuff. It's pretty neat.

Mooshywooshy's FFXI Modding Blog

The most recent post appears to be from 2012, so he's most likely retired from the FFXI modding scene at this point, but still some good stuff there.

Monday, February 3, 2020

Noesis updated! Improved compatibility and new features for FFXI

Rich Whitehouse, the creator of Noesis, has recently decided to make some improvements to the program's compatibility with FFXI when users told him that Square-Enix's new game client was crashing Noesis. While Rich was fixing the problem, he added support for FFXI's bump maps, along with a new advanced command (-ff11hton #) to automatically convert those bump maps into normal maps that can be used by modern engines, such as Unity and/or Unreal Engine 4. Make sure to update your Noesis client to the latest version (v4.4191) to get these new features!
New Advanced Commands for FFXI in Noesis version 4.4191:

FF11 Model/Data:

CommandPurpose
-ff11bumpdir <arg>specify directory for bump textures.
-ff11hton <arg>convert height to normal maps, arg=z factor.
-ff11nolodchangedon't try to switch to lod0.
-ff11mapbonescreate bones for map objects.
-ff11keepnames <arg>1=keep map object names, 2=w/index prefix, 3=w/subobj.
-ff11noshinyno special assignment for shiny materials.

Tuesday, January 29, 2019

Separating Out Grass Meshes When Creating a Custom UCX Collision Mesh

This tutorial will teach you how to separate out grass meshes (and other non-solid objects) from the environment when creating a custom UCX collision mesh for use in Unreal Engine 4. The purpose of doing this is so that if you want to convert FFXI's graphical meshes into a collision mesh instead of using FFXI's official collision meshes for whatever reason (such as enhanced collision accuracy or getting rid of invisible walls), grass objects won't become solid blocks (like they are in this video), but rather will allow the player to pass right through them like in the official version of the game. Also, removing the grass objects from the rest of the environment and importing them as their own separate object gives us the ability to make them subject to wind dynamics,which improves the player's sense of immersion in the game world. We will be using 3Ds Max for this tutorial. Another tutorial on how to do the same thing in Maya will be posted at a later date.

Tutorial by Evenger, edited and expanded by Rhianu

Step 1: Import your FBX file into 3Ds Max
I'm assuming here that you have already exported the zone you wanted from Noesis and saved it as an FBX file.

File → Import → Import...

Navigate to and select the zone FBX file which you exported using Noesis, and then click "Open" to import it.

Under the "Advanced Options" section in the FBX Import window, put a check mark in the checkbox labeled "Automatic" to ensure that unit scale is converted automatically.


Step 2: Separate and collapse the grass objects
Select the item you wish to separate. Look for the matching names on the list to select them faster. This can be done with any object, but in this tutorial we're focusing on grass, so only select the grass objects.

Here I have all the grass selected. It is called "kusa," which is the Japanese word for "grass." (  )

Once you have all the grass objects selected, hit the "Collapse Selected" button to combine all the grass meshes into one single mesh.


Step 3: Hide the new combined grass mesh
Click on the icon that looks like an eye to hide the grass mesh.

The grass objects should all become invisible (hidden) when they are disabled by toggling off their visibility via their corresponding eye icon.


Step 4: Delete all the other meshes
Delete everything in the scene except for the grass meshes.

Select All (Ctrl + A) → Delete

Your scene should now be completely empty (except for the grass mesh, which is still hidden).


Step 5: Unhide your hidden grass mesh and export
Unhide your combined grass object by toggling its visibility via the eye icon again.

Your grass objects should be the only thing left in the scene.

Finally, export your combined grass mesh.

File → Export → Export...

Save your grass mesh as an FBX file, and you're done! Just import it into your UE4 project and you should be good to go.

Friday, December 28, 2018

Source code and project files for RZN's MapLib & MapViewer now available!

Big announcement, everybody! Our good friend atom0s managed to finally get ahold of RZN today, and RZN gave atom0s full permission to share the source code and project files for his old MapLib and MapViewer projects in the hopes that doing so will help others in FFXI's modding community. For those who don't know, these two programs are essentially model viewers for zones (MapViewer for viewing the zones, and MapLib for extracting and saving the zones). RZN's source code and project files used to be available on an old version of the FFEvo website which, unfortunately, was lost in a hardware failure back in 2015. FFEvo itself has since returned, but none of the old data could be recovered. Thankfully, atom0s had a backup copy of RZN's source code and project files saved on his own personal hard drive, and he has apparently been sitting on these files for several years. Though out of respect for RZN's privacy, atom0s has been keeping the files to himself until such a time when he could manage to contact RZN and get his permission to share the files with others. And on the morning of Friday, December 28th, 2018, that's exactly what happened! Contact was finally made, and RZN gave atom0s his blessing to share his source code and project files with the world.

You can download RZN's projects below:


Downloads:

Source Code & Project Files:
RZN's MapLib
(Size: 12.0 KB)

  • Source code to the MapLib project by RZN.
  • This lib can open and dump the map DAT files for all areas before the Adoulin expansion.
  • Permission was granted by RZN to allow atom0s to share this source code on Dec. 28, 2018.
  • The source code in this repository is © 2015-2018 to RZN.
RZN's MapViewer
(Size: 40.0 KB)

  • Source code to the MapViewer project by RZN.
  • Permission was granted by RZN to allow atom0s to share this source code on Dec. 28, 2018.
  • The source code in this repository is © 2009-2018 to RZN.
NOTE: In order to compile and run the above source code, you will need to either install the DirectX9 SDK, or at least download the d3d9 header files and libs, and then in Visual Studio add an include path to wherever you saved them.


Compiled, Stand-Alone Applications:
RZN's MapLib
(COMING SOON!!!)

Program library used to generate data -- i.e. extract and save the 3D geometry of zone/areas so they can be imported into other programs. MapLib can read all zones except the ones from the last expansion pack, Seekers of Adoulin.
RZN's MapViewer
(Size: 144 KB)

Application used to view maps (the word "map" here refers to the 3D geometry of the zones/areas).

The following is a simple set of instructions I've put together.

Controls:

Key

Action

Up Arrow Key Move foreward.
Down Arrow Key Move backward.
Right Arrow Key Rotate clockwise.
Left Arrow Key Rotate counterclockwise.
Page Up Move down.
Page Down Move up.
Ctrl Increase speed.
Home Reset position.

Wednesday, December 19, 2018

GalkaReeve's Map Viewer — Model Viewer for Zones

Since 2016, the source code of an unfinished map viewer program for FFXI has been available on the GitHub respository of a Reddit user known as GalkaReeve. You can either download his original source code and project files and compile them yourself, or you can download a standalone application which I compiled myself. The link to the already compiled version is provided further down below in this blog post.

Download Source Code & Project Files:
GalkaReeve's GitHub repository
(Size: 212 MB)

    19 May 2016

    • fix a bug that cause premature stop in extracting dat. Main reason why some dat have missing MMB & img.
    • add a default VAO creation, to fix no Model/Map display for window 10. User need to update latest glm/glfw3 as well, else it will generate compile error.
    • fix DXT3 convert error, should be using BCD2Decode.
    • NOTE: for user that encounter GLFW3 crash when calling glfwInit(), u have to goto Project Properties -> C/C++ -> Code Generation -> Runtime Library, change /MDd to /MD

    7 June 2016

    • fix transparency for mapViewer
    • add func 'v' to view individual Model within each MMB.
    • Note: mapViewer uses VisualStudio NuGet Manager for opengl, glfw2, glew. The packages is 'nupengl.core' access thru 'Tools -> NuGet Package Manager -> Manage NuGet Packages for Solution'
    • Remember to change --- char ffxidir[512]="E:\Program Files (x86)\PlayOnline2\SquareEnix\FINAL FANTASY XI\"; to your folder.
In order to compile GalkaReeve's code, you will need to setup OpenGL Mathematics (GLM) in the project after you've downloaded it. GalkaReeve's code requires GLM, but does not include it. If you're having difficulty figuring out how to setup GLM, watch the following YouTube video tutorial:
Note that the above video is a generic tutorial about setting up GLM for any project, and is not specifically related to GalkaReeve's Map Viewer, or even to FFXI. It's just about setting up GLM in Visual Studio. I did not make this video.

If you'd like additional information about the project from GalkaReeve himself, there's an old Reddit post of his from three years ago, which you can read at the following link:

Reddit Topic: ffxi dat reverse engineering

As you can see, GalkaReeve has (or rather had) multiple FFXI projects in the works, but his mapViewer program is the one I want to focus on. The program hasn't been updated by GalkaReeve himself since 2016, so I'm assuming he has abandoned the project. And so, for the sake of everyone's convenience, I've taken the liberty of compiling his source code into a standalone application and uploading it to my own DropBox account. You can download the program at the following link:

Download Compiled, Standalone Application:
GalkaReeve's Map Viewer
(Size: 2.04 MB)

    At the moment, this program only works if you have FFXI installed in the default directory, which is as follows:

    C:\Program Files (x86)\PlayOnline\SquareEnix\FINAL FANTASY XI\

    If you have FFXI installed in any other directory, or under any other drive letter besides the 'C' drive, the Map Viewer program will not run. I plan to eventually fix this when I have time, but I don't know when that will be.


The following is a simple set of instructions I've put together. Note that I figured out these commands through my own experimentation with the program, and as such, this list may be incomplete.



Controls


Standard Mode:

Key

Action

Notes

ESCQuit ProgramExits the program.
Arrow KeysMove aroundAllows user to navigate the zone by moving the camera around.
MouseAim Camera Allows user to point the camera in a particular direction.
Page UpNext ZoneLoad the next zone.
Page DownPrevious ZoneLoad the previous zone.
WToggle wireframe modeToggles between normal rendering and wireframe rendering.
JGet ID of geometry piece?Warning!!! Crashes the program!!!
CDraw CubeDraws boxes around each geometry chunk.
XToggle model inclusive/exclusiveSeems to toggle between two pieces when viewing an individual chunk.

Visible Set Mode:

Key

Action

Notes

SEnable potential visible set*
DUnknown subcommand*
FUnknown subcommand*
* I haven't figured out how to enable visual sets, so I can't tell what any of the above commands actually do. However, I do know that with no visual set enabled or selected, pressing either 'D' or 'F' prints the following line of text to the console window:
"press S to enable Potential visible set"

Dual Camera Mode:

Key

Action

Notes

GToggle Dual CameraEnables a second rendering camera separate from the viewing camera.
EToggle EyeWhile Dual Camera mode is enabled, press 'E' to activate the "Eye" (i.e. second camera) and use the arrow keys and/or mouse to move the Eye around.
CDraw Cube / View FrustumDraws boxes around each geometry chunk, and also draw the Frustrum (viewing cone) of the "Eye" (second camera)

Octree Mode:

Key

Action

Notes

ORemove octreeToggles between viewing the entire zone and viewing one individual chunk of geometry.
MSwitch between MMB/MZBToggle between object prefabs (MMB) and instances (MZB).
VView sub-pieceCycle through all the various sub-pieces of the currently selected individual chunk.*
*Pressing 'V' outside of Octree Mode prints the following line of text to the console window:
"To view individual MMB/MZB, press 'O' to remove octree, 'M' to switch, 'V' to view subPiece"



There may be more that this program can do, but those are all the functions I can figure out for now. If anyone else thinks they can add to this list, please let me know. Thanks.