Announcement

Collapse
No announcement yet.

SB3Utility Releases and Discussion

Collapse
This is a sticky topic.
X
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • [Tools] SB3Utility Releases and Discussion

    Post anything related to SB3Utility, such as how to use it, requests, bugs, etc.
    Please let me know if I'm missing any links or if you want any links added through PM.
    You might also want to check out Illusion Wizzard & Morpher by darkhound for modding.

    I recommend using the Latest SB3Utility(GUI+Script) Version by enimaroah since I haven't updated SB3Utility in a long while.

    Pre-scripting Versions
    Spoiler

    SB3Utility Source Code: [MF Folder]

    Custom Versions
    SB3Utility_v0.9.18R10 by enimaroah
    SB3UtilityCustom v9.9 by bbas2011
    SB3UtilityAA by darkhound
    SB3Utility with 3D Studio Max + Okino Polytrans DirectX Import/Export by J1327 [Broken link]
    SB3Utility with Skeletal Animation Editing by profundis

    Supports: Battle Raper 2 (partially), Oppai Slider 2, RapeLay, Sexy Beach 3, SchoolMate (Figure/Trial/Retail), Artificial Girl 3 (Welcome/Retail), Digital Girl, Hako (Trial/Retail), SchoolMate Sweets, Esk Mate, @Home Mate (Figure/Trial/Retail), Yuusha (Trial/Retail), Real Girlfriend, SchoolMate 2 (Trial/Retail), Sexy Beach Zero, Characolle AliceSoft/BaseSon/Key (Benchmark/Retail), Artificial Academy (Trial/Retail except jch*.pp)
    3-D Formats: Metasequoia (text import/export, no normals, no skeleton), DirectX (binary & text import / text export), Collada (text import/export), FBX [recommended] (binary & text import / binary export), Ogre (binary export)

    Requires
    - Microsoft Visual C++ 2008 Redistributable Package (different from the editor)
    - .NET Framework 3.5 SP1 (different from the Compact Framework)
    - Latest DirectX 9.0c

    Changelog
    (v0.9.18) [SB3UtilityGlobals modified]
    - Reverted decryption algorithm to v0.9.15. Removed support for the compressed .pp format (jch*.pp)
    (v0.9.17) [SB3UtilityGlobals modified]
    - Fixed opening various .pp formats
    (v0.9.16) [SB3UtilityGlobals modified]
    - Added support for Best Collection and Artificial Academy
    - Fixed editing frame names again
    - Renderer will no longer throw an exception if a bone is missing
    Spoiler
    (v0.9.15)
    - Fixed morph export for .mqo
    - Fixed editing the name of frames that don't have meshes
    (v0.9.14)
    - Fixed importing Collada with matrix transforms and unused vertices
    (v0.9.13) [SB3UtilityGlobals modified]
    - Fixed DBNull errors when removing bones in the Mesh Object Editor
    - Importing Collada with Z-up will now be automatically converted to Y-up
    - Fixed importing Collada from Blender
    - The Editor now shows a selected image if no .xx tab is open
    - Importing .mqo now defaults to the CopyNear method for bones
    - Fixed replacing mesh objects when using the Merge option for a Mesh and added it as an option for Mesh Objects in the Workspace
    (v0.9.12) [SB3UtilityGlobals modified]
    - Fixed showing the number of mesh objects
    - Fixed error checking for bone operations
    (v0.9.11) [SB3UtilityGlobals modified]
    - Changed "Characolle Bench" to "Characolle AliceSoft" for .pp formats
    - Added support for Characolle BaseSon & Key versions and AA Trial (thanks to bbas2011)
    - Added bone operations (by pidey)
    (v0.9.10) [SB3UtilityGlobals modified]
    - Changed "Characolle Bench" to just "Characolle" for .pp formats
    - Collada importer can now parse empty visual scenes
    - Added support for .dxf, .3ds, and .obj
    (v0.9.9)
    - Fixed animations in the Renderer
    - The Object Tree tab in .xa Editors is now hidden since it isn't used
    (v0.9.8)
    - Fixed "Add Animations From XA Tab" not adding animations to the Workspace
    - Added ability to remove Animation Tracks in the Workspace
    - Removed resetting the Diffuse lighting value for the Renderer when opening a .xx file. Also, the value is now saved
    - Fixed the renderer showing exploded meshes for Rapelay and some others
    (v0.9.7) [SB3UtilityGlobals modified]
    - Fixed loading .xx textures in the renderer that aren't .bmp or .tga (thanks to varicham)
    - Replacing a mesh that has a base mesh no longer shows a warning about adjusting unknown data
    - Added a culling option for the renderer. Checked will render one side, and unchecked will render both sides of a face
    - Fixed the crashing when exporting morphs if a child node is selected
    - Fixed Hierarchy conversions between formats (< 4) and (>= 4) in the Workspace
    - Fixed the renderer to use directional lighting
    - Added code for an .xm parser, but it's not used
    (v0.9.6) [SB3UtilityGlobals modified]
    - Added support for SBZ and Characolle Bench (thanks to darkhound)
    - Fixed when the comma is used as the decimal separator in Frame and Bone tabs
    (v0.9.5)
    - Changed Matrix to Translate/Rotate/Scale in Frame and Bone tabs
    (v0.9.4)
    - Fixed memory problem when exporting large animations using DirectX format
    (v0.9.3)
    - Fixed .xx format conversion and merging bone lists when replacing in the Workspace
    (v0.9.2)
    - Added FBX import/export for morphs
    - FBX import will now skip empty animations
    (v0.9.1)
    - Added Add & Remove in the Bone tab
    - Added options for bones when replacing in the Workspace
    - FBX export will now make locators for nodes with no children and groups for nodes with children instead of making them all joints
    - Fixed FBX export for skins
    - Added FBX import
    - Added FBX support for multiple textures in a material. They will be connected as diffuse/ambient/emissive/specular textures even though they may actually be used for different things like normal/bump mapping or animation
    (v0.9.0)
    - Added export for FBX
    (v0.8.27)
    - Fixed saving .sb3uws for .xx Format Type 4-5 (RGF/SM2)
    - Changed the default "Merge" option for Meshes to "No" in the Workspace
    - Changed the default "Copy Hex" option for Hierarchies to "Yes" in the Workspace
    (v0.8.26)
    - Fixed target build to x86 (thanks to ScumSuckingPig). This was only a problem on 64-bit systems
    (v0.8.25)
    - Added support for SM2 Retail (thanks to ScumSuckingPig)
    (v0.8.24)
    - Added support for SM2 Trial (thanks to ScumSuckingPig)
    (v0.8.23)
    - Added .pp format auto-detection for .xa subfiles
    - Fixed saving .sb3uws for RGF
    - Application starts at the default location if offscreen
    (v0.8.22)
    - Fixed renderer aspect ratio for widescreen and dual monitors
    (v0.8.21)
    - Fixed replacing meshes for RGF when it has more vertices than the original
    (v0.8.20)
    - Added support for RGF (thanks to ScumSuckingPig & J1327)
    - Updated MOGRE from 1.4.8 to 1.6.5 beta r49
    (v0.8.19)
    - Added support for Yuusha Retail (thanks to ScumSuckingPig)
    (v0.8.18)
    - All frames used as bones and their children are now exported as joints for Collada
    - Fixed the positions of skinned meshes for Collada export
    (v0.8.17)
    - Added ability to add selected meshes from the Mesh list of the selected .xx Editor tab to the Workspace. If none in the Mesh list are selected, then all of them will be added
    - For replacing mesh normals, there are now options of replacing them (Replace) or keeping the normals of the base mesh object according to vertex order (CopyOrder) or the nearest vertex (CopyNear)
    - Added Morph Lists to "Align Vertices" and "Copy Near Vertex Normals" for the Workspace
    - "Calculate Normals" controls have been moved to a dialog box for the Workspace
    - "Align Vertices" in the Workspace now works similar to "Copy Near Vertex Normals"
    - Added the option to copy normals from the nearest vertex (no threshold) in the Workspace by using a negative threshold in "Copy Near Vertex Normals"
    - Fixed keeping base mesh object normals when replacing meshes
    (v0.8.16)
    - Fixed replacing materials for BR2. Some material RGBA values might still crash BR2, so it's not recommended to do so for that game
    - Fixed showing the Editor's bottom panel for the first opened .xx/.xa file
    - When replacing materials, used texture hex data is now copied if the texture name is the same
    (v0.8.15)
    - Added support for the BR2 character addon
    (v0.8.14)
    - Fixed mesh distortion by some bones for the Renderer
    - Fixed the Renderer when there are animation tracks with different numbers of keyframes
    (v0.8.13)
    - Fixed copying the mesh object unknown field when replacing a base mesh object
    - Fixed texture paths for Collada import
    - Added a "Merge" option for when replacing hierarchies in the Workspace
    - Re-added option to copy the Frame unknown hex for Hierarchies when replacing in the Workspace. The default is on, except for when dragging from the .xx Object Tree
    (v0.8.12)
    - Added partial support for BR2. Read this post for more info
    - When replacing hierarchies from the Workspace, it will always try to copy unknown fields instead of it being optional
    - Fixed keeping backups of base meshes when the hierarchy has been previously replaced. The feature was introduced in v0.8.7
    - The priority of the last auto-detected .pp format upon opening is bumped to the top
    (v0.8.11)
    - Fixed morphs for target meshes with multiple mesh objects
    - Fixed Collada import
    (v0.8.10)
    - When importing a DirectX .x file, unnamed materials with a texture will have the texture name followed by the material index
    - Unskinned meshes now move with animations in the Renderer
    - Added an optional mesh material offset for Hierarchies in the Workspace
    - Improved .pp format auto-detection when the .pp file contains .xx or image files
    - Fixed the animations/morphs already existing error
    (v0.8.9)
    - Fixed restoring "Selected Tab" / "All Open Tabs" settings in the Workspace
    - Fixed saving "Keep Backups" setting
    (v0.8.8)
    - Added preview of morphs to the Renderer. You can preview one morph keyframe per morph clip. Morphed normals aren't shown in the Renderer
    (v0.8.7)
    - When replacing, mesh unknown fields are now copied when the hierarchy with the base mesh has been previously replaced with a hierarchy without the base mesh within the same Workspace
    - Fixed parsing .xa files with multiple morphs of the same name
    (v0.8.6)
    - Fixed Collada export for unskinned meshes
    - Fixed Collada export of unused bones as joints for skinned meshes
    - Added normal calculation with no duplicate vertex detection by setting a negative threshold in the Workspace
    - Added ability to copy normals from close vertices in the Workspace. Read this post for more info
    - Added support for Esk Mate, AHM Figure, and AHM Trial (thanks to ScumSuckingPig)
    (v0.8.5)
    - Fixed removing all previous mesh objects when replacing meshes if not merging
    - Added option for replacing normals in the Workspace for meshes
    - Added export and import for simple morph editing. Read this post for more info
    (v0.8.4)
    - Added PNG, JPG, and DDS texture support
    - Removed check for valid names
    - Fixed incorrect rotations in matrix decomposition
    - Fixed adjusting unknown data for non-zero Mesh Types
    - Fixed displaying 0 as the last weight for unskinned meshes in the Mesh Object Editor. Actual bytes weren't affected
    - Added editor for unknown Hex fields in .xx files
    (v0.8.3)
    - Fixed using Yuusha MIK Trial in the Workspace
    - Fixed using meshes with different .xx formats in the Workspace
    - Fixed adding more skeletal animation clips
    - Fixed adjusting mesh material indices when removing materials
    - Added editor for mesh objects
    (v0.8.2)
    - Fixed mesh replacing
    - Added option to display bones in the Renderer
    (v0.8.1)
    - Fixed auto-detecting .pp format
    (v0.8.0)
    - Added support for SM Sweets, AHM Retail, and Yuusha MIK Trial (thanks to ScumSuckingPig and lauris71)
    - Changed some underlying code structures
    - Changed Collada format to Autodesk FBX v2010.0.2
    - Added support for SJIS filenames in .pp files
    Known Issues
    - Controls aren't locked or synchronized when performing tasks. Don't perform simultaneous tasks like saving again while it's already saving
    - May crash under 64-bit systems
    - When importing Collada into Maya/Max with Autodesk FBX, normals are reset. Exported normals in Collada from Maya/Max are retained when importing in SB3U


    Resources
    .xx File Format (partially outdated) by alessi
    .xx File Format (partially outdated) by RawMonk
    .xa File Format (might be partially outdated) by Alamar
    .vci & .vcs File Formats by Alamar
    .tty File Format by Alamar
    Parser for .xm by Alamar
    Parser for .js3krs by Alamar
    SB3 BotuPlay Cameo Mod Tutorial for SB3Utility v0.4 Pre22 by Alamar
    SB3 Body Accessory v6 Mod Tutorial for SB3Utility v0.4b Pre5 by Alamar
    SB3 Kokonoe Rin (SaYaKa Project) Mod Tutorial for SB3Utility v0.7.17 by Alamar
    Modding Club Tutorial Thread
    Various Posts About Transparency compilation by Sinbad
    Modding Digital Girl Rin by mariokart64n
    Utilizing .sfd Files by trogdor0071
    SB3U Vertex Options Explained by darkhound
    Last edited by Inquisitor; 04-19-2014, 06:00 AM. Reason: Add prefix

  • #2
    SB3Utility v0.7.x

    SB3Utility v0.7.21 (bin+src): Mediafire Sendspace
    Read the SB3Utility.readme.txt file for instructions!

    Requirements:
    - Microsoft Visual C++ 2008 Redistributable Package (different from the editor)
    - .NET Framework 3.5 SP1 (different from the Compact Framework)
    - If you're still experiencing crashes, try installing CEGui Mesh Viewer. Please let me know if it works after

    Known Issues:
    - Removing nodes in a Workspace may corrupt it
    - Mesh materials aren't synchronized when removing a material that isn't used
    - The No Merge option for replacing meshes might leave previous mesh objects instead of removing them
    - The preview Renderer and Ogre3D export might not be correct with some meshes.
    Spoiler
    An example is hk104.pp\o_hand_01_00.xx\o02_P_ude and akyryz said this also happens with RapeLay meshes. A programming workaround is to call skeletonPtr.SetBindingPose() after the skeleton is created [in Ogre.cs\ConvertMesh()\line after "meshPtr._notifySkeleton(skeletonPtr)"]. It might not be correct for some other meshes, so it shouldn't be called all the time like for js3_00_02_00.pp\d15_01.xx\a01_O_hadaka_01 with d15_01.xa animations.
    Recent Changes:
    (v0.7.21)
    - Fixed saving the first byte for Hako Retail
    (v0.7.20)
    - Added support for Hako Retail (thanks to ScumSuckingPig for the decryption code)
    - Saves .pp format autodetect rankings
    - Materials that use a non-existant texture will have the texture name set to "(none)"
    (v0.7.19)
    - Added readme.txt with a User Guide
    - Added Collada import
    - Added option to copy the Frame unknown hex for Hierarchies when replacing in a Workspace
    - Imported meshes from DirectX and other 3D formats now have auto-numbered mesh object based positions for replacing
    - Fixed material/texture cross-references
    - Added check/uncheck for all root nodes in a Workspace
    Last edited by Alamar; 07-20-2009, 05:43 AM.

    Comment


    • #3
      SB3Utility v0.6.x

      FBX has been replaced by Collada. The specific Collada implementation is based on ColladaMaya.
      If anyone's interested in taking over this project, let me know!

      SB3Utility (read the version history for details)
      Newest version: SB3Utility_v0.6_Pre21.rar
      Source code: SB3Utility_v0.6_Pre21_src.rar
      Old version w/ FBX export: SB3Utility_v0.6_Pre8.rar
      "Loading multiple .xx files" example extraction result: manami_example.rar

      Collada Issues
      - SB3Utility doesn't support ColladaMax's export yet due to RotationAxisScale and some other problems: exporting with ColladaMax and importing it back into 3ds Max might not work as expected
      - ColladaMaya seems unstable when importing animations
      - Due to a bug in ColladaMaya/Max, names that end with a number aren't unique if the same number has leading zeroes (ex. "name_1" and "name_01"). As a workaround, SB3Utility will add an underscore to all names that end with a number, and it will be removed when importing back into SB3Utility (ex. "name_1" <-> "name_1_")
      - With ColladaMaya 3.05A & Maya 8.5, normals for skinned meshes aren't imported. I don't know if it's different for other versions
      - Each mesh object is expected to be in its own node with only the identity transform (or no transform). That's how ColladaMaya exports them (for an extra pivot transform). As a workaround when importing into SB3Utility, meshes from child nodes with no transform will be merged into their parent node
      - It'll be imported like a DirectX .x file. I'll try and think of a better interface

      Requires
      - .NET v2.0.50727 or later [found in \WINDOWS\Microsoft.NET\Framework\]
      - Managed DirectX v1.0.2902.0 (comes with the latest DirectX) [found in \WINDOWS\Microsoft.NET\DirectX for Managed Code\]
      - The FBX version might require MSVC CRT v8.0.50727.762 (from MSVC++ 2005 SP1 Redistributable) [found in \WINDOWS\WinSxS\]

      Known Issues / To Do List
      - For Digital Girl .pp files, the source format will be detected as "AG3 Retail". Change it to "DG" before selecting the packed files (.xx, .xa, etc)
      - For the renderers, centering the view on the mesh might be wrong
      - If you're getting a 0x800736B1 exception, try installing MSVC++ 2005 SP1 Redistributable
      - If the renderers don't initialize, try installing the latest DirectX. It's possible they still won't work, and there's no known fix yet
      - There is probably a memory leak somewhere

      History
      v0.6 Pre21 - Relaxed name restrictions in .xx for OS2 [bunnygirl]. Fixed "Keep Backups" for the settings file [TheodorSid]
      v0.6 Pre20 - Fixed .mqo face check [carny]
      v0.6 Pre19 - Added Collada workaround for node names that end with a number. For .mqo, automatically skips faces with less than 3 vertices
      Spoiler
      v0.6 Pre18 - Fixed Collada export (again) [Droopy]
      v0.6 Pre17 - Fixed Collada export/import. Added "FrameMethod" parameter for loading meshes in the Skeletal tab (currently only works for Collada)
      v0.6 Pre16 - Fixed duplicate node id and not-a-number for Collada
      v0.6 Pre15 - Improved editing Animation Sequences dialog
      v0.6 Pre14 - Fixed editing Animation Sequences for AG3 [wurlox]
      v0.6 Pre13 - Fixed loading settings file. Added support for Digital Girl
      v0.6 Pre12 - Added option to keep backup .pp files. Fixed Collada export. Added Collada import
      v0.6 Pre11 - Added wireframe overlay options to renderers (show all / only backfaces / none)
      v0.6 Pre10 - Supports AG3 Retail .xa files (demo .xa files are untested). Partially exports to Collada (no materials or textures)
      v0.6 Pre9 - Removed extracting to FBX. Updated for "AG3 Welcome" (differentiates from SM by looking for "js3" prefix in the filename) Special thanks to the modder
      v0.6 Pre8 - Fixed saving .pp files to "SM Trial", "SM Retail", and "AG3 Demo" formats [sosola]
      v0.6 Pre7 - Added loading/merging multiple .xx files in the Skeletal tab. Fixed appending for skeletal animations
      v0.6 Pre6 - Updated to read AG3 Demo .pp files. Fixed mesh centering for the mesh renderer
      v0.6 Pre5 - Fixed 0x800736B1 exception when extracting to .fbx [warior]
      v0.6 Pre4 - Added option to extract to .fbx in the Skeletal tab (no importing yet). Fixed rendering lighting for SB3 if the renderer was initialized before the .pp file was selected
      v0.6 Pre3 - Fixed rendering meshes with multiple materials/textures & adjusted brightness for SM. If "Next" is 0 in the animation sequence, it will repeat the current sequence instead of going to the "Stop" sequence [hiremi]
      v0.6 Pre2 - Added "Ticks Per Second" & "Keyframe Length" to extraction options for skeletal animations (Could help with 3rd-party conversion tools)
      v0.6 Pre1 - Initial pre-release for v0.6 series

      About extracting to FBX/Collada
      - It's extracted to ASCII format (binary w/ embedded will be an option in some later version)
      - Meshes must be selected with the animations (don't need to click the "Load Meshes" button)
      - Only the minimum hierarchy is extracted (frames that contain the meshes and bone frames + all their parent frames)
      - Animations for frames in the hierarchy that weren't extracted will be skipped

      Background Info
      Terminology:
      Frame = frame of mesh hierarchy (name & transformation matrix)
      Keyframe = animation keyframe (has scaling/rotation/translation info for the frame)

      Skeletal animation data from .xa files has 2 sections: a list of sequences and an animation set. The sequences have info on which keyframes to play. There is only 1 animation set (list of keyframes) per .xa file.

      Viewing animations
      As an example for the following directions, I'll be using sb3_0510.pp (from SB3. Yes, I know this is a SM thread ):

      1) Open a .xa file with skeletal animations:
      Open "sb3_0510.pp"
      Select "dt01_01_00_00_00.xa"
      Select the "Skeletal" tab
      2) Load meshes to animate:
      Under "Mesh to Animate", all opened .pp files are listed
      Select "sb3_0510.pp"
      Select "bo01_01_00_00_00.xx"
      Select "o01_P_Body". You can select mutilple items in the list if you want
      Click "Load Meshes"
      3) Select an animation sequence:
      Under "Animation Sequences", select a sequence item
      Press the play button under the preview window

      There is a minor known issue with some animations. It might look like body parts (such as arms) fling wildly around, but it doesn't do this in-game. This is because the AnimationController is rotating them all the way around in the wrong direction when interpolating between keyframes. If you slow down the animation speed, you can see it happening. I can't do anything about it unless I resample the keyframes, which is too much work for this minor problem. An example is on keyframe 198 (sequence idx 13) in sb3_0510.pp\dt01_06_00_00_00.xa with a o01_P_Body mesh.

      Other viewing options
      - If "Load Next Sequence" is checked, it'll load the next sequence once the current one is finished
      - You can change the animation "Speed"

      Loading multiple .xx files
      - If a .xx file is selected (in the list to the left of the "Add" button), clicking on "Add" will add a new command to the text box below
      - If the text box is empty and a .xx file is selected, clicking on "Load Meshes" will first automatically add the command to the text box. If the text box isn't empty, clicking on "Load Meshes" will just load what's in the text box and won't add a new command (even if a .xx file or meshes are selected)
      - If meshes are selected when adding, the command will be appended with the "Meshes" option
      - Description of the command format:
      Code:
      Each of the following parts are separated with "|"
      Path=ppPath\xxFile - [required] For example "Path=C:\illusion\SB3\data\sb3_0510.pp\bo01_01_00_00_00.xx"
      FrameMethod=All or Minimum - [optional] "All" will extract all frames in the hierarchy (but not necessarily all meshes). "Minimum" is the default. It will only extract the required frames (ones referenced by bones and the mesh's parents)
      Meshes=meshA,meshB,meshC - [optional] List of which meshes to load. If not specified, all meshes will be loaded
      Merge=srcFrameName,destFrameName,mergeMethod - [optional] Full description is below. If not specified, it will try to find the first frames with matching names and do an exclusive merge
      
      Full example
      Path=C:\illusion\SB3\data\sb3_0510.pp\bo01_01_00_00_00.xx|Meshes=o01_P_Body
      Path=C:\illusion\SB3\data\sb3_0500.pp\wf01_00_00_00_00.xx|Meshes=o01_P_Kao,o01_P_Me_L,o01_P_Me_R,o01_P_Matuge,o01_P_MatugeU,o01_P_HaU,o01_P_HaS,o01_P_Sita|Merge=o01_N_Kao,o01_J_Head,AddAdjust
      Path=C:\illusion\SB3\data\sb3_0500.pp\wh01_01_00_00_00.xx|Merge=o01_N_Kami,o01_J_Head,AddAdjust
      
      How merging works
      The first loaded .xx file will be the main hierarchy. All following loaded .xx files will be merged into the main one.
      "srcFrameName" is the frame name in the .xx file of the command
      "destFrameName" is the frame name in the main hierarchy
      "mergeMethod" is either "Exclusive", "Add", "AddAdjust", or "Replace":
        Exclusive - Does an exclusive merge and is the default
        Add - Adds "srcFrameName" as a child of "destFrameName"
        AddAdjust - Same thing as "Add" but multiplies the "srcFrameName" matrix by the inverse of the combined (multiplied by each parent) "destFrameName" matrix.
                    This will make sure the "srcFrameName" will be in the same place in the world no matter where it's added to the main hierarchy
        Replace - replaces "destFrameName" with "srcFrameName"
      Extracting animations to a DirectX .x file
      1) Meshes will be loaded according to what's described in the "Loading multiple .xx files" section
      2) Click "Extract"

      Moving animation sequences around
      - Click "Move Up" to move the selected sequences up
      - Click "Move Down" to move the selected sequences down
      - The "Idx" and "Next" columns will automatically be updated

      Editing animation sequences
      - Click "Edit Sequences" and a table dialog will show up
      - Clicking "OK" will save the sequences and close the dialog
      - Clicking "Cancel" or the "X" will close the dialog and discard any changes
      - The "Accept" and "Revert" next to "Temp Changes" are just for working with the current table dialog. You don't have to use them. It's just something extra that comes with a DataTable, so I thought I'd use the feature
      - You can copy/paste (Ctrl+C / Ctrl+V) using the clipboard. It's copied as unicode text, so that means you can use notepad or something else to save stuff
      - "Start" and "End" are floats (decimals), and "Next" is an integer. Bytes and ByteArrays are in hexadecimal. The ones in parentheses have unknown functions. If you figure them out, please let me know

      Cutting keyframes
      - Select the range to cut with "Start" and "End"
      - Click "Cut Keyframes" to remove the keyframes in that range

      Replacing/Appending keyframes from a DirectX .x file
      - Open a DirectX .x file
      - Under "DirectX File Animations", there's a list of what frames are used and how many keyframes are for each. The number of keyframes must be the same for each used frame
      - Click "Replace" to replace all keyframe info. All previous keyframe info will be cleared
      - Using "Append" will append the previous keyframe info. The number of keyframes for each used frame must match. If there is animation data for a frame in the .xa file but not in the DirectX file, the last keyframe in the .xa file will be copied to fill the void. If there is no animation for a frame in the .xa file but there is in the DirectX file, new keyframes will be created to fill the void.
      Last edited by Alamar; 07-20-2009, 05:43 AM.

      Comment


      • #4
        SB3Utility v0.5.x

        SB3Utility v0.5.4 (also reads SchoolMate files) Requires the .NET 2.0 Framework
        PM me bug reports, suggestions, comments, questions, if you want to take over the project , etc!!!
        SB3Utility is a complete rewrite of RLUtility. Special thanks to the original author of RLUtility

        Latest Stable
        SB3Utility v0.5.4 + Managed DirectX Dlls: SB3Utility_v0.5.4.rar
        SB3Utility v0.5.4 without the Dlls: Geocities link
        SB3Utility v0.5.4 source code: Geocities link
        Managed DirectX Dlls: Geocities Link
        You can get previous versions here.

        Working with animations (.xa files) will be disabled for v0.5. They will be fixed in v0.6

        Recent History
        v0.5.4 - Transparency bytes & unknown data for new mesh objects & "Set transparency bytes" options were in SB3 encrypted format instead of being decrypted (for mesh object transparency: "F4 9C FF" should now be "0C 64 01"). Misc GUI improvements (including faster loading of .pp files with a lot of packed files like ~1000)
        v0.5.3 - In the Hex tab, meshes now show instead of its frame (warior). Hex tab shows a short description of the object loaded (usually what's seen in the Object Tree)
        v0.5.2 - Got rid of using position/index in the GUI. Combined Frame/Bone & Texture/Image tab pages. Removed mesh merge function (replaced by "Single File" option and multi-selection). Fixed GUI when replacing textures

        Past History
        Spoiler
        v0.5.1 - Fixed UVs when replacing with .mqo when faces use the same vertex with different UV's again (warior). Texture preview now updates properly when replaced
        v0.5 (Official Release) - Fixed listview events such as loading more than one object tree (warior). Fixed editing problems when cross-references are enabled such as with editing mesh material index (warior)
        v0.5 RC1 (aka Pre25) - Fixed replacing with .mqo when the original mesh had less vertices. Fixed UVs when replacing with .mqo when faces use the same vertex with different UV's (warior). Fixed recreating the duplicate vertex list. Invalid image files can no longer be added to the .pp
        v0.5 Pre24 - Fixed saving .pp files (warior). Fixed updating the Object Tree when replacing meshes using a .mqo file with the "Single File" option. Fixed closing files with the mesh cross-references option off and mesh renderer enabled
        v0.5 Pre23 - Minor GUI fixes for "Hex Apply" & ".x Workspace Replace"
        v0.5 Pre22 - Fixed saving to SB3 format (warior). Reopening files closes them properly before opening again. Readded filename renaming for the xx/xa/img/other lists. Misc GUI fixes. Disabled working with .xa files
        v0.5 Pre21 - Fixed using transforms with .mqo files. Improved how the mesh preview decides to call the "center view" function when adding meshes to the view
        v0.5 Pre20 - Added mesh preview (hold left-click to rotate, hold right-click to move, scroll mouse wheel to zoom). Added option to extract to a single .mqo file. Disabled filename editing for the xx/xa/img/other lists because of buggy events (.NET's fault). Fixed mesh merge. Fixed misc GUI events. Now compiled for x86 target (ScumSuckingPig)
        v0.5 Pre19 - Fixed adding files to the .pp file. Fixed misc GUI crashes
        v0.5 Pre18 - Added name collision detection when adding files to or changing the names of the xx/xa/img/other lists (when adding, files with the same name will be replaced)
        v0.5 Pre17 - Fixed a bug that was overwriting the first 2 bytes of .bmp textures when extracting. Added ability to add/remove files to/from the .pp file (afker). Added ability to rename files in the .pp file by editing the name labels in the xx/xa/img/other lists
        v0.5 Pre16 - Fixed file list events. Should no longer reload files when just clicking the currently loaded one
        v0.5 Pre15 - Fixed "Remove" for meshes/materials/textures when cross-references are enabled
        v0.5 Pre14 - Fixed possible crash with cross-references. Fixed loading a file for the .x Workspace. xx/xa/img/other file lists are now in alphabetical order
        v0.5 Pre13 - Fixed .xa parsing for SchoolMate (hiremi). Changed emissive to 0.5 for materials when exporting to .mqo
        v0.5 Pre12 - Fixed cross-references GUI (again )
        v0.5 Pre11 - Improved GUI selection synchronization [cross-references, "Position" up-down control, "Object Tree"]
        v0.5 Pre10 - Fixed GUI when opening files with no meshes (hiremi). Implemented "Img" ListView for .pp files. Finished rewriting GUI event handling
        v0.5 Pre9 - Finished mesh/material/texture cross-references (Kolyce). Rewrote GUI event handling. Extracting/Importing .mqo & .x files will use '.' instead of ',' for decimals regardless of region settings
        v0.5 Pre8 - Fixed replacing with .tga files (hiremi). Partially added mesh/material/texture cross-references (Kolyce). Changed material values when extracting to .mqo (warior)
        v0.5 Pre7 - Added ability to extract/remove multiple meshes & textures. Made changing the mesh object material index easier. Prepared GUI for future features
        v0.5 Pre6 - Under the Material tab, shows bytes 0x00 & 0x03 for the "Textures Used" fields. Added option to automatically set those bytes (sosola)
        v0.5 Pre5 - Fixed .tga texture extraction (warior)
        v0.5 Pre4 - Fixed decryption bug since v0.5 Pre2
        v0.5 Pre3 - Added option to save to the different .pp formats
        v0.5 Pre2 - Should read/write slightly faster & use less memory when doing so. Added "Clear Log" context menu to the log window
        v0.5 Pre1 - Added support for SchoolMate .pp files. Removed "Scale Units" under the Mesh tab

        To do
        - Documentation
        - Redo GUI for .xa files. Add ability to select a range when extracting (hiremi)
        - Possibly import materials from .mqo files
        - Possibly add support for other file types
        Last edited by Alamar; 07-20-2009, 07:26 AM.

        Comment


        • #5
          SB3Utility v0.4.x

          I successfully duplicated the BotuPlay Cameo mod using .x files, so that should be good enough for an official v0.4 release.

          - There is a theoretical maximum limit of 65536 vertices per .mqo file. I can add in automatic splitting if it's a problem. You can manually split the .mqo yourself and put each part in a new child frame.
          - You can insert/replace vertex animations, but don't use it. It basically doesn't work properly.

          Requires the .NET Framework v2.0. The source code is a VC# 2005 Express project.

          Mesh options (only affects .mqo)
          "x10 Mode": Makes the mesh x10 bigger when extracting, and scales it back when replacing
          "Use Transforms": Does/undoes all the frame matrix transformations when extracting/replacing. Should generally be unchecked
          "Use Duplicate Vertex List": When extracting, eliminates duplicate vertices made from faces that have different UV's for the same vertex. Only works when the duplicate vertex list is correctly generated (It's generated when replacing with SB3Utility)
          "Set Transparency Bytes": Sets the first 3 bytes of the "unknown" field to [0C 64 01] (decrypted) for each mesh object when replacing. Check only if the mesh uses a texture with the alpha channel (.tga)
          "Replace Normals": Recalculates normals when replacing (affects face lighting/shading). Should generally be checked
          "Duplicate Tolerance": The maximum vertex coordinate difference for vertices to be considered unique when calculating normals

          Editing the Object Tree structure
          Example Usage:
          The following just replaces an Object Tree node with the same structure and objects.
          1. Create a temporary workspace
          - Select the .x tab on the far right
          - Click on the "New" button under "Workspace"
          2. Add object frames
          - Open a .pp file, select a .xx file, and select a Frame
          - Click on the "Add" button
          3. Replace the Object Tree node
          - Click on the newly added node in the .x File Scene
          - Click on the "Replace Scene" button

          The "Move Up/Down" buttons will only move nodes within the same level.
          Keep in mind that frames names must be unique to function properly, so edit the names after replacing a node if it has duplicates.

          Replacing "Type 4" animations
          Select a .xa from an opened .pp file, and open a .x file and select it. Select one or more items from the lists. The Add, Insert and Replace buttons will do those actions to the "Type 4" list.

          The current restrictions are:
          - Animation frames indexes will be autoincremented by 1 (.x timecodes will be converted to 0, 1, 2, etc. indexes for .xa)
          - Only type 0, 1, 2 .x AnimationKeys are supported (rotation, scaling, translation). Type 4 (matrix) isn't supported.
          - .x AnimationKeys need to have the same number of entries (same number of rotations, scalings, translations)

          Version History
          Spoiler

          v0.4b Pre5
          - Merging meshes adds mesh objects to the last position instead of 2nd to last (since v0.4b Pre4)
          - Minor GUI improvements
          v0.4a
          - Minor GUI fixes
          - Fixed/re-added the ability to edit mesh objects in the Hex tab
          - Added the check for a maximum of 65565 vertices per mesh for .x files
          v0.4pre37
          - Correctly inserts .mqo meshes with faces that have different UV's for the same vertices
          - Added drag-n-drop for files and directories
          - Replacing textures keeps the new name and also changes the name in materials
          - TreeNode and ListViewItem text should be updated when editing fields (like names), hex editing, etc.
          - Added option to change mesh object bytes for transparency
          - Added shortcut keys to some file operations
          v0.4pre25
          - Took out some debugging code that made the pareo rotate along the y-axis. Special thanks to Wong2005.
          v0.4pre22
          - Fixed updating object tree nodes and lists after replacing with the .x workspace
          v0.4pre21
          - Allows replacing Type 4 animations to a target length. Remainder frames ([target length] - [init frames] - [repeat length x repeats]) are copied from frames picked by a stepsize throughout the whole animation (([init frames] + [repeat length x repeats] - 1) / [remainder]). They are NOT interpolated
          - Extract Type 3 animations. Some bugfixes
          v0.4pre19
          - Object Tree binary files created with previous versions are incompatible. (You can create a converter from (FrameInfo)xFile.sceneRoot.children[i] to (FrameInfo)xFile.roots[i] if you want)
          - Allows adding Materials/Textures to the .x workspace
          - All lists are refreshed properly after replacing Frames/Materials/Textures in the Object Tree
          - When adding Frames to the .x workspace, meshes can automatically have its material index adjusted
          v0.4pre18
          - Added newlines when extracting animations, so the .x file parser could read the last animation entries
          v0.4pre15
          - Frame name can now be edited. It wasn't supposed to be read-only.
          v0.4pre12
          - Added the "Save Binary" button to save the .x file scene
          - Added the "Remove" button for the .x file scene
          v0.4pre11
          - Allows editing the Object Tree structure
          - Extract a scene automatically based on selected animations
          Past features:
          - Allows replacing "Type 4" animations
          - Opens RapeLay files
          - Mesh replacing restrictions have been removed
          - Hex edit up to the first 1000 bytes of a field
          - Extract textured meshes to use with animations (For example, follow the instructions from this post but use "o01_P_Body" instead of "o01_N_Body")
          Last edited by Alamar; 07-20-2009, 07:26 AM.

          Comment


          • #6
            Originally posted by Alamar View Post
            [...]
            I'm impressed by your hard work on SB3Utility. It's a perfect modding tool (I wish there was a tool like this for TEATIME games). Thank you very, very much.

            I have, however, one question concerning bones replacement. As far as I know, when importing .mqo file, SB3U sets bone weight of each vertex of the new mesh to the nearest vertex of the original mesh, am I right? In most cases this works perfect but there are rare cases (like when you radically increase the number of vertices or move them very much, and the mesh moves a lot in certain animations) when this gives bizzare effect (I experienced it while working on my AHM micro skirt mod). Would it be possible to have an option of interpolation of bone weights? Let's say that instead of finding the nearest vertex of original mesh and assigning it's bone weight, we could interpolate between a couple of nearest vertices. I think that for more advanced/complex mods this could give better effect.

            Note, it's just a question. Since there is a discussion thread now, I was just wondering if we could disccuss this Is it even possible to implement? Or am I totally wrong about whole this case?

            Once again, thanks for all your hard work

            [ School Mate 2: Uncensor | Clothes ] [ @HomeMate: Uncensor & Clothes ] [ Yuusha: Uncensor ]
            [ AG3+: ExpandingPussy Uncensor ] [ Itazura/Ichazura: Uncensor & more ] [ Tech48: Uncensor ]

            Comment


            • #7
              Originally posted by profundis View Post
              As far as I know, when importing .mqo file, SB3U sets bone weight of each vertex of the new mesh to the nearest vertex of the original mesh, am I right?
              Yes. Automatic interpolation of weights could get tricky, such as when the two neighboring vertices use more than 4 different bones (engine limit). Instead, I could make a table to edit weights directly. It'll be much easier than coming up with an interpolation scheme.

              Comment


              • #8
                Originally posted by Alamar View Post
                Yes. Automatic interpolation of weights could get tricky, such as when the two neighboring vertices use more than 4 different bones (engine limit). Instead, I could make a table to edit weights directly. It'll be much easier than coming up with an interpolation scheme.
                I see. Thanks for your response.

                [ School Mate 2: Uncensor | Clothes ] [ @HomeMate: Uncensor & Clothes ] [ Yuusha: Uncensor ]
                [ AG3+: ExpandingPussy Uncensor ] [ Itazura/Ichazura: Uncensor & more ] [ Tech48: Uncensor ]

                Comment


                • #9
                  that's cool idea. Other useful thing will be ability to see and move bones if this is possible.

                  Comment


                  • #10
                    Biko3 BattleRaper2 can add to support?

                    Comment


                    • #11
                      Originally posted by warior View Post
                      Other useful thing will be ability to see and move bones if this is possible.
                      It would be nice to add poser functionality, but that would take too much of my time. SBUtility is supposed to be an importer/exporter and not a replacement for a 3D editor or similar applications. I primarily want SB3U to export to an editor, and then import the changes.

                      Originally posted by tq08rsu View Post
                      Biko3 BattleRaper2 can add to support?
                      I don't have any plans to add any of the older games at the moment.

                      I just released SB3Utility v0.8.2 with some bugfixes. Check the changelog for details.

                      Comment


                      • #12
                        Originally posted by Alamar View Post
                        It would be nice to add poser functionality, but that would take too much of my time. SBUtility is supposed to be an importer/exporter and not a replacement for a 3D editor or similar applications. I primarily want SB3U to export to an editor, and then import the changes.


                        I just released SB3Utility v0.8.2 with some bugfixes. Check the changelog for details.
                        didn't mean poser ability, i meant exactly what you add in SB3Utility v0.8.2. Other cool ability is to highligth bone when is selected in object tree in order to move bone position with bone matrix values easily and see result in renderer. This can be quite useful for hairs and some clothes mods.

                        Comment


                        • #13
                          Released SB3Utility v0.8.3.

                          If anyone has tips or tutorials about the Hex fields, please share them here. There are a lot of scattered posts about rendering order and transparency.

                          For the exploded meshes in RapeLay, you might be able to see them correctly in SB3U's Renderer. For all "x_On_body" meshes in RPP_05.pp, set the "All_Root\SCENE_ROOT\x_Nn_zentai_G\x_Nn_Skeleton_G \x_Kn_kosi" Frame matrix to identity. This is only to see them in the Renderer and will screw up the actual game if saved. I don't know why it works, and setting some Frame matrix to identity probably won't work for all skinned meshes. It seems RL doesn't have standard mesh/skeleton binding. You can see that the original skeleton doesn't line up with the mesh by showing the bones in the Renderer. This problem can't be easily fixed in SB3U. It would take heavy customization for RL and figuring out the correct matrix offsets.
                          Last edited by Alamar; 07-25-2009, 09:50 PM.

                          Comment


                          • #14
                            Originally posted by Alamar View Post
                            [...]
                            - Added editor for mesh objects
                            [...]
                            Thanks!

                            Glad to see this new feature. However, manual editing let's say 500 vertices (not to mention mesh objects with 3k vertices) can be exhausting . Maybe an option to increase/decrease (or multiply) selected values in a column by set amount could be useful?

                            EDIT: Ok, I managed to do it copy/pasting data in Excel. Not sure about the result yet but the new feature may open some new modding possibilities.
                            Last edited by profundis; 07-27-2009, 01:16 AM.

                            [ School Mate 2: Uncensor | Clothes ] [ @HomeMate: Uncensor & Clothes ] [ Yuusha: Uncensor ]
                            [ AG3+: ExpandingPussy Uncensor ] [ Itazura/Ichazura: Uncensor & more ] [ Tech48: Uncensor ]

                            Comment


                            • #15
                              I load several old models like sb3 or oppai2 and they all have this bug... (screen)
                              Attached Files

                              Comment

                              Working...
                              X