Jump to content

[Planning] Set Clothing - I'm gonna take the plunge!


Satyrist

  

34 members have voted

  1. 1. How should I manage different body style clothing meshes?

    • Each body style uses its own 'Armor_<style>' and 'Clothing_<style>' folders
      21
    • Each body style uses the standard folder structure, but appends '_<style>' to the end of the filename
      13
    • Other
      0


Recommended Posts

Ok, to start with, I'm not sure my scripting skills are up to this, but I'm going to try anyway...

 

The plan is to create the long-requested 'set clothing' mod to complement setbody (http://www.loverslab.com/topic/13908-gerra-and-movomos-setbody-reloaded-141/).

 

So here is my plan:

 

Phase 0: Planning

Phase 1: A simple 'Set Clothing' mod that functions similarly to Setbody Expanded (http://www.nexusmods.com/oblivion/mods/39371/?) - i.e. allows you to set NPCs clothing body types on an individual basis

Phase 2: An automatic 'Set Clothing' that sets everyones clothing to match their body style.

 

At the moment I'm at phase 0.

 

Planning

Where I say 'clothing' I also mean armor.

 

Mod Capabilities

  • The ability to allow NPCs (and the player) to use different body styles of clothing
  • The ability to automatically assign clothing styles based on the character's Setbody body style
  • The ability to easily add different body style clothing sets to mod added clothing & armor
  • (Hopefully) the ability to handle missing body style clothing meshes - preferably by choosing the nearest size available.

Likely Incompatibilities

The first might be fixable by creating a modified version of breakarmor, but would, of course, require that each body style get a set of breakarmor meshes made for it!

This mod should supercede the second, unless the player wishes to use a unique set of clothing meshes.

 

Resources

I'm going to need a complete clothing & armour replacer (for vanilla assets at least) covering a range of body shapes, for females there is a reasonable selection, at least for the less extreme body types, but so far I've only found a complete set for males for Roberts Muscular.

Fortunately, Gerra6's body style converter (http://www.loverslab.com/topic/27557-new-clothing-body-style-converter-beta-v089f-10-26-2014/) (and some processing time) can solve this in most cases.

 

Scripting

Now we come to the tricky bit, and where I'm asking for some advice:

The mod will, once written, use OBSE scripting to change the path, but I'm trying to decide how to organise the extra armor & clothing meshes, I have though of 2 options so far:

1) Each body style uses its own 'Armor_<style>' and 'Clothing_<style>' folders

This would make uninstalling the mod easier, but would might lack the ability to support mod-added clothing that uses its own folder structure (as many do)

2) Each body style uses the standard folder structure, but appends '_<style>' to the end of the filename

This would make uninstalling the mod harder, but means that any clothing mod would be able to be made compatable buy just adding the <clothingpart>_<style>.nif' files in the same place as the original.

 

I don't think I should aim for a clothing style for every single body style (as there are a lot, at least for females), so, for the start, I will have a few sufficiently different body styles to pick from, this will mean, once I get phase 2 started, having a way to select a clothing body style based on the set body body style.

 

Likewise, something else I need to cater for is clothing items that use more than one body slot, ATM I'm considering matching body styles based on the upper body slot where a clothing item occupies multiple body slots.

 

Also, at least for phase 1, I'll need to store which clothing body style is chosen for each NPC, I can think of three options:

  • Unplayable token items (1 per slot)
  • Faction ranks (1 faction per slot, each body style is a rank)
  • OBSE array

Lastly, one refinement I've thought of, allowing multiple clothing styles per body style, for automatic allocation these could be chosen randomly, or allocated by some criteria.

 

If any experienced modders have any advice to give me, I'd be very grateful!

 

Now I've got everyone's hope up, I'd better go and start work on it (I have, at least, started collecting a library of clothing replacers).

 

Link to comment

Sounds good. Already some other mods are modifying and parsing file name, it's kind of red ocean, so I'd recommend organizing them with folder name.

 

GetCurrentAsset function returns the current combined body code string. GetBodySlot tells you which slot the calling body part occupies. If you ever need to know exactly what body it is.

 

I haven't written anything about category yet, so GetBodyCategory is not functional at the moment. It really depends on what and how will you implement it. For example...

 

- Just rough body volume. Like very small - small - average - big - very big. Type and range of the return value are up to you. 1~5, -2~+2, anything.

