The CAS Texture Unitool (hereafter referred to as CTU), is a tool to basically allow you to edit the CAS Part files that control which textures appear on which meshes. Using this tool, you may add new textures that appear in CAS for a specific mesh. You may also edit the pattern cutouts for those textures, the specular, the base colours, and pretty much everything possible thats available in the file. Additionally, you can add brand new, non-replacement meshes into the game.
What this program does NOT do
It's not a program to do meshes. Use a meshing tool.
It's not a program to do textures. Use an image program.
It does not send satellite pictures to your PDA.
It does not (by default) allow default replacements.
You must have the following BEFORE using this program:
Please note: If you had previously used one of the older versions of CTU from the other thread, then you'll notice that this new version now needs .NET 2.0 and not .NET 3.5. This is entirely deliberate and not a typo. If you ONLY have 3.5 on your PC, make sure to download and install the .NET 2.0 from the link above.
In fact, the .NET 2.0 was done for a reason: So that, in future, if somebody finds a squishinterface dll file for Mac OS X or Linux, it's theoretically possible for this tool to run on those systems.
How to install
DOWNLOAD BOTH FILES! You MUST download and extract both CasParts.rar AND CasTextureUnitool.rar to the same place.
Note: CasTextureUnitool.rar is the Windows version. CasTetxureUnitoolNo3d.rar is the OS X/Linux version. This one has no 3d view.
Extract the contents of both rars to the same place. KEEP FOLDER STRUCTURE INTACT. You will probably need to copy some files around after extraction.
You should see the CasTextureUnitool.exe and a bunch of other files, and then a casparts folder and an xml folder. Inside the casparts folder should be over 1000 files.
Do not delete/move/change or otherwise do anything to the files in casparts!! If you do and you complain I will beat you with a set of clocks since we are running out of lime.
Quick and Dirty How To Add a New Texture Thingy To A Wotsit CAS Mesh
Using the 3 dropdowns, select your poison... aka Age, Gender and Type.
Using the Mesh Name box, select your mesh (ie a T shirt, or a Bra, or whatever)
Click "Add a Design"
Disable any stencils that are enabled (it copies the default values) and Enable Stencil A
Click "Replace" and find the DDS file you want to use. NOTE: Make sure you saved in a DXT format (DXT1 for things without alpha channels, DXT3 or DXT5 for with alpha channels). Do not use 188.8.131.52 ARGB (R8G8B8A8) as it is uncompressed and you will end up with massive files. It's fine for patterns, but not good for this stuffs.
Click File -> Save As.
Note: You may add multiple Designs to a single file - this could be different t-shirt logos, etc, but all designs in a file affect the same mesh
Simple Usage Instructions
daluved1 has written a great guide on CTU and how to use it - please check it out on the wiki here: Sims 3:CTU Guidewiki
- More changes to support OS X / Linux
- Removed dependancies on the squishinterface
- Replaced DDS loading code with one from TigerM
- Fixed bug with not loading pathOverrides file
- Fixed bug with case of CasThumbnails.package being incorrect
- Removed old VPXY parsing code from saveToDBPF and replaced with new VPXY wrapper code
- Added in support for LOD1_1, LOD1_2 etc
- Fixed bug with Extract Meshes only extracting LOD1
- Added extra checks for if 3d mode is turned off then we dont need to generate textures in some cases
- Fixed case were FullBuild is not closed properly when getting CAS thumbnails
- Added more error checking to findSims3Root function
- Modified extractCASThumbnail so it now stores the sims3root location locally and does not call Helpers for every thumbnail
- Changed text on status label in Render window from "3d view is not initialised" to "Model not loaded"
- Full HSV pattern support
- You must remove your xml\custompatterns.xml file prior to running 1.9 for the first time, if you are updating over the top of v1.8!
- You must clear your pattern cache folder to see the updated patterns!
- Hair preview
- Makeup now has specular applied
- Fixed normal mapping on skintones so lighting is now working
- Fixed bug with Saving files (File is open in another process)
- Fixed bug with custom meshes not saving properly in the .package
- Fixed bug with custom bumpmap not being put in the right position
- Fixed a lot of the paths so they (should) work on OS X now
- Fixed Costume Makeup not able to be edited properly
- Patterns now auto-commit automatically when changing the details
- 3d view now support pattern tiling parameters
- Texture keys can now be double clicked to automatically view them
- True/False parameters can now be double clicked to automatically switch them around
- Added right click menu for Editing and Viewing/Replacing
- Changed Extract Meshes so it now uses the VPXY to locate the mesh and any subsections (LOD_1_1, etc)
- Changed Extract Textures so it now extracts the bumpmaps from the meshes too
- Render view now loads in multiple parts (LOD_1_1, LOD_1_2, etc) and displays them
- Hide progress bar in bottom right when not being used
- Added status label in bottom right to indicate currently loaded mesh
- Minor bugfixes and enhancements.
Major changes in v1.8:
- Pattern preview in 3d view
- Makeup preview
- 3d view can now always be visible
- Many many MANY bugfixes
- Changed BodyShader to CullMode None
- Fix for sending in null or zero length textures into textureloader (Reported by matildarose)
- Add MessageBox on image not found
- Some additional error checking for shaders
- Fixed tgiMeshLinks list not being cleared down properly
- Added revision number to title text
- make costumes load correctly
- Fixed hex input box on ColorPicker not working if you already had a hex code in it
- Removed duplicate colours from Known Colors box in Color Picker
- Fixed FaceShader
- Added rest of defaultMeshes.xml
- Added checks for makeup to disable some of the not-needed sections
- Bugfix: Stencil list now doesn't get cleared down all the time
- Bugfix: When loading an existing package, stencil list is now correct
- Renamed listView3 to lstStencilPool
- Fixed model bounding box calculation
- Adjusted default camera view so that it is better centred according to the model
- Fix for eyebrows
- Added FaceShader.fx
- Fixed bug where clothing was applied as Stencil
- Moved some functions out into CasPartFunctions.cs
- Makeup preview
- Color picker glitch fix. And some other minor changes.
- Moved XML files into xml subfolder
- Removed old files
- Renamed findTextures to findDefaultTextures
- Added SimGeom wrapper stub
- Removed complate box from meshes tab
- Added TGI Links box to meshes tab
- Moved Mesh Name and Commit button into New Mesh group
- Modified findKey to search localfiles properly
- Changed DDSPreview so that it defaults to *not* invAlpha
- Added checkered background to the DDSPreview pictureBox1
- Fixed bug with texture and other details boxes not being populated on File -> Open
- Bugfix to populate lstTextureDetails and lstOtherDetails when cleared
- Added fiz to popup menu in Render window - now only shows menu when renderEnabled = true
- Bugfix to clear Texture and Other Details listboxes when clearing down designs
- Adjusted width of Name column in Texture and Other Details listboxes to not cause horizontal scroll
- Added some default values (used when creating a new blank object)
- Added missing toddler and child instances in xml
Removed mipmap generation in RenderWindow (sharper textures)
- Some small bugfixes and improvements
- Split off some of the dbpf / resource chunk functions into a seperate partial class for easier maintenance
- Split off some of the pattern commiting / generation / functions into a seperate partial class for easier maintenance
- Added "View" to the right click context menu of the Render Window - supports Front, Back, Left and Right
- Fixed bug with custom patterns - the code just prior to generate3DTexture was not picking up the custom pattern images properly so added a patternbrowser findPattern function to support this
- Split off some of the render functions into a seperate partial class for easier maintenance
- Added casPartType enum
- Adjusted widths of the Designs tabbed box, since it was causing a horizontal scroll due to the change from buttons to tabs
- Moved position of the Render status label to top right, so it's closer to the buttons
- Removed extraneous call to keyName / keyName.ToResourceKey() in some places
- Added error check in geomToModel to check for zero length streams
- Added defaultTextures.xml - for specifying default skintone, specular, etc
- Added loading in of Face mesh when makeup selected
- Moved start render code and other render functions into RenderUtils.cs
- Modified btnStart3D when clicking on Add New... to check if 3d is already loaded and if so just reload textures
- Added preliminary makeup texture compositor - needs work to detect type of makeup and add in tint colours, etc, but works ok for eyebrows at the moment
- Adding message while generating texture.
- Minor improvements with automatic mesh reloading
- Fixed bug with hitting Commit on the Custom Thumbnail screen giving a "Key Already Exists" error
- Added status label to bottom of render control, for status messages (set to Public)
- Added ability to specify the background colour of the 3d render, in the Options screen
- Modified render window so that it automatically has the background colour set when loading (and isn't blank anymore)
- Added status message when loaded a mesh
- Added status message when can't load a mesh
- Check box for showing 3d render now saves it's state to the registry
- added 3d panning
- Aasynchronous texture loading
- Rrelocating 3d preview
- Adding resetview
- Aadding option to copy all design from original (experimental)
- Fixed bug with background colour on custom and normal patterns not being sent back from patternBrowser
- Fixed bug with pattern browser not having the same icon as the CTU main Form
- Removed redundant code in Form1 for selected pattern
- Regenerated patternList.xml
- Changed keyUtils findKey to use ResourceKeys instead of keyStrings
- Added keyValidate into Wrappers/keyUtils.cs
- Changed mesh search code to use VPXY to grab mesh instead of hunting manually
- Added Save code
- Added various *File classes, to cater for resources which commonly have only 1 chunk and an RCOL header - VPXY files, etc
- Added BlendGeom class
- Added NameMap class
- Added AgeGenderFlags enum
- Fixed RCOLHeader so that it always outputs ResourceKeys in IGT order and not TGI (if no order set) as before
- Removed ResourceKey(instance, group, type) - this was used rarely
- Render-Window: Added y-rotation, more intuitive controls, fixed variable name
- Changed DDSFile.Image (again )
- Removed ColorPickerCtrl and etxra P/Invokes from Util.cs (not needed)
- Added actual icon to Form1
- Switched to using MadScience.Helpers / MadScience.Wrappers instead of Gibbed
- Dropped back down to .NET 2.0
- Fixed bug with background colour dialog sending colour to palette 1 instead
- Changed Image Preview code to one inside MadScience.Helpers (much much faster)
- Removed FastPixel references
- Removed extra unused references
- Changed Image Preview so that it updates instantly without having to click the Image Preview button1
- Added new icon (Thanks to HystericalParoxysm and Jon)
- Removed licence form and switched to method included in MadScience.Helpers
- Removed extra DDSFile and DDSSquish files as they are compiled inside MadScience.Helpers anyway
- Re-arranged GUI to make palette colours larger
- Changed to auto-incrementing version system
- Removed extra System references and cleaned up Usings
- Changed build target to x86 instead of Any CPU
- Changed ResourceKey into a struct and modified corresponding code
- Added MadScience.Wrappers/Properties/AssemblyInfo.cs
- Removed extra reference to findSims3Root in Start 3D function - wasn't needed
- Fixed bug with Enabled/Disabled not saving with pattern details
- Fixed bug with pointing to special VPXYs instead of bodyblends
- Added code to allow loaded a package/caspart from the command line
- Added MadScience.Wrappers
- Added reference to MadScience.Wrappers
- Integrated Gibbed code into MadScience Helpers and MadScience.Wrappers
- Rewrote much of the classes to remove 3.5 only code
- Cleaned up unused Usings.
- Changed .NET Framework from 3.5 back to 2.0.
-- Warning! May still be some bugs related to move back to v2.0, but have tested loading, saving, and 3d view, and all appears to be ok
- Changed build target to use x86 instead of Any CPU - fixes issues with BadImageFormat on 64 bit Vista
- Fixed issue with pattern colours from old, incorrect package files not being cleared down properly
- Adjusted casPart save to use String.IsNullOrEmpty instead of == ""
- Added findPattern function to PatternBrowser.cs
- Changed pattern display to get the pattern from findPattern
- Added creation of _fit, _fat, _thin and _special VPXY and BodyBlends
- Changed saveGeom to detect how many TGI links are in the original mesh (to fix bug with GEOMs with less than 5 links)
- Removed function makeKeyName() and moved into MadScience.keyUtils
- Fixed bug with patternThumb preview not updating properly
- Fixed bug with incorrect pattern colour boxes not being shown
- Changed the convertColour lines in createColorArray to return Color.Empty
- Moved findKey() functions out into seperate MadScience.KeyUtils class, and moved newDDSfiles into a more generic Helpers.localFiles Hashtable.
- Fixed findKey, which exits early, when it just found /one/ key.
- Small optimization in PatternProcessor.
27th July 2009 v1.7.3495.37382
- Fixed bug with custom patterns colours not being loaded properly, so the background colour was not set properly
- Added ctrl-c ctrl-v to paste values into the hex colour box
- Added more logging when generating thumbnails
- Added Options panel with area to change TS3 root folder
27th July 2009 v1.7
- Fixed bug with OK button Colour window while in Known Colors not sending back the right colour
- Added new Mesh Find screen, with thumbnails, to easily find what you want to make
- Moved Part Details to new Tab
- Added option to make it so that selecting a mesh automatically adds a New Design.
- Added option to generate all 1k+ thumbnails for faster loading
- Added option in Pattern Browser to import Custom Patterns, which appear in the * Custom tab, and can be used on items in game
- Added Debug mode, which shows some advanced buttons
- While in Debug mode you may now modify the TGI lists to change linkages to VPXYs etc
- Added option to support custom in game CAS thumbnails
- Added Save menu item
- Fixed bug with loading previously Saved package files and re-saving lost all textures. Note that you MUST save using the Save option and not Save As if you want to keep all existing textures, resources, etc
- Added CAS Part Type to the flags screen
- Altered behaviour of CAS Part Type and Type so that you may only tick one thing at a time
- Fixed GDI+ bug with pattern browser loading it's patterns at startup
- Fixed bug with RGBMask not being overwritten when Commiting a pattern
- Made improvements to the speed of the pattern browser when loading thumbs
- Made improvements to the speed of Finding existing textures in the game files
- Added the ability to now add designs to ANY cas part in the entire game, including previously non recolourable stuff
- Other assorted speed improvements
- Probably some stuff I am missing.
13th July 2009 v1.5
- Fixed bug where you could not open up previously saved .package or .caspart files
- Fixed bug with Pattern (Coloured) colours not saving properly
- Increased size of Pattern (Coloured) colour boxes
- Added new Pattern Browser that lets you browse through all of the existing in-game patterns and select one for use in CTU - Meshes are now extracted with the instance ID appended to the name
11th July 2009 v1.32
- Added Extract Meshes button to Mesh Find tab, that automatically finds and extracts the meshes for the CAS part you have selected
10th July 2009: v1.3
- Added keyName support so that extracted textures from FullBuild2 now have the correct name
- Increased number of stencils in pool to 10, and added ability to specify up to 6 stencils per pattern again
- Added button to auto-populate the "Solid Colour" pattern with default values
- Removed hidden/debug buttons (Commit on Mesh Find, and Show XML details on Designs tab)
- Changed Design -> Stencils page to add a Commit button
- Fixed bug with Alpha not being transferred correctly from the Color Picker control
- Re-ordered Other Details
- Multiplier is now renamed to "Base Texture"
8th July 2009:
- Way too many to list here.
- This version allows only ONE stencil to be put on a design at a time. I'll be re-adding the ability to put multiple stencils on a design later.
- Should fix the issues with the afTopShirtTee_crew and others.
- GUI redesign and change
19th June 2009:
- Added validation to the keystrings so it doesn't crash when entering garbage.
- Added Category Details tab with all the various flags listed, so you can recategorise clothing
- Changed behaviour so that CAS Part Details will always show, even if the CAS part can't be changed right now.
- Probably some other stuff I forget.
- Added Commit button to Other tab
- Added ability to edit the flags for meshes that can't be redesigned (like beards)
Thanks and Credits
Thanks to all who decide to test this, Snaitf and Rabeeto for being initial guinea pigs, and fanseelamb for some of the UI suggestions.
Thanks to the CTU Team (Delphy and jonha) for coding this!
Rick, for the Gibbed libraries
TigerM, for the DDS decompression routine
Okay... So... What's the point to the Mac/Linux version if it doesn't even work? It doesn't even let me extract textures from custom packages because I have to find the root folder to The Sims 3, which is impossible, since the root folders are entirely different between Mac and Windows version of the game. You've have to go into the app contents and its impossible to do that? Unless I'm totally missing something.
I have seen other people report this, but I'm not sure there was a solution posted. As those posts were ancient, I'm just going to ask the same question again. CTU is a wizbang cool thing, but I'm frustrated at replacing textures. I have a 1024x1024 texture in the correct DDS format. I go to Designs --> Textures --> Base Texture. I right-click, select Replace Image, select the DDS image (the key value changes), hit the commit button, and in my 3D view, the torso is now naked. The bump map is still there, but being applied to what seems to be skin. Is the Base Texture perhaps underneath? But then maybe it isn't, because the "find" operation returns with an error, claiming it can't find the key.
Right now my workflow is to use TSR Workshop to load up the meshes, then export the package, and load the package into CTU to view it in the superior 3D viewer (and to set up designs and so on). Seems like a needless extra step because of my texture loading problem. Any advice on what to try? (By the way, I did not install .NET Framework 2.0 -- seemed to work under Windows 7 and the documentation seemed to say that under W7 it's fine with new versions of .NET)
This gives me a "CASPartEditor has stopped working." error message. I'm running windows 7 if that makes a difference :/ I don't suppose there's another way to make custom CAS parts other than this program is there?
This gives me a "CASPartEditor has stopped working." error message. I'm running windows 7 if that makes a difference :/ I don't suppose there's another way to make custom CAS parts other than this program is there?
Well there is also TSR Workshop for making CAS items. However it's from The Sims Resource site & you'll have to go to TSR to get it. I suggest leaving your ad blocker on, no matter how much TSR wants you to look at their ads. TSRW is, as far as I can tell, the only download on TSR that doesn't try to make you watch ads or wait if you have ad block. Their "in-house" developed program is the only thing they let you download unhindered....funny that, yeah?
Anyway, the other downsides of TSRW are: it has to be installed rather than being self-contained, it runs slower than CTU, starting any new project involves clicking through several screens & subsequently waiting for the next screen to load, the import feature is as slow & clunky as starting a new project, and various operations bring up annoying dialogues asking if your project is for Sims 4 & they don't have any "no & don't ask me again" buttons to get rid of them forever.
Once you get your project opened into the workspace, TSRW runs just peachy, & is fairly straight forward. One plus for TSRW is that it has way more CAS categories available than CTU does, if you want to make something "outerwear" for example, CTU doesn't have that category. TSRW also has it's own file type ".wrk" for saving projects in progress & finished projects have to be "exported" rather than "saved".
TSRW exports as .sims3pack & has is a greyed out .package option. I don't know if .package exports were broken so they disable the option, or if it's a "premium" feature for TSR's "VIP" members only, or what, but Delphy's sims3pack extractor takes care of the sims3packs.
Don't think I'm saying this just to endorse TSRW, look at all the negative points I gave it vs a couple of positive features.
Personally I really prefer CTU by a mile, if it had all the clothing categories available, I probably wouldn't bother with TSRW at all.
But TSRW is a CC making tool & makes CAS items, if you can't get CTU to work, you can still try TSRW.
I'm getting an "unhandled exception unable to read beyond stream" when trying to replace a mesh for an EP item. Any ideas why that is? I've never had this problem before.
See the end of this message for details on invoking
just-in-time (JIT) debugging instead of this dialog box.
************** Exception Text **************
System.IO.EndOfStreamException: Unable to read beyond the end of the stream.
at System.IO.BinaryReader.FillBuffer(Int32 numBytes)
at MadScience.Wrappers.RcolHeader.loadFromStream(Stream input)
at MadScience.Wrappers.RcolHeader.Load(Stream input)
at MadScience.Wrappers.VPXYFile.loadFromStream(Stream input)
at MadScience.Wrappers.VPXYFile..ctor(Stream input)
at CASPartEditor.Form1.saveToDBPF(Database db, UInt64 instanceId, Boolean newInstance)
at CASPartEditor.Form1.saveAsToolStripMenuItem_Click(Object sender, EventArgs e)
at System.Windows.Forms.ToolStripItem.RaiseEvent(Object key, EventArgs e)
at System.Windows.Forms.ToolStripMenuItem.OnClick(EventArgs e)
at System.Windows.Forms.ToolStripItem.HandleClick(EventArgs e)
at System.Windows.Forms.ToolStripItem.HandleMouseUp(MouseEventArgs e)
at System.Windows.Forms.ToolStripItem.FireEventInteractive(EventArgs e, ToolStripItemEventType met)
at System.Windows.Forms.ToolStripItem.FireEvent(EventArgs e, ToolStripItemEventType met)
at System.Windows.Forms.ToolStrip.OnMouseUp(MouseEventArgs mea)
at System.Windows.Forms.ToolStripDropDown.OnMouseUp(MouseEventArgs mea)
at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.ScrollableControl.WndProc(Message& m)
at System.Windows.Forms.ToolStrip.WndProc(Message& m)
at System.Windows.Forms.ToolStripDropDown.WndProc(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)