portraits.2da defines the game-selectable portraits in the toolset (for creatures, placeables) and for players at character generation. Portraits can be changed (by resref or ID number) later using script commands.
Portraits are made up of several different files all with the same prefix - po_ - but with different end letters. Generally TGA files are used for these to retain quality but DDS tends to work better because of the way save games generate thumbnails if you are using scaled up resolutions (apparently TGA files being too big corrupts the save games generating the little thumbnails for the load menu, while DDS does not).
If you use DDS you should also use a blank portraits.txi file since this is loaded for any GUI element showing a portrait, and higher quality DDS files won't mipmap properly.
You can convert files in the engine itself using the command ConvertPortrait filename (if present in the "portraits" folder) but to be honest, you will find it easier to edit files in something like Paint.NET or GIMP to get the required sizes since you can easily crop to retain detail in the smaller sizes.
|Portrait Size||Letter||Minimum Resolution||Usage|
|Huge||h||256x512 canvas; upper 256x400 used||Character Creation (not needed for placeables)|
|Large||l||128x256 canvas; upper 128x200 used||Character Sheet (not needed for placeables)|
|Medium||m||64x128 canvas; upper 64x100 used||Conversations, examine panel|
|Small||s||32x64 canvas; upper 32x50 used||Party bar, radial menus|
|Tiny||t||16x32 canvas, upper 16x25 used||Mouse over name windows, chat window|
Custom portraits are selectable unless the ruleset.2da toggle is altered; CHARGEN_ALLOW_CUSTOM_PORTRAITS. If off only portraits in portraits.2da can be chosen. It defaults to on (1) and is a client side setting.
If the players want custom ones no one else can select, the portraits.2da file can be altered to allow a certain portrait only for NPCs (the Plot column), then it is set in game using script commands.
The number of rows in this 2da are limited to 65,536 due to the game storing it as a 2 byte integer reference. Beamdog has reserved adding new content at line 15,000 so plenty of room for user additions past the usual ones included in the base game.
Note that none of the categorisations below stops the portrait being selected in the toolset, and certainly has no restrictions in the game using SetPortraitId.
|BaseResRef||dw_f_01_||The filename without the "po_" prefix or the corresponding "size" value (h, l, m, s, t) noted above after it. Example file would be po_dw_f_01_h.tga for the "Huge" one.|
Index into gender.2da, the suggested gender of the portrait. For quick reference these numbers are:
0 - Male
1 - Female
2 - Both
3 - Other
4 - None
PC chargen can only see those for their selected gender, ie 0 or 1, so anything which isn't 0 or 1 will be toolset only. The PC cannot ever see other opposite gender so if there are shared portraits add two entries with just the gender being different.
|Race||3||Index into racialtypes.2da, the suggested race attached to the portrait|
|InanimateType||7||Index into placeabletypes.2da, the suggested category of placeable this portrait is related to.|
|Plot||0||If 0 it is allowed for players to pick this, if 1 the portrait is considered "plot" and not pickable by players (eg; Aribeths portrait in the OC)|
|LowGore||PLC_M06_||If a resref is supplied and "low violence" mode is enabled this is show instead of the original. Same formatting as BaseResRef.|