- Or somewhat more specific information. Perhaps by seam convention. HGEC waist, DMRA wrist, etc.

 

If you take a look into setbody seam templates, you'll find that female body seam standards are completely in mayhem. Each and every unconventional body contributes to this total chaos. Waist alone is already headachy... and there are wrists and ankles. Somehow you'll have to ignore some minor problems, I think.

 

Anyways, think about how will you set up your mod's flow and I'll send the dev plugin to you. If you complete this mod you'll be a hero.

 

>> Likewise, something else I need to cater for is clothing items that use more than one body slot

 

Hmm.. that's troublesome. You will need a solid logic/priority. When a clothing occupies upper and lower slot at the same time, or some other insane slot combination, you will need to decide what body part is more important.

 

On another note... Long time ago I wrote a random armor giver plugin (that distributes custom armors to random npcs). I used slotmask. Bitwise operation is very handy in such situation. And, I don't remember right now, but probably a very similar classification is being used in Tamago setbody. That is, some_numeric_map[long_slot_mask][armors] type structure is very useful, and you can play with those numbers in various ways.

 

For storing information I personally recommend array. It will give you the biggest freedom among other options. Any token system can be altered by array, and tracking down tokens is tricky at best, as you store more and more information. I haven't given any thought about faction, though.

Link to comment

Sounds good. Already some other mods are modifying and parsing file name, it's kind of red ocean, so I'd recommend organizing them with folder name.

 

GetCurrentAsset function returns the current combined body code string. GetBodySlot tells you which slot the calling body part occupies. If you ever need to know exactly what body it is.

 

I haven't written anything about category yet, so GetBodyCategory is not functional at the moment. It really depends on what and how will you implement it. For example...

 

- Just rough body volume. Like very small - small - average - big - very big. Type and range of the return value are up to you. 1~5, -2~+2, anything.

- Or somewhat more specific information. Perhaps by seam convention. HGEC waist, DMRA wrist, etc.

Well, I think knowing the seam convention will be useful, for male body size I'd just go with the roberts/room207/breeze sizes - I might be able to reduce the number, from memory the 'boy' body styles are fairly similar.

While I think about it, different 'package' sizes for normal, medium & large size penis' - would need some blender work (which I have done very little of).

 

If you take a look into setbody seam templates, you'll find that female body seam standards are completely in mayhem. Each and every unconventional body contributes to this total chaos. Waist alone is already headachy... and there are wrists and ankles. Somehow you'll have to ignore some minor problems, I think.

Yeh, I think I'll just aim at the HGEC & DMRA waists for starters.

 

Anyways, think about how will you set up your mod's flow and I'll send the dev plugin to you. If you complete this mod you'll be a hero.

 

>> Likewise, something else I need to cater for is clothing items that use more than one body slot

 

Hmm.. that's troublesome. You will need a solid logic/priority. When a clothing occupies upper and lower slot at the same time, or some other insane slot combination, you will need to decide what body part is more important.

I don't think it will ever be an issue for males, for females, my plan was to prioritise the upper body slot, at least to start with.

 

On another note... Long time ago I wrote a random armor giver plugin (that distributes custom armors to random npcs). I used slotmask. Bitwise operation is very handy in such situation. And, I don't remember right now, but probably a very similar classification is being used in Tamago setbody. That is, some_numeric_map[long_slot_mask][armors] type structure is very useful, and you can play with those numbers in various ways.

Nice suggestion, thanks!

 

For storing information I personally recommend array. It will give you the biggest freedom among other options. Any token system can be altered by array, and tracking down tokens is tricky at best, as you store more and more information. I haven't given any thought about faction, though.

Yes, I was think array would be best, I mentioned factions because it was how setbody expanded did it.
Link to comment

Sorry for my rough English.

 

Your project sounds similar to what I'd like to achieve. Mostly by studying SetBody Reloaded, I have managed to write the very first script that looks for assigned files:

scn VarBQuestScript

short Initialize ; Check to run only once

string_var MeshFolder ; Location of meshes
string_var MeshFile ; Path of a mesh file that is searched for

; These strings will be located in a ini file
array_var BodyCategoriesFemale
array_var FemaleTopSizes

array_var BodyCategory
array_var TopSize

