An OPT file is the actual 3D model that you see in the game, but unlike 3D models as used in Rendered Art or Animation the OPT file contains the textures, weapon locations, weapon types, and (for XWA) engine glow information as well as the shape of the object and the information on where and how the textures are applied.
When the OPT Project first began at Datamasters the OPT file format was (obviously) not very well known and it was extremely difficult to edit the OPTs without messing them up and impossible to create one from scratch. Some superb work was able to be done despite the limitations of the early tools and as the tools improved so did the OPTs. Totally Games thankfully kept the OPT format very similar to XvT for XWA and so the switch to this hardly slowed the progress.
The OPT tools have reached the state of power and user friendliness where somebody like myself would get involved as it is now possible to create OPTs from new DXFs and BMPs rather than having to modify the TG files. By removing some of the extra complexity of an OPT over a "normal" 3D model it no longer seems like too much hassle.
You will need a program to create/edit DXF files (the 3D model part), to create/edit BMP files (the textures), and a program called ACE which is available from the Code Alliance or Datamasters. At the moment for XWA you will also require the Engine Glow Editor from either of the same sites though there were plans to eventually incorporate this within ACE. Another very useful program to enhance your XWA OPTs is the appropriately named OPT Enhancer which has the facility to add self-illumination to textures (as seen with windows on capital ships), animation to textures (as seen with moving lights), transparent textures (as seen with the cockpit glass for exterior-fighter OPTs), and to set up a proximity cloak (so that an OPT can become invisible at a certain distance) and is available from XvT Technologies (which also has a good selection of OPTs and Patches).
If you feel there are parts you can use in an existing OPT then your first step would be to run ACE and select the "Convert OPT to DXF" option. This will place a DXF of the OPT in the savedata directory and the textures in the texture directory. Good results can be gained from using TG OPT parts to create "uglies" and some textures can have a wide use (like hangar textures which could be used for a new cruiser).
Next you would either load the DXF or start a new model in your 3D editor. You would then build the model as you would any other, bearing in mind the severe limitation on the number of faces for an OPT compared with a model for use in pictures. One thing to remember though is what sort of ship you are making, an OPT which is pushing the maximum numbers of faces would be fine for a major capital ship (where only one or two would be in a mission) but if it is a fighter (where there would possibly be entire squadrons of them) then you may be advised to try to keep it down far lower.
Once you have your DXF (either saved directly by your 3D package or converted from your 3D packages format) then it is time to import it into ACE which may or may not accept it. If it is not accepted then you should simply try fiddling with the DXF settings until it works (which it should, eventually). Once the DXF is safely into ACE you can then save it as an OPT and use the "replace OPT" option to copy this new OPT over one of TGs so that you can make certain it has few enough faces in total and per object. Once this is done, or if you were already certain it was valid, it is time to add textures, hardpoints, and engine glows (if XWA) as well as define what the individual parts actually are. As you work you should occasionally save as OPT and check it in XWA or XvT/BoP so that any mistakes can be caught early enough so you can easily go back to a previous save of the project (ACE creates backups) if need be. I have on a couple of occasions found that a OPT crashes XEG (the engine glow editor) despite working fine in XWA so you should check it still loads in that every so often as well, in both cases going back to a previous autobackup produced a XEG-friendly OPT as did the result of redoing the work the work from that point.
The helpfiles included with ACE cover all aspects of this process with a step by step example which I cannot better here.
Once you have completed the work in ACE (which can take a very long time with a complex model with a lot of meshes, faces, and hardpoints) and have tested the OPT for problems the next stage (at the moment) if you are making an XWA OPT is to use the Engine Glow Editor. The default engine-glow is rather ugly and being of average size doesn't fit many ships very well. Once you have positioned the engine-glow properly, changed the colours to what you want, and guessed at how large it should be in cross section (to fit the engine nozzle) and length (to fit the ship type, fighters generally having longer trails than capships) it is time to check it. Usually the Tech-Library gives enough of an idea of the look of the engine glows for you to get it close to correct before you go through the extra time involved in flying around it in a skirmish mission.
The Engine-glow editor also has good documentation though one tip I can offer is that if XEG doesn't display your OPTs engine-glowed parts in its window then try pressing "n" for "next" or "p" for "previous" which might step you through the parts until you reach one with a engine-glow which you can then edit. You can Alt-Tab between the Tech Library and XEG if you need to adjust the centre-point of the glow rather than having to quit XWA to make the adjustment.
Once all this is done to your satisfaction you will have a new
OPT and your next step is to add it to the game.
The easiest option is to choose a ship of similar statistics and simply overwrite the actual OPT file.
The next more complicated method is to overwrite the OPT file but also edit the executable so that the stats for the ship are exactly as you wanted them to be rather than roughly.
The most complicated option is to actually add the ship rather than replacing one. The basic idea for adding ships is that you edit specdesc.txt, strings.txt, and shiplist.txt in the XWA directory and spacecraft0.lst in the Flightmodels directory to include your ship. You then edit the executable to pick up on these changes and so that the slot in which you have added the ship has the correct stats. More details are at http://www.michaelboewes.de/xwing/opthelp.htm