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

Re: SB3Utility (GUI + Script)

SB3UGS_v1.2.15

  • Fixed saving external asset references with PathID=0. Added a warning for setting an uncommitted resource.
  • Added update of AnimatorEditor when using "Refresh". This also updates rendered meshes to show material changes.
  • Fixed index error in Animation editor when an unmatching Animator was selected.
  • Enabled copy to clipboard in editor for TextAssets and textual MonoBehaviours
  • Removed scaling from image previews: file and Texture editor
  • Fixed index error in TextAsset and textual MonoBehaviour editor when clicking "Last Value" in the last column
  • Added Texture and Material cache


Download:
sendspace, megafileupload
SHA256: 1D20A408ABD693CD6925FC12130EA6F5A1FCDE6DE67123E4D0 8A9A7A0D491A02

Source:
megafileupload, sendspace
 
Re: SB3Utility (GUI + Script)

SB3UGS_v1.2.17

  • Added support for AudioMixer, AudioMixerGroup, AudioMixerSnapshot assets
  • Changed "Remove" in Frame editor to remove selected asset, and no longer to produce orphans
  • Changed selecting a non-Transform in the Object Tree loads the parent Transform in the Frame editor
  • Changed/completed AudioClip editor

  • Fixed crash when opening Animators with MonoBehaviours using type UInt16, fixed alignment
  • Fixed crash in Object Tree when double clicked with no selected node
  • Changed script precision for float(double) arguments,
    immunity against precision-loss for Transform and Bone matrices

Download:
sendspace, megafileupload
SHA256: 00597F5F4749E595DD5CC9BF6F918BD19076D7EF7B236373FBD6C393EF3B570B

Sources:
sendspace, megafileupload
 
  • Like
Reactions: Inquisitor
Re: SB3Utility (GUI + Script)

The mesh external material skinning preview within SB3UGS is broken with Uncompressed RGB24 DDS w/ mipmaps textures. The textures end up flipped on the mesh.
 
Re: SB3Utility (GUI + Script)

The preview in the Texture editor, in the unity file and from the Images were right. As a rule of thumb, when a DDS texture is shown correctly when it is selected in the Images then you want to Add / Replace it with "FlipY" set, regardless of pixelformat or mipmaps.

SB3UGS_v1.2.18
  • Fixed when an external texture was removed the texture slots of materials had not been cleared
  • Fixed replacing and deleting textures didn't update the texture cache and renderer
  • Fixed RGB24 with mipmaps was shown flipped in the renderer - thanks to Cyberbeing

Download:
sendspace, megafileupload
SHA256: 06C94F19906EB5B86C36F8E6F23C6FFF2C4061FB2A4D57F9F2 F8DB992085AF88

Sources:
megafileupload, sendspace
 
  • Like
Reactions: plasticmind
Re: SB3Utility (GUI + Script)

As I said on HF, unfortunately no. I have no VR equipment and am not inclined to buy one. If I find a way to test validity of files then I might.
 
Re: SB3Utility (GUI + Script) - Glossary & Tutorials

hi ,Thank you for replying on HF ,enimaroah
sorry i have problem with accessing hongfire, so i post here ,please help
When running a script, and I would recommend to use SB3UtilityScript.exe instead of the gui version, there I could make a function which lets you export all TextAsset assets with a filter, like this:
unityEditor.ExportTextAssets(pattern="*", path="destination path of your liking")

But what then? The edited files will need to be imported and replaced right?
unityEditor.ReplaceTextAssets(pattern="*", path="source path of your liking")
i knew we can sort by type with few clicks,but i want to find a way that export/import textasset automatically for hundreds unity3d file (instead of hundreds click )

I create a .cmd file and here is its content :
Code:
start "" "E:\Games\SBPR\mods\tools\SB3UGS\SB3UtilityScript.exe" "E:\Games\SBPR\mods\tools\SB3UGS\SCRIPT EXPORT.txt"

Here is the script (in SCRIPT EXPORT.txt)
Code:
unityEditor.ExportTextAssets(pattern="*", path="E:\Games\SBPR\mods\tools\SB3UGS")