Begin Gamemode

    If Initialize == 0

        Let MeshFolder := "Data\meshes\VarietyBody\"
        Let BodyCategoriesFemale := Sv_Split "HGEC|TGND" "|"
        Let FemaleTopSizes := Sv_Split "AA|A|B|C|D|E" "|"

        ForEach BodyCategory <- BodyCategoriesFemale
            ForEach TopSize <- FemaleTopSizes
                Let MeshFile := MeshFolder + "F\" + BodyCategory["value"] + "\UpperBody\femaleupperbody_" + TopSize["value"] + ".nif"
                If FileExists $MeshFile
                    PrintToConsole "%z found!" MeshFile
                EndIf
            Loop
        Loop
        
    set Initialize to 1
    EndIf

End

I currently have the following folder structure in meshes folder:

 

VarietyBody (just a project name)

F

HGEC

Common

(foot and hand nifs)

LowerBody

(lower bodies here)

UpperBody

femaleupperbody_A.nif

femaleupperbody_D.nif

femaleupperbody_F.nif

TGND

...

...

M

...

 

Basically this code just looks for those female upperbodies and tells which ones it finds, which would be femaleupperbody A and D. F-size isn't included in FemaleTopSizes-string, and therefore not looked for.

 

There actually was no TGND-folder, so those searches took unnecessary time. This issue will be fixed.

 

Key here is to have as dynamic framework as possible. Want to use only certain sizes of boobs? Just edit .ini. Want to include DMRA? Just download the pack, move it to the correct place and edit the .ini.

 

EDIT: Silly me. In future those ini variables are actually strings.

Link to comment

No problem, I'd really love to see this mod in action.

 

Another version down the line. Nothing too exciting, but this version actually stores data about those detected files. However, I think my universal body keys (C/D/.../H whatever) aren't that good idea after all. Some bodysets seem to prefer other "sizes", so that would take an unnecessary amount of searches to be done. Instead, I think every bodyset should have its own ini file - this could e.g. include info about how rare a specific bodytype is.

 

 

 

scn SetClothingQuestScript

short Initialize ; Check to run only once

string_var MeshFolder ; Location of meshes

; These strings will be located in a ini file
string_var BodySetsFemale
string_var TopSizesFemale
string_var BottomSizesFemale

; Storage for detected body keys
array_var BodiesFemale

Begin Gamemode

	If Initialize == 0

		Let MeshFolder := "Data\meshes\SetClothing\"

		; Ini section here.
		Let BodySetsFemale := "DMRA|HGEC|TGND"
		Let TopSizesFemale := "AA|A|B|C|D|E"
		Let BottomSizesFemale := "S|M|L"

		; Ladies first
		Let BodiesFemale := Call SetClothingLoadBodySets BodySetsFemale TopSizesFemale BottomSizesFemale MeshFolder "F"
		;     BodiesFemale [ INDEX ] [ BODYSET_NAME, TOPSIZES, BOTTOMSIZES ]
		
	set Initialize to 1
	EndIf

End

scn SetClothingLoadBodySets

; Arguments
string_var BodySets
string_var TopSizes
string_var BottomSizes
string_var MeshFolder
string_var Gender

; Arrays in which we add keys for used body parts
array_var RawBodyData
array_var BodyData

; Loop arrays
array_var BodySet
array_var TopSize
array_var BottomSize

; Statistic Variables
short BodySetTopCount
short BodySetBottomCount

string_var MeshFile

Begin Function { BodySets, TopSizes, BottomSizes, MeshFolder, Gender }

	Let BodySetTopCount := 0
	Let BodySetBottomCount := 0

	; Possible errorcheck here

	Let RawBodyData := ar_Construct Array
	Let BodyData := ar_Construct Array

	ForEach BodySet <- Sv_Split BodySets "|"

		Let RawBodyData[BodySet["key"]] := ar_Construct StringMap
		Let RawBodyData[BodySet["key"]]["BodySetName"] := BodySet["value"]
		Let RawBodyData[BodySet["key"]]["TopSizes"] := ar_Construct Array
		Let RawBodyData[BodySet["key"]]["BottomSizes"] := ar_Construct Array

		; First we look for upper parts
		ForEach TopSize <- Sv_Split TopSizes "|"
			Let MeshFile := MeshFolder + Gender + "\" + BodySet["value"] + "\UpperBody\upperbody_" + TopSize["value"] + ".nif"
			If FileExists $MeshFile
				ar_Append RawBodyData[BodySet["key"]]["TopSizes"] TopSize["value"]
			EndIf
		Loop
		Let BodySetTopCount := ar_Size RawBodyData[BodySet["key"]]["TopSizes"]

		; Then lower
		ForEach BottomSize <- Sv_Split BottomSizes "|"
			Let MeshFile := MeshFolder + Gender + "\" + BodySet["value"] + "\LowerBody\lowerbody_" + BottomSize["value"] + ".nif"
			If FileExists $MeshFile
				ar_Append RawBodyData[BodySet["key"]]["BottomSizes"] BottomSize["value"]
			EndIf
		Loop
		Let BodySetBottomCount := ar_Size RawBodyData[BodySet["key"]]["BottomSizes"]

		If (BodySetTopCount * BodySetBottomCount) > 0
			; Can form body combinations, add to actual list
			ar_Append BodyData RawBodyData[Bodyset["key"]]
			Print BodySet["value"] + " loaded: " + $BodySetTopCount + " tops and " + $BodySetBottomCount + " bottoms detected."
		Else
			Print BodySet["value"] + " not loaded (can't form any combinations)."
		EndIf
	Loop

	SetFunctionValue BodyData
	Return
