Here's one way to do it:
First, besides the game and the CK, you'll need some more programs. Of course you want to stick to the free stuff.
1: BA2 Extractor - With this you can extract the data archives (materials, textures, meshes, sounds etc.).
2: Material Editor - You'll need this to view, edit or create material .BGSM files. If you do anything with textures, you'll need to edit/create materials.
3: Gimp - for editing/creating textures (or any other graphics program you prefer)
4: Nifskope - This will let you view, edit (limmited) or export .nif 3D mesh files.
5: Blender - For editing the 3D model (or anything else capable of importing/exporting wavefront .OBJ files and .DDS textures)
6: OutfitStudio - This one you'll need to convert .obj files into (FO4 compatible) .nif files *
* = As the niftools plugin for Blender doesn't work properly (and likely never will)
...and my short as possible 'tutorial' (bare bones explanation of all steps involved)
Extract all data you'll need (i recomend all materials,textures and meshes at least, so those will always show up right)
Add the path to the nifskope resource paths (can handle multiple) and Blender (can handle only 1) so you will be able to see and/or edit those.
Following is a description of the 'workflow' needed to get it done. For any specifics on how to use blender, nifskope etc. please refer to their respective tutorials on how to use them.
This explanation assumes some basic knowledge on the subject.
For editing an existing model:
Find/extract the .nif file you wish to edit (you can check the path & filename within CK)
Open it with Nifskope. Check to see if they have textures set. Sometimes they only have a material assigned but these will not export/import so make sure they have textures assigned as well.
Add them if needed. You can do so easily by opening the BGSM file and copy all paths.
To export the entire model, select the main niNode and select: File - export to .obj.
To export a specific BSTriShape (or similar) make sure it has its own niNode parent. If not, add a parent niNode to the shape, select that niNode and export it or crop to selected branch and export that.
Save it to a separate directory to use just for exporting .obj from nifskope, to import into blender.
(something like: MyFO4Mod\WIP\obj\4Blender)
Now open blender and import the .OBJ file. Next you'll need to set the right scale. This might need some trial and error to get it right. My blender is set up for mm and i need to scale each .obj imported from nifskope to 0.1
and set the X axis rotation to 0 instead of 90 dwgrees. If all is set correctly, you should see a textured model. if it's purple, the textures can't be found (is the path right?)
Although it doesn't matter that much, its best to apply these settings (object rotation and scale)
Now you can do whatever you where plannning on doing with the model and/or textures.
Make sure to either immediately or before exporting separate the mesh by material, as that's how nif files are build up.
When ready, export it to a wavefront .obj again, to a separate directory (like: MyFO4Mod\WIP\obj\4OS)
(either everything or just a selection)
When exporting set it to put the Z-axis up, and Y axis forward. Which axis points forward might differ, so check with your original, if you wish to replace something.
Now open up OutfitStudio and choose import-obj to import it (yes, without reference)
and immediately export it to a .nif file.
Sadly, it will disregard the texture info from the .obj file, so you'll need to add those again.
Open the new .nif file with nifskope and remove everything but the main NiNode and shapes. (so, all (empty) materials are gone and the shapes show up grey)
Convert each and every BSSubIndexTriShape to BSTriShape. It doesn't appear to matter (to the FO4 engine) but to be sure it's all the same as any original.
(Note: You can NOT convert it to a BSTriLODShape (Nifskope appears bugged on that part), but that too doesn't seem to matter much)
Now add the correct materials. You can copy those from the original file (copy & paste branch)
If you are using custom materials/textures, this is where you create and add the BGSM file with the appropriate paths (relative to data dir, just like (most) original bgsm files)
Open up the original file (a copy of it anyway), delete all BSTriShapes you wish to replace and copy your new BSTriShapes in it's place.
This to preserve the other settings and most importantly: The collision data **)
Finally put that nif file in a place where the CK / game can find it: somewhere within .\data\meshes under your fo4 installation
Same goes for .\data\materials & .\data\textures (using a 'MyMod' or 'MyName' subdirectory from those points is good practice (eg: .\data\meshes\MyMod)
Open up the CK, find the original model and duplicate it. Open the record and edit the model file to load your new version and give it a proper name.
Note: If it's a workshop item, you'll need to create a recipe etc. and in case of a floor you'll need to navmesh the model!
Now you should be all done and ready to use your new model.
** = Note that it's impossible to edit or create collision data with anything but 3D Studio 2013 + official plugin.
So if you require a different collision (or multiple) you're only option is to copy those from other, similar nif files. (you can add multiple and move them arround to create a group of collisons who together fit your model)
There are descriptions on how to do it using Nifskope 2.0 Dev. 8 + Elric, but i never got that to work.
Most occuring issue:
Part of the model dosn't show up with nifskope/CK: Make sure all normals are facing the right way. When you copy & mirror stuff with blender, it thinks it's a good idea to flip all normals as well.
So check the face orientation for your model with blender.
Everything went fine, but it won't show up in-game:
By default FO4 will only load resources inside BA2 archives. Either create such archive for your mod, or set FO4 to accept 'loose files'.