When i run the above script, the cmd window run about a second then disappeared,and i open the path "E:\Games\SBPR\mods\tools\SB3UGS"
but there are nothing there
when i run the script with SB3UtilityGUI (in the script window choose file=>open > browse to "SCRIPT EXPORT.txt") then script => run
it does not work, here is the log content in SB3UtilityGUI
Settings are saved at E:\GAMES\SBPR\mods\tools\SB3UGS\SB3UtilityGUI.exe.config
Failed to load plugin E:\GAMES\SBPR\mods\tools\SB3UGS\plugins\AiDroidPlugin.dll
Unable to load one or more of the requested types. Retrieve the LoaderExceptions property for more information.
Failed to load plugin E:\GAMES\SBPR\mods\tools\SB3UGS\plugins\ODFPlugin.dll
Unable to load one or more of the requested types. Retrieve the LoaderExceptions property for more information.
Autosaving script to E:\GAMES\SBPR\mods\tools\SB3UGS\SB3UtilityGUI.autosavescript.txt
Couldn't find plugin for ExportTextAssets()
Couldn't find plugin for ExportTextAssets()
Unable to cast object of type 'SB3Utility.Command' to type 'SB3Utility.Literal'.
Couldn't find plugin for ExportTextAssets()

Ii don't understand where can i put the path to the unity3d files that i want to export
i thought it would be something like this
Code:
unityEditor.ExportTextAssets(unity3dpath ="<path of unity3d file>",pattern="<filename of textasset filter>" path="<path i want to export>"


sorry for my limited knowledge and thank you very much
 
Last edited:
Re: SB3Utility (GUI + Script)

Please dont post into the tutorials unless it is one. Guess I will relabel this thread to make clear that support can be found here.

I wrote in conditional and it were suggestions I could make. First I wanted to understand your goal before implementing functions you wouldn't use.

So for the exporting part it seems that you would want the function as suggested. What about the import/replacing part? Do you need mass importing/replacing as well or is that done one file by one file?
 
Re: SB3Utility (GUI + Script)

Please dont post into the tutorials unless it is one. Guess I will relabel this thread to make clear that support can be found here.

I wrote in conditional and it were suggestions I could make. First I wanted to understand your goal before implementing functions you wouldn't use.

So for the exporting part it seems that you would want the function as suggested. What about the import/replacing part? Do you need mass importing/replacing as well or is that done one file by one file?
Hi, first i'm sorry for posted in wrong place
i see , i thought that feature is already available , i understand now

about mass importing and replacing,it would be great ,too (if you please)
(the automatically export is more important with me)
it maybe not needed but or avoiding misunderstood ,i still want to write more about mass replacing ,here is the form
Code:
unityEditor.ImportTextAssets("<path of unity3d file>","<pathname of textasset>)
(it replaces the textasset that has the same name in unity3d)

it would be much extremely useful
thank you for the support ,i really appreciate it
Thank you very much

P/S : i think you already knew but there are some unity3d mods of Playclub ,when i open that mod in sb3ug, there are two textassets that have the same name , i 'm not sure if it would cause problem in mass importing/exporting
 
Last edited:
Re: & [Support] SB3Utility (GUI + Script)

A good hint! I will add the pathID to the filename, e.g. cf_f_shoes_01-1186461735.TextAsset. If another has the same name then it has another pathID and you will have both of them.

The import will consider the pathID too, although I am not sure how the game addresses this collision.
 
Re: & [Support] SB3Utility (GUI + Script)

SB3UGS_v1.2.19

  • Changed default of Lightmap[Index] when replacing meshes to -1 in Unity5 files
  • Added Unity3dEditor scripting functions ExportTextAssets() and ReplaceTextAssets()

Download:
sendspace, megafileupload
SHA256: D946AE26C859DEE088F0A061FD28D26ACDA9B7EC61BD7AA3B09FC040B36A6CBD

Sources:
sendspace, megafileupload


Exporting TextAssets of one unity file with a script; duplicate names are supported

Example CharaCustomList_01.unity3d from SBPR:
Code:
LoadPlugin(PluginDirectory+"UnityPlugin.dll")
unityParser = OpenUnity3d("CharaCustomList_01.unity3d")
unityEditor = Unity3dEditor(parser=unityParser)
unityEditor.ExportTextAssets(pattern="_s", path="01_exportdir")
This exports only TextAssets with names that include "_s", like cf_f_shoes_01. cf_f_gloves_01 is not exported. The pattern must be formulated as regular expression.


Replacing TextAssets of one unity file; duplicate names are supported

Example like above but reversed:
Code:
LoadPlugin(PluginDirectory+"UnityPlugin.dll")
unityParser = OpenUnity3d("CharaCustomList_01.unity3d")
unityEditor = Unity3dEditor(parser=unityParser)
unityEditor.ReplaceTextAssets(pattern="_s", path="01_exportdir")
unityEditor.SaveUnity3d(keepBackup=True, backupExtension=".unit-3d", background=False, pathIDsMode=-1)

Both scripts need to be stored in files. And these files need to be placed in {SBPR}\abdata\List\CharaCustom. This way you can use relative paths in scripts! If you store your script elsewhere you have to use absolute paths for each folder and file.
 
Re: & [Support] SB3Utility (GUI + Script)

Hi ,I just tested the export function ,it works like a charm
it saves my time , thank you so much!
There is a small issue with case sensitive of "filter pattern"

Issue :
With playclub mods ,there are several unused textasset which we don't want to export
we want to export only the textasset that has the same name with the unity3d
so the filter pattern should be set to the same name with the unity3d
For example, with Daj_shoes_a001.unity3d
i set
Code:
pattern="Daj_shoes_a001"
but the script would not export this textasset because
the name of the "real" textasset (inside unity3d) is "daj_shoes_a001_Data"
(not "Daj_shoes_a001" ) ("d" is lower case)

Suggestion :
Please make "filter pattern" become case insensitive ,or have an option to choice if it is case sensitive or not
Thanks alot !
 
Last edited:
Re: & [Support] SB3Utility (GUI + Script)

While it would be easiest to solve this problem by adapting the pattern, I see that it is not so easy using the command prompt. You should have a look at powershell. While the syntax is completely different, it is much more flexible than the old command prompt.

SB3UGS_v1.2.20

  • Changed Unity3dEditor scripting functions ExportTextAssets() and ReplaceTextAssets() to be case insensitive

Download:
sendspace, megafileupload

Sources:
megafileupload, sendspace
 
Re: & [Support] SB3Utility (GUI + Script)

Thank you so much, i really appreciate it,now it works flawlessly
Thank you for the powershell suggestion ,too!
 
Hi ,i have some questions , please help
1. In the previous version of SB3UG ,when we export texture ,then open in Photoshop, we see that the exported texture is flipped vertically (in compare with preview in SB3UG)
in current version of SB3UG, the preview texture in SB3UG and the exported texture is the same
Please correct me if i'm wrong : it is not needed to flip vertical texture in current version ,we just export the texture ,edit it and import back

2. Sorry if this question is not related to SB3UG (because it's related to the previous question ,so i think it's better to ask here)
what is the correct settings for editing texture (of playclub and SBPR mods)? (for specific case : the diffuse,normal ,specular textures) using Photoshop DDS plugin
-Importing : should i check "load mipmap" ?
(if i choose "load mipmap" there are many small clone of textures and it's very hard to edit)
-Exporting : should i check "generate mipmap" ?

3. i remember in your sign on HF forum, there are links to your tutorial about exporting FBX and importing options FBX in SB3UG and others tutorial of SB3UG
but now i don't see it anymore , if you don't mind please re-add link to those tutorial
Thank you
 
Hello navmesh,

To 1)
Every texture which has mimmaps or is in DXT1 or DXT5 format is exported as DDS. Other formats dont include mipmaps. But, DDS format stores rows in flipped Y order. So either Sb3UGS or an external tool need to flip Y. If Sb3UGS flips then the result loses quality (for compressed textures)! If you dont care for this loss then check "Flip Y". For original quality of the asset in the unity files export with unchecked "FlipY", but this means that the result is flipped. The same for import/replacement, uncheck "FlipY" for your provided quality. This also means that you have to provide the texture flipped! If you provide a texture in normal orientation then Sb3UGS must flip it and you will have less quality in the game's asset.

To 2)
Mipmaps are down scaled versions of the original texture. The argument is, if you see a mesh in the far distance in the scene then why waste so much computation power for a high detailed texture? For such meshes mipmaps are fine. Therefore, you can see many body textures without mipmaps. Eroge are not famous for crowded public scenes :) Instead the players look at the body in close distance. So why waste disk space and time for transmission to the gpu for mipmaps?