End

 

 

 

About file structure, it is by no means final. My current one anyway don't have any ready plan for armor stuff. My suggestion, however, is to use folders efficienly.

 

This system could also enable a selection of underwear to be had, what do you think? So far people have had to go nude for that LAPF stuff, but we already do have that joystick. Overall system here would be to first get character's body info, then try to find a suitable undies. Possible Broken Armor function and some revealing stuff might be an immersion issue here, but problems are meant to be solved.

Link to comment

About file structure, it is by no means final. My current one anyway don't have any ready plan for armor stuff. My suggestion, however, is to use folders efficienly.

Thanks for the code.

 

I think for ease of exapandability, a file structure that mimics the existing 'Clothing' & 'Armor' file structure is the way to go - I'm looking into this ATM.

 

This system could also enable a selection of underwear to be had, what do you think? So far people have had to go nude for that LAPF stuff, but we already do have that joystick. Overall system here would be to first get character's body info, then try to find a suitable undies. Possible Broken Armor function and some revealing stuff might be an immersion issue here, but problems are meant to be solved.

I'm going to leave undies as a future feature for now, first I'm trying to get the bare bones system working.

 

GetCurrentAsset function returns the current combined body code string. GetBodySlot tells you which slot the calling body part occupies. If you ever need to know exactly what body it is.

 

I haven't written anything about category yet, so GetBodyCategory is not functional at the moment. It really depends on what and how will you implement it. For example...

 

- Just rough body volume. Like very small - small - average - big - very big. Type and range of the return value are up to you. 1~5, -2~+2, anything.

- Or somewhat more specific information. Perhaps by seam convention. HGEC waist, DMRA wrist, etc.

 

If you take a look into setbody seam templates, you'll find that female body seam standards are completely in mayhem. Each and every unconventional body contributes to this total chaos. Waist alone is already headachy... and there are wrists and ankles. Somehow you'll have to ignore some minor problems, I think.

Re-replying as I've thought about this some more...

I could just get by with GetCurrentAsset, and have an array that maps clothing styles to body codes - whould take a bit of work populating the array though.

I think my requirements for GetBodyCategory would be these:

The ability to get separate upper & lower body categories

The ability to determine which body seam is used

& some kind of 'size' value

...I'll think about this some more.

Link to comment

 

I think for ease of exapandability, a file structure that mimics the existing 'Clothing' & 'Armor' file structure is the way to go - I'm looking into this ATM.

 

That might be a good idea, I'm just trying to avoid spreading files too wide here. Clothing Meshes however needs to have the bodyset and scale information somehow, so current stuff don't work - unless you have a large database somewhere and still it wouldn't save you from needing the rest of meshes. I will try to make a clever variable solution (in a style of "MeshFolder" one in my script) to easily experiment around this. If I actually manage to write a working first version, that is.

 

Keep in mind that the script here is so far just for bodies. Cloth swapping system here should be 1) look for a mesh that suits the character 2) use that mesh. I decided to redesign SetBody because I think it currently isn't optimal for this system, and the fact that a mesh per cloth per bodytype (per BA stage?) will result in a lot of meshes, can't download them all at once.

 

 

 

I'm going to leave undies as a future feature for now, first I'm trying to get the bare bones system working.

 

Of course. Funky stuff must wait.

 

 

 

Re-replying as I've thought about this some more...

