[dismiss]
This wiki is a copy of the original Oblivion CS wiki created and maintained by the UESP.net. See CSwiki:Copy Notice for more info.
Difference between revisions of "Blender/Creature Meshes 101"
Jump to navigation
Jump to search
m
no edit summary
imported>Fragment m |
imported>Fragment m |
||
Line 1: | Line 1: | ||
'''DO NOT EDIT OR DELETE THIS PAGE, I'M KEEPING THE SOURCE AT HOME IN MY EDITOR FOR NOW!''' | '''DO NOT EDIT OR DELETE THIS PAGE, I'M KEEPING THE SOURCE AT HOME IN MY EDITOR FOR NOW!''' | ||
{| style="background:#ffff55;" | |||
|'''DO NOT ATTEMPT THIS YET''' | |||
The process described here still has bugs, and I want to spare you the frustration! | |||
|} | |||
Place comments/questions/bugs on the discussion page, please. | Place comments/questions/bugs on the discussion page, please. | ||
Line 116: | Line 123: | ||
We actually just deleted all havok data. Oops! But as we're not going to use any of it directly in the game later, it will be OK. The problem is, Blender will not be happy with just the naked bones - there must be a skin they're attached to. | We actually just deleted all havok data. Oops! But as we're not going to use any of it directly in the game later, it will be OK. The problem is, Blender will not be happy with just the naked bones - there must be a skin they're attached to. | ||
[[image:tutcre101-scrn-copybranch.gif|right|thumb] | [[image:tutcre101-scrn-copybranch.gif|right|thumb]] | ||
So, what we need to do now is to ''copy the relevant skin mesh into the .nif''. .nif files store the bare meshes as NiTriShape or NiStripShape. We find that mesh, and then copy the required mesh into the cleaned skeleton. | So, what we need to do now is to ''copy the relevant skin mesh into the .nif''. .nif files store the bare meshes as NiTriShape or NiStripShape. We find that mesh, and then copy the required mesh into the cleaned skeleton. | ||
Line 151: | Line 158: | ||
* save the file as cleanskel.nif | * save the file as cleanskel.nif | ||
{| width="30%" align="right" style="background:# | {| width="30%" align="right" style="background:#ffccaa;" | ||
|'''DEBUGGING''' | |'''DEBUGGING''' | ||
Line 259: | Line 266: | ||
This will take a while ... leave no vertex out, and do not assign more than 4 bones to one vertex. You cannot really break something otherwise, and errors you make here will teach you a lot. Go and make some errors. It'll sometimes be funny, too! | This will take a while ... leave no vertex out, and do not assign more than 4 bones to one vertex. You cannot really break something otherwise, and errors you make here will teach you a lot. Go and make some errors. It'll sometimes be funny, too! | ||
* save, I saved as " | * save, I saved as "goatbones.blend", as we entered a new state of the process | ||
You can export your work now and look at it in NIFskope. The vertices you missed are drawn to the base of the world, which is luckily not that far away - in NIFskope. | You can export your work now and look at it in NIFskope. The vertices you missed are drawn to the base of the world, which is luckily not that far away - in NIFskope. Below is an image with 4 errors I made in my weight paint job. They're a little hard to discern, because we assigned no material yet. | ||
* from the menu, choose File>Export>NetImmerse/Gamebryo, export as | [[image:tutcre101-scrn-nif4errors.gif]] | ||
* open | |||
* from the menu, choose File>Export>NetImmerse/Gamebryo, export as goatbones.nif | |||
* open goatbones.nif in NIFskope and check for errors | |||
* correct errors in Blender, go back to step one until happy | * correct errors in Blender, go back to step one until happy | ||
* don't forget to save the corrected work in Blender | * don't forget to save the corrected work in Blender | ||
You cannot yet put the model into the CS, as we miss a UV map. | You cannot yet put the model into the CS, as we miss a material and a UV map. | ||
=== UV mapping the model === | === UV mapping the model === | ||
Line 279: | Line 288: | ||
We're going to do a quickie with that one, as the making of a full blown UV map using multiple material IDs and whatnot should be the very last step. At least the model should be finished. Redoing the UV map later when the texture is already finished is going to be a real pain. | We're going to do a quickie with that one, as the making of a full blown UV map using multiple material IDs and whatnot should be the very last step. At least the model should be finished. Redoing the UV map later when the texture is already finished is going to be a real pain. | ||
[[image:tutcre101-scrn-openuv.gif|right|thumb]] | |||
[[image:tutcre101-scrn-selectuvface.gif|left]] | |||
* here's the test I mentioned above: split the 3d viewport window, and set the window type to UV/Image Editor - check back with the Noob to Pro manual if you didn't grok that :) | * here's the test I mentioned above: split the 3d viewport window, and set the window type to UV/Image Editor - check back with the Noob to Pro manual if you didn't grok that :) | ||
* in object mode, select the mesh | * in object mode, select the mesh | ||
* switch to UV Face Select mode, all faces should be selected | * switch to UV Face Select mode, all faces should be selected | ||
* move mouse to the UV editor, | * move mouse to the UV editor, from the bottom menu select UVs>ArchiMap UV Projection Unwrapper, let him at it (click OK) | ||
* from the bottom window menu, UVs>Save UV Face Layout ..., | * from the bottom window menu, UVs>Save UV Face Layout ..., make sure "Ob" is off, OK, name it goat | ||
The result is | The result is a nearly unusable UV mapping. We don't care one bit - for now. With the last step we also created a simple texture file, goat.tga. ''Now we assign that to our model:'' | ||
* in the buttons panel, select shading buttons (or hit F5) | * in the buttons panel, select shading buttons (or hit F5) | ||
* click " | * click "Add New" in the material tab | ||
* in the texture tab, click add new | * in the texture tab (look right), click add new | ||
* in the map input tab, click UV | * in the map input tab, click UV | ||
[[image:tutcre101-scrn-selectimage.gif|left|thumb]] | |||
* select texture buttons (F6) | * select texture buttons (F6) | ||
* set texture type from none to image | * set texture type from none to image | ||
* in the newly appeared image tab, click load image, select | * in the newly appeared image tab, click load image, select goat.tga | ||
* export to goatbones.nif: Menu File|Export|NetImmerse/Gamebryo | |||
* don't forget to do a regular save | |||
And we're done here: | |||
* quit Blender | * quit Blender | ||
Line 308: | Line 326: | ||
Done! | Done! | ||
LONG, PAINFUL, DRAWN-OUT PROCESS: | LONG, PAINFUL, DRAWN-OUT PROCESS: | ||
All about '''useful''' UV mapping can be read [http://www.scifi-meshes.com/forums/dojo/1755-blender-faint-hearted-08-uv-texture.html here]. | |||
Now let's move back to NIFskope. | Now let's move back to NIFskope. | ||
Line 325: | Line 342: | ||
If, on pasting the new mesh into the old file, you get an error message ''failed to map parent link "NiNode|oursheep"'' not all of the vertices are weighted. Go back to weight painting. | If, on pasting the new mesh into the old file, you get an error message ''failed to map parent link "NiNode|oursheep"'' not all of the vertices are weighted. Go back to weight painting. | ||
The message "failed to map parent link "NiNode|Bip01 Spine1 Bone10" on pasting means that the bone you weight painted to does not exist in the skeleton. That's not your fault, but you have to go back to weight painting and disconnect any such bone. | |||
Ignore ([X]) the message: infinite recursive link construct detected. | |||
|} | |} | ||
* open the sheep.nif in oblivion\data\meshes\creatures\oursheep folder, where we made ourselves a home some time before | * open the sheep.nif in oblivion\data\meshes\creatures\oursheep folder, where we made ourselves a home some time before | ||
* in NIFskope, select File>New Window | * in NIFskope, select File>New Window | ||
* in the new window, load | * in the new window, load goatbones.nif | ||
* open NiNode 0 and Ninode 1, there you see the skeleton NiNode and the NiTriShape node | * open NiNode 0 and Ninode 1, there you see the skeleton NiNode (number 2) and the NiTriShape node (number 47) | ||
* right-click the NiTriShape node, Block>Copy Branch | * right-click the NiTriShape node, Block>Copy Branch | ||
* switch to the other NIFskope-Window | * switch to the other NIFskope-Window with the skeleton | ||
* Right click the Scene Root, Block>Paste Branch | * Right click the Scene Root, Block>Paste Branch | ||
* OK the version alert box, [ | * OK the version alert box | ||
* Read the debugging box to the right | |||
Now we need to parent the new mesh to the Scene Root again, only now we're not going to add something, but replace the mesh. | |||
* In the Block Details (F2) of the Scene Root node, open the children list | |||
* Replace the value 1 (sheep) there with our node number, 45 | |||
Now the old mesh is outside, and our mesh is inside the Scene Root. | |||
* Delete the old mesh by right click>Block>Remove Branch | |||
* Save the .nif as goat.nif in the Oblivion\Data\meshes\creatures\oursheep folder | |||
We're done with the .nif now, and can try to load the goat into the CS, and later into Oblivion. | |||
== CS work: make a quickie mod == | |||
[[image:tutcre101-scrn-csnewcreat.gif|right|thumb] | |||
* open the construction set | |||
* load the Oblivion.esm: File>Data...>mark Oblivion.esm>OK | |||
* select Actors>Creatures>Creatures | |||
* right click in the left pane, select New | |||
* In the new creatures dialog, ID an name "Goat" | |||
* There, click "Add NIF file...", and use the skeleton.nif from the Oblivion\Data\meshes\creatures\oursheep folder, click OK | |||
* In the right pane, a new entry "oursheep" appeared in Actors>Creatures>Creatures, select that | |||
* In the right pane is one entry "Goat", double click that | |||
* From the tabs in the middle, select model list (look right) | |||
* check goat.nif | |||
* save everything before the next move! | |||
* in the right pane, hit preview | |||
... | ... | ||
== Additional NIFskope work: collision boxes == | |||
... | |||
== Texturing quickie == | == Texturing quickie == |