[Utility] SB3Utility (GUI + Script) Releases and Support Discussion

@roy12:
In FBX there are no submeshes, but you could have several meshes in one frame. In order to support submeshes most conveniently the number following the underscore is used as submesh index.

Oh I see, so it's an automatic behavior, never mind then. It's just that it kinda makes it harder to automatically replace meshes in frames, since they're almost always named with underscores in vanilla files (for example, if I have 40 separate meshes it's easier to name them the same in Blender as the target frames in the vanilla file so that I can grab them all, drop them anywhere in SB3UGUI and the program will target the frames with the same name as the input meshes). Creating new ones is good, but sometimes I have files where frames have an SRT different to all zeroes. I'm not sure of how to handle these, creating them automatically from the FBX file leaves them with SRT at all zeroes and I could end up with the new hair parts at the wrong position.

In the end I just used a different animator where parent frames for meshes have their SRTs at all zeroes, renamed the vanilla frames to something like hairXpYY, X being whatever hair I'm working on and YY being the part number, and renamed the materials in Blender to the same names as in SB3UGUI, to ease the import of 40 hair pieces (x2 if you count the undersides).

@HanmenNoAsura

You asked if it was possible to add texture maps to existing shaders. Well, I just tried it and it's possible, and it works. I just added a bump map slot to the eye material, gave it a bump map, and set its bump strength to 1, and it works:
eye_test.jpg
storm_cortana_default_eye_n.jpg

Of course, I had to exaggerate the specularity a bit to see it, but you can see how the surface light is being affected by the bump map, specially on the sclera.

I just had to add these two lines in the material properties:

_BumpScale ("Scale", Float) = 1
[Normal] _BumpMap ("Normal Map", 2D) = "bump" { }

However, to be able to actually set the bump map, you have to change the shader, so I made a new file, modified the shader's name, made that modification, copied it to the asset where the material is, and set this new shader for the material. Then you're able to modify these properties in SB3UGUI.
 
@enimaroah

Are dynamic bone names for hair hardcoded in some way?

I'm trying to add completely new custom ones for a hair with a different naming scheme, and even though they're correctly referenced in the monobehaviour and actually do deform the mesh if I change them in some way in SB3UGUI, they don't get affected by the monobehaviour at all, they seem static ingame.

This is the file:

http://roy12mods.com/download.php?download_file=custom_hair_bones_test.7z

Am I missing something in there? I'm pretty sure I've added bones with different names before, but maybe since these are completely new and different it's not working, don't know.

EDIT: Alright, just because I had no other ideas, I decided to do something random and reference the root (J_hair_wild_B_top) in one of the monobehaviours. Now the hair is moving.

Maybe it's not a names thing, but a structure thing. So now I changed the file to have a similar structure to others, which is N_hair_35->AS015_N_hairB->A015_N_hairB_Jtop->J_hair_sinami_B_top->cf_J_hairFR_s->cf_J_hairFR_00
N_hair_35->AS015_N_hairB->A015_N_hairB_Jtop->J_hair_sinami_B_top->cf_J_hairFL_s->cf_J_hairFL_00
N_hair_35->AS015_N_hairB->A015_N_hairB_Jtop->J_hair_sinami_B_top->cf_J_hairBL_s->cf_J_hairBL_00
N_hair_35->AS015_N_hairB->A015_N_hairB_Jtop->J_hair_sinami_B_top->cf_J_hairBR_s->cf_J_hairBR_00

But it still only works if I reference J_hair_sinami_B_top.
 
Last edited:
In your file you referenced leaf bone Transforms. That cant work. The bone chains are used downwards from the DynamicBone plugin. So the lowest possible Transform to use would be the parent of a leaf bone Transform (e.g. J_wild_side_hair_R_s) and that would still require that the leaf bone Transform is not Identity.

But you shouldn't use the lowest possbile, but the top most possible to really have several Transforms being rotated.
 
In your file you referenced leaf bone Transforms. That cant work. The bone chains are used downwards from the DynamicBone plugin. So the lowest possible Transform to use would be the parent of a leaf bone Transform (e.g. J_wild_side_hair_R_s) and that would still require that the leaf bone Transform is not Identity.