I could just get by with GetCurrentAsset, and have an array that maps clothing styles to body codes - whould take a bit of work populating the array though.

I think my requirements for GetBodyCategory would be these:

The ability to get separate upper & lower body categories

The ability to determine which body seam is used

& some kind of 'size' value

...I'll think about this some more.

 

 

If you paid attention to (or understood) that one comment in my script, I typed "BodiesFemale [ INDEX ] [ BODYSET_NAME, TOPSIZES, BOTTOMSIZES ]". If each NPC is assigned with these three latter values, we could just combain this information with weared items and that's pretty much it.

Link to comment

If you paid attention to (or understood) that one comment in my script, I typed "BodiesFemale [ INDEX ] [ BODYSET_NAME, TOPSIZES, BOTTOMSIZES ]". If each NPC is assigned with these three latter values, we could just combain this information with weared items and that's pretty much it.

Yes, thats the sort of thing I had in mind, and your script made me realise that I probably need to read up on OBSE arrays again!

 

Anyway, I've now assembled a file structure to start with, now the hard part starts.

Take a look at this mod, it might be helpful coding wise as it works in a similar way to what you intend http://www.nexusmods.com/oblivion/mods/36324/?

Thanks for that.
Link to comment

Good news - I have managed to make a code that swaps item meshes. It is still very rough, so I still need to keep working on it though. Hopefully in few days I can upload the very first working version, which will swap Iron Cuirasses on women (and other items provided you add them).

 

What is the file structure you chose? Because of the current stock item replacers I thought that using armor_BODYSTYLE_[TOP/BOTTOM]SIZE and clothing_... foldernames would be easiest way to - but also the messiest. Currently I have every same kind of armor in a same folder with identifiers in filename e.g. cuirass_HGEC_E.nif

Link to comment

Good news - I have managed to make a code that swaps item meshes. It is still very rough, so I still need to keep working on it though. Hopefully in few days I can upload the very first working version, which will swap Iron Cuirasses on women (and other items provided you add them).

 

What is the file structure you chose? Because of the current stock item replacers I thought that using armor_BODYSTYLE_[TOP/BOTTOM]SIZE and clothing_... foldernames would be easiest way to - but also the messiest. Currently I have every same kind of armor in a same folder with identifiers in filename e.g. cuirass_HGEC_E.nif

Well done, you've got a lot further on than I have!

 

My proposed file structure ATM is this:

Meshes
	\SetClothing
		\<Body Style>
			\Armor
				\etc
			\Clothing
				\etc
			\<Mod Added>
				\etc

Body Style Codes/Folder Names

1st part - waist seam:
	HGEG
	DMRA
	TGND
	RATH:		Roberts Slender Athletic/Muscular Athletic/Breeze Defined
	RBELLY:		Roberts Belly/Bodybuilder
	RBOY:		Roberts Boy1/Boy2/Boy Athletic
	RBULKY:	Roberts Bulky/Heavy Muscular/mMB
	RMUSC:		Roberts Average/Muscular
	RSCRAWNY:	Roberts Scrawny


2nd part - size/style
	upper body
		Female
			Cup Size (A, C, E, H, DM, etc.)
		Male
			leave blank/build

	lower body
		Female
			Hip size (S, M, L, LL, RA, etc.)
		Male
			leave blank/Penis size (S, M, L, etc.)

Which results in a typical mesh file path for a HGEC E-cup chainmail cuirass of:

data\meshes\setclothing\HGECE\armor\chainmail\f\cuirass.nif.

Hands are treated as part of the upper body, while feet are treated as part of the lower body.

The idea was to simplify the addition of new body styles from existing clothing replacers (and ATM it doesn't quite do so) - you would just have to create a new folder under 'data\meshes\setclothing\' and drop your chosen replacer's 'armor' and 'clothing' folders into it.

Then update the ini file with the details of your new replacer.

 

Unfortunately, as it is set up now, you would need to sort the upper body and lower body meshes into two separate file structures.

 

One thing I'm now considering is a revised body style coding that combines upper and lower bodies into a single code:

HGECAS - HGEC A-cup small hips
HGECCM - HGEC C-cup medium hips
HGECEL - HGEC E-cup large hips
HGECHLL - HGEC H-cup extra large hips
DMRA - DM (upper) RA (lower)
DMRABDM - Hirdamanapulus BDM upper (adapted to DMRA waist), CLS-14 lower
TGND - TGND upper & lower

The idea being actors get assigned two separate body style codes, one for the upper body, and one for the lower.

 

One thing I've been considering is the handling of incomplete replacers - my idea if to have an stringmap array using the body styles as keys, for each bodystyle that doesn't have a complete set of replacement meshes we have an entry in the array that lists which body style to default to.

So arBodyDefault[HGECAS] would be "HGECCM".

Link to comment

At least somebody planing a setclothing mod  :) .