To 3)
I posted FBX import/export parameters for an outdated version of Blender. They are of no use now. But I think Belgar17 posted them for a newer version of Blender and I put that link in the FP of the thread. Not sure if it is in the Glossary also.
 
Could you add basic support for importing/exporting R16G16B16A16_FLOAT (RGBAHalf) & R32G32B32A32_FLOAT (RGBAFloat) Texture2D from BMP?
 
That could take a while because Gimp doesn't support them natively and I have to check if any plugin is available.

I haven't seen such in any game. Where are those formats used?
 
Thank you very much Enimaroah
about 1, i also have a question about the correct way to export and replace texture
1. what is the correct way to export texture correctly ?
I try exporting texture from cf_t_face_00_01.unity3d (face of play club )
if i use img tab=> asset => export => the size of dds file is 21 MB (the first way) (i guess it's not the correct way,or it's a bug ?)
double click on texture on img tab => an "materials and textures" panel open, choose export => dds size is 2 mb (it seems fine) (the 2nd way)
so i guess the correct way to export is the 2nd way (double click to open in current animator then export) ,please correct me if i'm wrong

2. the "add image","replace" buttons in "materials and textures" panel does not work with me

i tried double clicking on texture on img tab to open animator panel
There are "add image","replace" buttons in animator panel ,both of them not work (nothing happens when i click them)
here is the content in the log panel when i use those buttons :
"Add Image" => log panel says : "An image hasn't been selected"
"Replace" -> "Exception has been thrown by the target of an invocation.
Object reference not set to an instance of an object."