But you shouldn't use the lowest possbile, but the top most possible to really have several Transforms being rotated.

Oh, but I also tried referencing J_wild_side_hair_R_s, yet the bones didn't react to physics at all. Is it because the leaf bones are Identities?

Ah, maybe I should read on the unity documentation.

Thanks enimaroah.
 
A bone is displayed in Sb3UGS as a pyramid. Its base is around the bone's parent location. And the top of the pyramid is where the bone itself starts. Now if a bone's Transform is Identity all its children start at the same location. A vertex in close vicinity will mostly influenced by this bone and would nearly rotate round itself.

So, bones should have some visible length. But it would also not be good to make them too long [except for hair cuts like Cloud Strife]. And the bone chain should consist of at least two bones, better more.

BTW, the latest release of Sb3UGS v1.6.0 might interests you because it makes editing morphs with Blender easier. Export fresh to get the naming correct in Blender.
 
Oh, since my bone chain was of, well, one, that's probably why it isn't working. Well, in the end I ended up weighting the long hair to an existing skeleton, but this info could work for future hairs.

BTW, the latest release of Sb3UGS v1.6.0 might interests you because it makes editing morphs with Blender easier. Export fresh to get the naming correct in Blender.

Thank you based enimaroah.

EDIT: By the way enimaroah, is there any way to get all the tags we can use in transforms? I'm trying to make it so that I can actually color the teeth along with the skin color, but the problem with the tag 4E20 is that it also applies the face texture to any mesh in a transform with that tag.

Of course, another solution would be to merge the teeth texture with the face and fix the teeth UV accordingly, but that would leave me with a very tiny zone for the teeth.

If there's no tag to work around this, is there any way to check what each GPU Program in a shaders does? I want to see if removing one of them stops the face texture from being loaded when that tag is used, but keeps the color slider working. Maybe in the executable or in one of the binaries?
 
Last edited:
SB3UGS_v1.6.4

  1. Added support for binary TextAssets - export and replacement
  2. Fixed missing attributes of (Skinned)MeshRenderers in replacement
  3. Fixed crash in "MonoB & Other" tab for names which included " / "
  4. Fixed "Dump Type" for types which included unsigned 16 bit integers
Download:
1fichier

Sources:
1fichier
 
No, I dont think that I will implement that.

You have two options.
1) If you want to have a copy of a MonoBehaviour (in an AssetBundleFile) you can use "Mark for Copying" / " Paste All Marked" or the workspace. Afterwards you would have to adapt the bone chain by setting one reference to a local Transform.
2) For small changes the integrated editor of Sb3UGS should be sufficient. You can even extend arrays and insert new entries at a position you like.
 
PC is a different Unity version than HS and direct transfers (Copy&Paste and Workspace) require the same version. Especially between Unity4 and Unity5 both related assets MonoBehaviour and MonoScript have differences which Sb3UGS cant convert so easily.

Export/Replace of MonoBehaviours is limited to textual MonoBehaviours. DynamicBone MBs are binary, not textual.

But the latest extension for HS came with the nine-tailed fox. You can use one of those MonoBehaviours. The extra long back hair in cf_hair_b_08.unity3d would provide a version with falling down according to gravity.
You would just have to adapt the top Transform of the bone chain to your skeleton.
 
SB3UGS_v1.6.5

  • Added changeable texture mapping in imported materials when merging - thanks to Aastaroth
    1. use the context menu (right mouse button) to switch from DEFAULT to PROMPT
      MergeMater4291.jpg
    2. then drag the material or ImportedMateral node into the "Blue Area"
      MergeMater32c1.jpg
      for each material set to PROMPT the Options dialog is shown. "Ok & Continue" reuses the last values and the Options dialog is no longer shown.

  • Fixed "Blue Area" remained blue after error, "Ok & Continue" remained active

Download:
1fichier

Sources:
1fichier
 
Last edited:
  • Like
Reactions: Aastaroth
It verks! Gonna save me a lot of time doing batch imports. Thanks!