I will support this with meshes for bodys that have no replacer (currently working on the HFB Cups, shame on me to give these meshes to movomo  :@ )

 

I have some questions about the folder structure, because I don't want to this fu...boring folder structure twice  :-/ .

 

...

data\meshes\setclothing\HGECE\armor\chainmail\f\cuirass.nif.

Hands are treated as part of the upper body, while feet are treated as part of the lower body.

...

 

do we really need the .../f/.. folder?

just asking because some armors just got a male version (vanilla) e.g. steel... doesn't this causes issues for these? or will you simply add female versions to them?

 

2nd questions is do you want the gloves in the upper or lowerbody folder? Cause for HFB the foot and hands the same like HGEC (in setbody) its not the problem to make some extra cool boots and gloves for them, but if I make them I guess there will only be one version for all Cups.

 

cheers.

Link to comment

SetClothing version 1 alpha.7z

 

This is a very basic test version of SetClothing. Currently it only checks meshes for female bodies and clothes WHEN THE GAME IS LOADED. Requires OBSE, Blockhead & suitable skeleton for meshes.

 

Before testing this mod it is recommended to make a save in Imperial City's A Fighting Chance, as Rohssan fills these conditions. The mod comes with HGEC upper bodytypes A and F. Also, Iron Cuirass of size E from EVE HGEC Eyecandy Variants Expansion is included. The bodies are set in order of A, E, F. Therefore A<E<F in terms of size, so Rohssan's armor should update only if A-size was chosen for her as E is too small for F-size chest. NOTE: If cuirass was updated, you will need to return to the main menu if you want to reset the change.

 

Imperial City's Market District is good place to test this mod's Autosetbody section.

 

Please be aware that this mod isn't yet optimized in terms of performance. Saving is not recommended.This mod is incompatible with SetBody.

 

Next version should have cycling system implemented.

Link to comment

 

One thing I've been considering is the handling of incomplete replacers - my idea if to have an stringmap array using the body styles as keys, for each bodystyle that doesn't have a complete set of replacement meshes we have an entry in the array that lists which body style to default to.

So arBodyDefault[HGECAS] would be "HGECCM".

 

 

I made automatic function for this. Please check it out.

 

 

do we really need the .../f/.. folder?

just asking because some armors just got a male version (vanilla) e.g. steel... doesn't this causes issues for these? or will you simply add female versions to them?

 

2nd questions is do you want the gloves in the upper or lowerbody folder? Cause for HFB the foot and hands the same like HGEC (in setbody) its not the problem to make some extra cool boots and gloves for them, but if I make them I guess there will only be one version for all Cups.

 

cheers.

 

The basic path for oblivion vanilla mesh is e.g. meshes\armor\iron\f\cuirass.nif

 

Easiest way to use different meshes is to make a simple edit in this filepath, for example the first version I posted looked for that ".nif" part and attempted to switch it to "_BODYSTYLE_UPPERSIZE.nif". In that sense, the answer is yes, we do need it.

 

For gloves, I doubt there will be many types for one bodyset. Depending on a folder structure, my opinion is just to add that HGEC/DMRA/etc. in somewhere there. I'm not yet sure if this should be in foldername or in filename.

Link to comment

 

One thing I've been considering is the handling of incomplete replacers - my idea if to have an stringmap array using the body styles as keys, for each bodystyle that doesn't have a complete set of replacement meshes we have an entry in the array that lists which body style to default to.

So arBodyDefault[HGECAS] would be "HGECCM".

 

I made automatic function for this. Please check it out.

 

Well done! Puukkeli, you beat me to it! I'm going to check this out now!

 

 

do we really need the .../f/.. folder?

just asking because some armors just got a male version (vanilla) e.g. steel... doesn't this causes issues for these? or will you simply add female versions to them?

 

2nd questions is do you want the gloves in the upper or lowerbody folder? Cause for HFB the foot and hands the same like HGEC (in setbody) its not the problem to make some extra cool boots and gloves for them, but if I make them I guess there will only be one version for all Cups.

 