3. how to import/replace texture correctly ? especially with unity3d that contains only texture (not contain animators)

I read your post http://www.hongfire.com/forum/forum...-club-modding-tutorials?p=4573161#post4573161
but i'm not sure i understand it clearly ( because "Add Image" and "Replace" buttons not work as i said in (2) ,so i can't make a test
i try to explain what i understand ,please correct it
There are two ways

A-Bring animator or use existing Animator
1. for texture contains animator :
-in animator tab, click on the texture ,
-in "materials and textures" panel , select the texture (in texture tab (or in object tree) )
-use "replace" button , a new window open => browse to the texture and replace ,check "flip Y" if needed (I'm not sure about it ,because the button not work with me)

2. If texture not contain animator ,
-double click to open "materials and textures" panel
- do the same as (1)
B-For unity3d that contains no animator ,we can use Copy and Paste on the texture (as you said on your post http://www.hongfire.com/forum/forum...-club-modding-tutorials?p=4573161#post4573161)

is there any difference (affects game performance, texture quality) between "A" and "B" ways ,especially with unity3d that not contain animators
Thanks in advance !
 
Last edited:
That could take a while because Gimp doesn't support them natively and I have to check if any plugin is available.

I haven't seen such in any game. Where are those formats used?

Microsoft's DirectX SDK and by extension Direct3D natively supports them, and there is also an enhanced version of their texture tools on Github under DirectXTex. In terms of open-source, maybe ImageMagick?

As for Gimp, it looks like 2.9.x builds added floating-point support, but import/export formats are limited.

Unity 5.5 will be adding support for useful compressed formats like BC6H & BC7, so it may be worth looking into integrating Microsoft's tools.

As for which Unity games use actual physical HDR textures in Unity3D files, I'm not sure since I don't have many Unity games. Technically SB3UGS already seems to support importing these formats as Bitmap, but it writes the wrong Texture2D Format header. If you could just fix that for import-only support, that would probably be good enough. I'm mainly interested in it for import and texture replacement experimentation.

Also, could you fix support for Unity3D files saved by Unity Asset Bundle Extractor? I sometimes use that tool to complement some of the format support weaknesses of SB3UGS. The error SB3UGS throws there about unknown header is similar to the one it throws about VR Kanojo. I don't own a VR headset, but it seems possible if you fix one you may very well fix the other.
 
Thanks for the info about texture support and tools. It will take a while still.

The nonsense in the unity file header is more than annoying as it doesn't hinder extracting the contents. It just prevents creating valid files :/ Sorry, but I am not willing to disassemble or reverse engineer the UABE to find out which headers this tool creates. If anyone would want to invest time to find out, I would recommend to reverse engineer UnityEditor instead.

VR Kanojo is a different matter. Illusion used chunk compressed asset bundles. In my experiments yesterday I couldn't find out where exactly the lz4 chunks are. Although this title doesn't have high priority for me this compression method might need to be supported in future games.
 
That's unfortunate about UABE.

If SB3UGS could expand support for editing and/or dumping file types to editable text files for types like Camera, Light, Transform, GameObject, LightSettings, LightmapSettings, RenderSettings, GraphicsSettings, QualitySettings, PlayerSettings, BuildSettings, PhysicsManager, Physics2DSetttings, ParticleSystemsRenderer, ParticleSystems, and other similar settings files that would be useful.

Having TextAssets extension renamed to *.yaml on export, and being able to see the directory path which Unity games with a mainData file would autoload yaml TextAssets (and other files types?) from as overrides, would also be useful. Illusion games don't do this, but other Unity games do.
 
Disunity (although outdated) and UABE have asset databases where they keep track of all versions of assets. Disunity already has such a dump function.

Sb3UGS doesn't have such a database and it isn't my intention to support all Unity versions. This implies no support for non-Illusion games as a consequence.

A few assets (not the ones you mentioned) can be dumped with Sb3UGS, mostly for debugging purposes. If someone would want to extend this for other types - even variable types like MonoBehaviours - they should have a look into FormUnity3d, UnityEditor and TypeParser classes.

If you want to have a dump of an asset, the best way I see would be to use UnityEditor. Load the asset bundle with a custom MonoBehaviour and write - kind of export - the values you want to have. Knowledge of C# or JS is needed for this.
 
Thank you very much Enimaroah
about 1, i also have a question about the correct way to export and replace texture
1. what is the correct way to export texture correctly ?
I try exporting texture from cf_t_face_00_01.unity3d (face of play club )
if i use img tab=> asset => export => the size of dds file is 21 MB (the first way) (i guess it's not the correct way,or it's a bug ?)
double click on texture on img tab => an "materials and textures" panel open, choose export => dds size is 2 mb (it seems fine) (the 2nd way)
so i guess the correct way to export is the 2nd way (double click to open in current animator then export) ,please correct me if i'm wrong
Only in the Texture editor (in combination with the Images files on the left side) you have full control over the "Flip Y" option. At all other places, e.g. in the File / Replace, Sb3UGS flips and you have no choice.

I cant verify any PC asset/file since I dont have the game. But an uncompressed texture can be 21MB, why not. Width*Height*ColorDepth/8bitsPerByte + a few header bytes depending on filetype.
Edit:
Forgot mipmaps. Those downscaled versions would have to be added as well
Width/2*Height/2*ColorDepth/8bitsPerByte +
Width/4*Height/4*ColorDepth/8bitsPerByte, and so one until a minimum for width or height is reached. I dont know exactly.

2. the "add image","replace" buttons in "materials and textures" panel does not work with me

i tried double clicking on texture on img tab to open animator panel
There are "add image","replace" buttons in animator panel ,both of them not work (nothing happens when i click them)
here is the content in the log panel when i use those buttons :
"Add Image" => log panel says : "An image hasn't been selected"
An image would have to be selected in the Image files. This opens if you drop an image into Sb3UGS, on the left hand side.
"Replace" -> "Exception has been thrown by the target of an invocation.
Object reference not set to an instance of an object."
May be the selected image has an unsupported format. I would need more info, may be the image itself.

3. how to import/replace texture correctly ? especially with unity3d that contains only texture (not contain animators)

I read your post http://www.hongfire.com/forum/forum...-club-modding-tutorials?p=4573161#post4573161
but i'm not sure i understand it clearly ( because "Add Image" and "Replace" buttons not work as i said in (2) ,so i can't make a test
i try to explain what i understand ,please correct it
There are two ways

A-Bring animator or use existing Animator
1. for texture contains animator :
-in animator tab, click on the texture ,
-in "materials and textures" panel , select the texture (in texture tab (or in object tree) )
-use "replace" button , a new window open => browse to the texture and replace ,check "flip Y" if needed (I'm not sure about it ,because the button not work with me)
Note its tooltip! Only DDS textures need this.

2. If [strike]texture[/strike]file not contain animator ,
-double click to open "materials and textures" panel
- do the same as (1)
B-For unity3d that contains no animator ,we can use Copy and Paste on the texture (as you said on your post http://www.hongfire.com/forum/forum...-club-modding-tutorials?p=4573161#post4573161)
"Copy and Paste" always means "Mark for Copying" / "Paste All Marked" in the Assets menu. In the source file you select one or more textures in the Img tab, click "Mark for Copying", then switch to the destination file and "Paste All Marked".

is there any difference (affects game performance, texture quality) between "A" and "B" ways ,especially with unity3d that not contain animators
Thanks in advance !
Even though you have no choice to FlipY or not, "Mark for Copying" / "Paste All Marked" does retain full quality and retains original orientation.

There is no difference if an Animator is present in the file or not. But if an Animator is present then you cant open a "Material & Texture" Animator, you have to use the one present in the file.
 
Last edited:

Users who are viewing this thread