I notice a little bug though. Is there a reason which maps Specular map to "Norm" in default?
If it is a naming convention from the old game then it is quite weird.
Mapping it to "Gloss" is more reasonable (and that's what I used in my imports - both MetallicGloss or SpecGloss matches it).

View attachment 15739
 
Thanks for your report!

I wondered about this myself, but I had found examples ... was it in HM, SBPR... I dont know for sure.

So to round this up, we would need to persist the changed choices for reuse in later sessions? And a button to restore the old defaults?
 
Of course it would be nice to let SB3UGS to remember the user setting and having a button to restore default setting is nice too.
But without them the current feature is good enough for many tasks.
 
SB3UGS_v1.6.6 has been fixed to retain morph clip names when they include an underscore '_'.

This again breaks compatibility to older FBX export files where morph clip names and morph keyframe names were appended, separated with an underscore '_'. Such names were generated with Sb3UGS v1.5.0 up to but not including v1.5.28. But changes for morphs continued, especially for Bender (Flat In-Between Blend-Shape options).

Download:
1fichier
ge.tt folder with binaries & sources - please let me know if there are inconveniences on ge.tt
data.hu - testing new host. Please let me know any inconveniences
DL_from_Da0ea4.jpg

Sources:
1fichier
data.hu - testing new host. Please let me know any inconveniences
 
Last edited:
@enimaroah
I just noticed shader keywords play an important part. For example, in standard shader, the keyword "_METALLICGLOSSMAP" is a switch from flat metallic and glossiness value to a metallicgloss map, I tried attaching a metallicgloss map in a material without this keyword, the map is not used. Similar keywords are "_PARALLAXMAP" "_EMISSION". It seems that I can't change the keywords in the SB3U, but I can find materials with all these "_METALLICGLOSSMAP" "_NORMALMAP" "_PARALLAXMAP" keywords enabled, and copy to my mod. Now my problem is I can't find a material have both "_PARALLAXMAP" and "_EMISSION" keywords enabled.
 
The problem for Sb3UGS is that these keywords cant be verified. Therefore, the keywords were shown as information only. Sure, I can let you add arbitrary strings there. And when adding strings is allowed then one should be able to delete them as well.

Do you have any clue if the order of those keywords is of importance?
 
Sb3UGS v1.6.7 allows to add and remove Shader Keywords in the Material editor. - Thanks to plasticmind

[The tooltip for ColorSpace in the Texture editor is also fixed.]

Known issue: Shader Keywords are deleted with a wrong index - fixing

Download
Dont use: 1fichier

Sources:
Dont use: 1fichier

Fixed above issue in v1.6.8:

Download:
1fichier, megafileupload

Sources:
1fichier, megafileupload
 
Last edited:
@Enimaroah

Can you please use MediaFire or Mega? I unable to download v1.6.8 Thanks.
 
@enimaroah In Honey Select are there shaders parameters and/or properties that are not show by SB3UGS? I have been trying to resolve a shader issue in a mod but I get different results depending which game file I use as a source to get what should be the exact same shader.

Thanks a lot.
 
Shader parsing isn't very robust or flexible.
d5db6edd3a837fd25dab9604eff23c638bb9c7c3.jpg
So it possible that you dont see all attributes if you edited the shader manually and made other line breaks, etc.
 
I've had some issues with importing rigged meshes the past two days. SB3UG just freezes up for a while and then crashes.
Not sure why it's being an issue now, since it haven't been an issue before (although, it has been a while since I imported any rigged meshes).
The log doesn't seem to say anything that relates to the crashing, so I have had a hard time figuring this one out on my own.
(...)
opensDAE0 = WorkspaceFbx("E:\illusion\HS\abdata\studioneo\HHIK_01\p_neo_hhik_00\meshes0.dae", "opensDAE0")
importFbx0 = ImportFbx(path="E:\illusion\HS\abdata\studioneo\HHIK_01\p_neo_hhik_00\meshes0.dae", negateQuaternionFlips=True, forceTypeSampled=True)
(here's the crash)

I'm running SB3UG 1.6.4 for the time being. Any particular issues with this version that I'm not aware of?
 
I imported all old DAE files I found, including one hallway for SBPR dated April 2016 from you without problem. Then I made a fresh export with many skinned meshes (front hair) and imported it without a problem.

So I would guess that the error is related to your file or dependent files (namely textures).
 
  • Like
Reactions: TheShadow

Users who are viewing this thread