cheers.

 

The basic path for oblivion vanilla mesh is e.g. meshes\armor\iron\f\cuirass.nif

 

Easiest way to use different meshes is to make a simple edit in this filepath, for example the first version I posted looked for that ".nif" part and attempted to switch it to "_BODYSTYLE_UPPERSIZE.nif". In that sense, the answer is yes, we do need it.

 

For gloves, I doubt there will be many types for one bodyset. Depending on a folder structure, my opinion is just to add that HGEC/DMRA/etc. in somewhere there. I'm not yet sure if this should be in foldername or in filename.

 

Well, my idea was to mimic the standard Oblivion folder structure for meshes, just adding "\setclothing\<bodystylecode>" before the "\armor", "\clothing" or, in the case of many mod-added clothing/armor "\<whatever>", so that new replacers could be just dropped in. the chainmail cuirass file path I gave was just an example. Most (but not IIRC all) vanilla clothing or armor meshes include the "\f" and "\m" folders - but (for example) the wizard robes do not. Mod-added apparel can have whatever file path it's author decided to use.

 

2nd question: Well, it depends how Pukkeli set it up, and I'm going to be testing this tonight (I hope), but if you include replacement gloves or footwear in your replacer, then they will only apply to the body style that replacer is set to.

 

I have been working on building up a library of replacers, I just need to get permissions to use some of them. Junkacc kindly gave their permission to me to use their seamless textures

Link to comment

 

Well, my idea was to mimic the standard Oblivion folder structure for meshes, just adding "\setclothing\<bodystylecode>" before the "\armor", "\clothing" or, in the case of many mod-added clothing/armor "\<whatever>", so that new replacers could be just dropped in. the chainmail cuirass file path I gave was just an example. Most (but not IIRC all) vanilla clothing or armor meshes include the "\f" and "\m" folders - but (for example) the wizard robes do not. Mod-added apparel can have whatever file path it's author decided to use.

 

 

This might still be a way to go. Appending something in front of a filepath is very easy and that provides compatiblity with current replacers. For EVE as an example, extract the .OMOD, move folders to right place and rename them correctly. This might cause a bit of mess, so I don't know if

 

SetClothing\(F|M)\BODYSET\(Armor|Clothes)_(UPPER|LOWER)BODY\...

 

is better than

 

SetClothing\(F|M)\BODYSET\(Armor|Clothes)\(UPPER|LOWER)BODY\...

 

What ever I made in the first version can be changed with a relatively low effort. Renaming dozens of current replacer meshes... not so.

 

 

I have been working on building up a library of replacers, I just need to get permissions to use some of them. Junkacc kindly gave their permission to me to use their seamless textures

 

That is good news. Those look promising but I haven't yet tried them.

Link to comment

ok, so I use the vanilla folder structure and save the female meshes in the \setclothing\<bodystylecode>\armor\whatever\m folder if there is no female mesh.

 

the 2nd question was cause I want to know if I have to build the greaves to fit the boots that is used for the 'original' boots in case for HFB this would be the HGEC Boots, and from what I've done now some of the greaves would clip through the HGEC boots (and also the vanilla one). Can be fixed easy but have to be done.

...

What ever I made in the first version can be changed with a relatively low effort. Renaming dozens of current replacer meshes... not so.

...

this is the intension of my question cause I have the armors from amber to dwarven ready for export for HFB B,C,D and H (only saved for blender now),  greaves and E Cup are all done (and exported). So when I start with exporting those I want the right folder structure.

 

cheers.

Link to comment

 

 

I don't think you'd need the "\(F|M)" at the front, I'd expect body sets to only apply to either males or females.

What I've been working on is a file path of:

 

Meshes\SetClothing\(bodysetcode)\(Armor|Clothes|Other)\(armourname|clothesname)\(f|m)\(meshname.nif)

or, for upper/middle/lower classed clothing

Meshes\Setclothing\(bodysetcode)\Clothing\(lowerclass|middleclass|upperclass)\(01-0x)\(f|m)\(meshname.nif)

 

So all you have to do is add "SetClothing\(bodysetcode)\" at the beginning of the mesh file path.

 

