Now obviously the use of 3dsMax is no picnic, so it is very conceivable this won't make much sense to you the first time you try and you will be fiddling with the controls quite some. Be bold!
If you encounter start-up issues, give it some time. Look up some more advanced tutorials etc. What I'm about to put down here will be extremely basic and will expect you to take initiative in getting to know the program.
Getting startedDepending on the source, your hairstyle will have a certain extension. Start by installing the 3ds Max Nif Importer-Exporter (Bethesda) and the ActorX Importer AND exporter for 3dsMax 2012(Mass Effect).
Note: I am using Bethesda files as an example, but any mesh works on the same principles. The nif importer plugin only works for 3DS versions 2012 or below.
Once you've started up 3ds this is what you will see. I advise you click and watch the first link in the startup screen, it's only a few minutes worth of video.
What we're going to do first (though this is completely optional) is revert to one viewport instead of the standard four. Go to view, viewport configuration, layout. Click the first option, apply, ok.
Let's import a model. Seeing as we're looking into editing hair, how about we grab the female head from ME3, we'll need it to align new hair to later. To make this easy I've uploaded the file here.
This is a psk file, so we'll need to use the ActorX importer you installed.
Go to MaxScript in the top navigation bar, select run script in the dropdown menu. Browse to the location where you saved ActorXImporter.ms, select it and hit open.
Import PSK... and browse to the location where you saved the female head, select it and hit open. You'll be treated to a top view of the model.
Try moving around the mesh. You can click and hold the left mouse-button to drag your screen and use the scrollwheel to zoom in and out when the viewport is active. In the top right corner of the viewport you'll see a cube that lists all faces, click the faces to snap to them or hold and drag on a corner to rotate and tilt manually. With the wheel under the cube you can rotate view. Try clicking next to the head to deselect it and then re-selecting it and play with the rotation and zoom controls. Take some time to get familiar with it =)
In the top left corner of your viewport you'll notice it says [Top][Realistic], click on them to change them (personally I use [Perspective] but vary on the second). You can try different ones and see how they affect the model.
Before we continue past this section, change your view/position to something similar to this:
Picking a hairstyleAs we've installed an importer for nif files we're going to limit search to Bethesda game mods. This would include Skyrim, Oblivion, Morrowind and the Fallout Series. Most of these mods use ported hairstyles that originate from other games, most commonly the Sims franchise. Conveniently, you can browse the Nexus sites for these games to check available mods.
Fallout New Vegas Nexus
I'm going to use the Skyrim ApachiiSkyHair Pack for purpose of this tutorial. Specifically I'll be working with hairstyle number 21 which is a long female hairstyle with a braid and ponytail. Download whichever hair you want to work with, or use the same one I'm using if that's easier for you.
Importing and editingFiles with the .nif extension you can import using 3dsMax's import function. Click the 'start' icon in the topleft corner on the navbar and simply pick Import.
Browse to the location of the mesh you want to import and select the correct file, in my case that's: ..\ApachiiSkyHair_v_1_5_Full-10168-1-5-Full\ApachiiSkyHair_v_1_5_Full\Data\meshes\actors\character\character assets\hair\apachii\female\hair21.nif
Now on the popup window for nif import, uncheck Import Skeleton and hit Import. Your viewport will now realign itself with the newly added mesh! It should show up screen-filling. If you're wondering where the head mesh went, select your viewport and scroll to zoom out:
Now there are several things to note here. The orientation of the mesh is important! As we are modding Mass Effect, the hair needs to be aligned with the position of the head.
Note: The difference between location of the hair and head completely depends on which game the hair was meant to work with. If you for instance port Sims hair, it's conceivable the initial location is different from what I'm showing you here.
Select the hair and on the right side of your interface, you'll notice it says skin, above editable mesh.
Right-click and select delete in the dropdown menu.
Note: If you'd rather not reskin from scratch and are working with a Mass Effect mesh, right-click and select cut in the dropdown menu instead. You can paste it back in when you're done editing the mesh.
Navigate around the meshes to get a better view of their position relative to each other. As you can see, the hair is:
1. too small in comparison to the head
2. facing the wrong way
3. at the wrong height
What I've noticed is that when you scale up a mesh, it will automatically move up. So we're going to tackle these three discrepancies in the order they are listed to make sure we don't do unnecessary double work.
To scale up the hair, select it by left clicking it, right-click to open the drop-down menu and select Scale. Your cursor will change icon to a tiny triangle. Now in the viewport ontop of the hair mesh, left-click and hold while moving your mouse up, you'll notice the hair will both scale up and move up simultaneously.
Now to rotate the hair, select it then right-click to open the drop-down menu and select Rotate. Left-click and hold on the mesh and move your mouse to the left or right to rotate.
To move it along the X/Y/Z axis, select it then right-click to open the drop-down menu and select Move. You can try to reposition the mesh with your mouse but I would advise using the X/Y/Z boxes at the bottom of the viewport. There are little arrows next to the input boxes so you can easily move along any axis in small increments.
Use all three (Move, Rotate, Scale) to reposition the hair until you are happy with it's location. You'll want to rotate your view often so you can check for clipping issues more easily (note the ears) and to see how big the gap between the hair and the skull is at several points.
Note: You shouldn't touch the location of the head. If you accidentally move it at any point revert with control-z or select the headmesh, right-click and select move in the drop-down menu, then enter 0 (zero) for X,Y and Z on the bottom navbar.
On my example below you can see I switched to [Perspective][Realistic], as it emphasizes the shadows nicely on the edges of the mesh, so I can easily see the distance between elements. Note how nicely the mesh wraps around the ear. This isn't always the case, I'll cover repositioning of individual elements below this section.
Having done what you can just moving and rescaling the entire mesh, it's time to rework individual parts to fit around the head better.When you have the mesh selected you'll notice on the right of the viewport the selection menu is visible. At the top it shows icons for five ways of selecting parts of your mesh. Vertex, Edge, Face, Polygon and Element. For now select Element. When you click through the various parts of the mesh, you'll notice entire strands lighting up bright red as you select them. You can move them over any axis using the arrows that show up in the middle of the selected element.
vertex under selection to move the vertices. This way you don't run risk selecting vertices on different elements than the one you're looking to alter. You can select multiple points by either left-click dragging your mouse over an area or by clicking individual elements while holding control.
If you would like to push or pull an entire area of the mesh out, you can do this by using soft selection. The number belonging to falloff under Affect Backfacing determines how much of the surrounding area is affected. You can see how big the area affected is when you pick vertex under selection. The colour the vertices of the surrounding area determines how much they are influenced.
Here I'm using Polygon selection to push in an area of the mesh closer to the skull, closing the gap by using the y axis arrow. I'm using a Falloff of 5. This is trial and error depending on the area you want affected. Result is on the right.
Texturing your mesh
Adding a diffuse and normalSome might prefer to edit meshes with it's textures applied so I'll add a little section on how to do this. While having your mesh selected press M. This will open up the Slate Material Editor. Double-click your mesh name under Scene Material (1), this will open up the Navigator and fill View1. You'll want to move the active area in View1 via the Navigator (2), position it so the red/green blocks are visible. Now in View1, double-click on the top box (3) that has "textures" and "bitmap" in the name. This will open up the Bitmap Parameters (4). When you click on the texture path right under the header, this will open a file-picker (5). Browse to the textures that came with the mesh download. In the case of my hair the path would be:
Once selected, you'll notice the little icon in View1 changed, but no textures are applied to the mesh yet. Now, double-click the box that has "Norm" in the name from View1. Click the texture path behind "Normal:" in the Parameters box. This will open another menu in the same area that looks exactly like the one you just saw for the first texture (4). Again, click the texture path directly under Bitmap Parameters and browse to the texture location. This should be the same as the first one, and it should default to that location now. You should now see the texture applied to your mesh!
Adding a working alphaOpen up the Material Editor again with M. Double-click the main box, select Blinn in the dropdown menu under Shader Basic Parameters and check 2-Sided.
On your diffuse texture box, check Image Alpha under Alpha source (1). Select the box for the diffuse texture, hold shift and drag and drop to duplicate it (2).
Click and drag the bubble on your duplicate diffuse (6) and connect it to the bubble on the ColorCorrection box (7). Now connect the other bubble on the ColorCorrection box (8) to the bubble on the main box next to Opacity (9).
Weighting your mesh
BasicNow for the fun part. Remember when we removed the skin at the beginning of this tutorial? We'll be adding it back in now.
It's function is weighting the mesh down according to the bones your mesh is linked to.
You can use whichever mesh you plan to replace ingame and take it's bones for your project. This way the mesh will import without issues and cause no crashes ingame.
The game can become unstable when the number of bones on the mesh you are replacing isn't equal to your new mesh and meshplorer currently does not allow it anymore and will throw an error. Knowing that, use either the human skull, any of the CC hairstyles or for instance Allers hair to steal bones for your weighting dependent on which mesh you plan to replace ingame.
Now on most hairstyles we can simply add a 'head' bone that will automatically affect the entire mesh.
This means that when the characters' head animates, the hair will move with it at the same angle. This is fine for short bobs and updo's but can cause clipping on longer styles. It's also adequate for testing purposes, as we'll need to go ingame a couple of times and test out our hair and subsequent changes on (an unwilling) Shep.
Select your mesh. Above Editable Mesh on the right of the viewport you'll notice it says Modifier List with a dropdown arrow. Click it and type in "skin". This will jump you down, select Skin there. Now under Parameters press the Add button next to "Bones:", highlight Head in the popup window and press Select.
To actually see what just happened, press Edit Envelopes right under Parameters, you'll see the entire hair mesh turn bright red. Red indicates that it is fully affected by the selected bone, which in this case is the Head bone. You'll notice it also displays the actual bone inside of the mesh with axis arrows attached to it.
IntermediateUsing skin-wrap we can copy the weights of another mesh onto the one we've created. In terms of meshes that generally have the same shape and are not horribly complex, this method will do nicely.
What we want to do is find an existing mesh that has about the same length, let's say.. Allers hair. To make this easier, I have uploaded the hairstyle here.
As explained earlier, psk files are opened through the ActorX Importer under MAXScript, Run Script. Import the hair you just downloaded. Now select your own mesh. In the Modifier List type in "skin" and select Skin Wrap.
Under Parameters, you'll see an empty box with an Add button below it. Click it and select the other mesh. In this case it should add HMF_HIR_PROJessica_MDL to the previously empty box now.
Click Add again to remove the highlight, make sure Weight All Points is checked, then click the Convert To Skin button at the bottom of the Parameters box. You'll now have skin and skin wrap listed above editable mesh, you can remove skin wrap.
AdvancedFor the masochists among us, manual weighting explained in short. I want to use the bones that come with the Allers mesh, so I'll be opening that one again and deleting the hairmesh. As before, ActorX Importer under MAXScript, Run Script.
We'll add the Skin modifier, then add two bones to the envelope: Head and LeftCollar.
Select Skin above Editable Mesh, In the list of Bones, select Head. Click on Edit Envelopes so you can see which area of the mesh the bones affect. As you might have noticed, the Head bone affects the entire mesh, we'll want some of the lower parts affected by the Collar-bone so we minimize clipping, so select LeftCollar now. See where the bone is? Right on our ponytail.
Scroll down to Weight Properties and uncheck Paint Blend Weights. Now you'll see a little wrench-tool icon there, click on the Paint Weights button right under it. When you move your mouse over the mesh now, your cursor will change. There are two ways we can adjust the brush: in size and strength/opacity. To adjust the size, hold control and shift while you drag and hold your left mouse-button up or down. You'll notice the brush changing size and it affecting the displayed radius number. To change the strength of the brush, hold shift, control and alt while you drag and hold your left mouse-button up or down, you'll notice the value for strength changing.
Now let's paint some weights! Red is fully affected, yellow less so, blue etc. A softer brush will allow you to create smoother transitions. You can switch between head and leftcollar if you make a mistake. You'll notice that whichever area you painted over on the leftcollar is now reflected on the head. Aim for something like this:
Exporting and testing your mesh ingameFirst, delete the head mesh out of your project, you can leave the bones. Just select the head and hit delete. Now to export your hair, click the utilities tab on the right navbar.
Click on More..., select ActorX and hit OK.
This will open an export menu in the right navbar. Select an output folder and type in a name for your mesh. Scroll down and uncheck bake smoothing groups, now you can hit Save mesh/refpose.
Now watch the following tutorial by WarrantyVoider for the remaining steps on how to get your mesh into the game. For reference, the PCC files containing the hair are as follows:
BIOG_HMM_HIR_PRO_R.pcc (male) and BIOG_HMF_HIR_PRO.pcc (female)
Note: Do NOT skip a step when importing and saving va the UDK. You will need your mesh to be a UPK package, not a PSK when you import into the game via ME3Explorer.
Converting the hair textureI use photoshop for this. As Mass Effect uses it's own system for the recolouring of hair to conform to CC colours, you'll need to convert your texture to work correctly in the engine.
There's a simple way of doing this. Open the texture in Photoshop, add a new layer and paintbucket it #008e00. Now doubleclick the layer and select Multiply as the blend mode.
Save as a DDS: DXT5 with integrated alpha. If you can't you're probably lacking the plugin, you can get it here =)
To create a texmod .TPF for the hair, the identifier to replace the deprecated ME2 custom cute hair textures is 0x487289A3. For a tutorial on creating a texmod .TPF, check here.
To use the custom cute textures on the Shep that's testing the Mesh, use Gibbed and change the texture values for Hair_Diff and Hair_Mask to BIOG_HMF_HIR_PRO.Hair_Short02.HMF_HIR_PROShort_Diff
Note: If you have any transparency issues ingame, you'll have to check the alpha channel on your texture. It might be that the contrast is too low and your white's not really white in which case the game will make the entire hair slightly transparent.
Troubleshooting texture problemsWhen you go ingame to check your mesh, there are several potential problems with mesh-imports that aren't always easy to spot in 3dsMax.
This picture shows the first I want to cover nicely. This weird lighting issue you are seeing has to do with duplicate strands overlaying eachother in the mesh. There are a few tricks to spotting these early and ways of fixing the issue.
In 3dsMax, when you have enabled the alpha texture layer, you might have noticed a weird transparency issue with some of the elements. It's easy to spot on this particular mesh as the elements are quite large on the top of the head.
If you haven't applied textures at all, switch to [Perspective][Consistent Colors] and you might notice weird blotchy spots on the mesh. It SHOULD be evenly tinted in either white or grey per element.
Thirdly and consistently, when you select the mesh and use the Element selection tool, you'll notice when clicking some strands that they are in fact dark red instead of the normal bright red. I'll emphasize the difference with an image comparison below:
From what I can gather, the darker colour indicates the back of an element. When the back is exposed in Mass Effect 3's engine, the lighting on it sort of inverts itself which causes the weird blackness. It can also cause weird streakyness in thinner strands with alpha transparency. Seeing how some strands will either curl around and reveal all sides from one perspective or show it's back some other way, you'll have to decide on a case by case basis whether to completely remove or simply edit elements when trying to fix this issue.
Simply click on an element and it will cycle through both overlayed elements. Select the darker red one and hit delete. You'll need to be careful you don't create any bald spots while deleting strands.
Also check out the following method of dealing with these strands by andrastessanctifiedgirdle on Tumblr who explains how to easily flip them as an alternate to deleting or moving them.
If you still see some areas of the hair ingame where the strands don't look right, make a couple of screenshots so you know where this is happening and go back into 3ds.
In much rarer cases you'll notice that when you pull a strand out, it will be weirdly connected and stretch another strand as you pull! Control select the second strand as well, then pull them both further out. You'll want to switch from element to polygon selection and select those stretched bits and delete them. They are sometimes connected to another normal strand but not always, if they are let the normal elements be.
Note: Save your project as a max file, so you preserve the skin and weighting settings between exports. This will be better to load in inbetween small edits then working with your exported mesh.
Have fun and good luck =)