That is the way to go then. I agree those those F/M subfolders are obsolete. They were left off when I began designing the code. I thought what if males and females had the same name for a bodyset (e.g. "Roberts"?). This thing might still come across, so I think I should rename bodymeshes back to femaleupperbody_N etc. BODYSET.txt explained below don't support this idea yet, though.

 

My overall recommendation for folder structure is

 

meshes \ SetClothing \ BODYSET \

Common \

GENDERfoot.nif

GENDERhand.nif

Upperbody \

GENDERupperbody_N.nif

(etc.)

Lowerbody \

GENDERlowerbody_N.nif

(etc.)

armor_N \ (one for each upper/lower N to be had)

amelionceremonial \ ...

(etc.)

clothes_N \ (one for each upper/lower N to be had)

lowerclass \ ...

(etc.)

BODYSET.txt (this file defines which bodyparts and items are used, as already featured in the first version)

Mod Settings \ SetClothing \

SetClothing.txt

 

Is this ok for everyone? Everything after armorN and clothesN would follow the vanilla Oblivion file structure to provide relief for modelers & compatiblity for current replacers. I put general settings to that "Mod Settings" folder because these really aren't .inis... and that common ini-folder is anyway usually cluttered with a lot of stuff (especially from LAPF). This can be changed if vocal mayority don't agree with me.

 

EDIT:

 

armor_N/clothes_N split is bad as it will feature more specific searching. This could be solved with replacer_N subfolder where those armor and clothes then are:

 

... \ replacer_N \

armor \ ...

clothes \ ...

Link to comment

SetClothing version 2 alpha.7z

Requires OBSE, Blockhead & proper skeleton

Some skin textures also recommended

 

This version provides now support for both female upperbody and lowerbody replacers and should run all the time. Detected characters are saved for the changes to remain, but be wary as this system is still in very early state and every met NPC will cause bloat in savefiles. Therefore it is not recommended to use this version with your main save.

 

This version still uses Update3D as working around it isn't the highest priority yet. Let's just say that until then those flashing character updates mean that this mod works.

 

Alpha version 2 includes HGEC upperbodies A, C & E and lowerbody M. No cloth replacers provided, but I will tell you how to easily enable EVE to work with this mod:

 

 

1) Download latest EVE OMOD: http://www.nexusmods.com/oblivion/mods/24078/?
2) Add it to Oblivion Mod Manager
3) Right-click the OMOD and click "View Script"

4) Overwrite everything with the following script (It is on your responsibility to make a backup for original script if you so desire)

;** Installation script for EVE HGEC Stock Equipment Replacer for SetClothing Alpha 2**



;** Requirement Check for OBMM **
If VersionLessThan 0.9.26
   Message "This mod must be installed by OBMM version 0.9.1 or later to prevent install script errors."
   FatalError
EndIf

;** Requirement Check for Oblivion 1.2.214 or higher **
IfNot OblivionNewerThan 1.2.213.0
  Message "This mod requires Oblivion 1.2.214 or higher. Please download and install the official patch."
  FatalError
EndIf

AllowRunOnLines

DontInstallAnyDataFiles
DontInstallAnyPlugins

; Copy equipment replacers to right place
CopyDataFolder "Equipment Replacer Upperbody HGEC Normal E-Cup\\Meshes" "Meshes\\SetClothing\\HGEC\\Replacer_E" True
CopyDataFolder "Equipment Replacer Upperbody HGEC Normal C-Cup\\Meshes" "Meshes\\SetClothing\\HGEC\\Replacer_C" True
CopyDataFolder "Equipment Replacer Lowerbody HGEC Normal\\Meshes" "Meshes\\SetClothing\\HGEC\\Replacer_M" True

Return

; Script by Gudwyn.
; Modified for use in EVE HGEC Body Selector and Stock Equipment Replacer by Grhys
; Later modified for to use with SetBody

5. Close Script editor and save changes when prompted

6. Activate the OMOD

 

 

 

EVE includes only upperbodies C&E, so the difference isn't that remarkable as I would like it to be. This is something I can't affect, but you could, for example, fill one replacer folder with totally different looking meshes.

Link to comment

This...this is soo beautiful....

 

I was actually trying to work on something like this as well.... But I'm an amateur modder with no mods to my name as of yet.

 

I'd like to check out your mod and see how it compares to my own ideas.... probably better than mine.

I'll try and help if I can, at least.

Link to comment
  • 3 weeks later...

Archived

This topic is now archived and is closed to further replies.

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. For more information, see our Privacy Policy & Terms of Use