When talking about normal maps for 3D models like weapons, armour, placeables, etc., generally the "correct" way to do it would be to generate the map from a high poly version of the model. This is what is known as baking. In modern texture generation, this is often as much for creating the diffuse texture itself in the first place as it is for use with the final game model. Here's an example from some of my own experiments with recreating the Ebon Hawk textures from scratch. Take LEH_grwall01. This is the vanilla texture on the left, and my recreated texture on the right (lacking a grime pass):
I started by creating a 3D model of the original texture, like so:
This was the high poly model. The low poly model was a simple flat plane of two triangles. When baked out, this was the resultant normal map:
Obviously this approach is not always practical. Sometimes you'll want to generate a normal map directly from a diffuse image, which I gather is what you are primarily interested in. The simplest route is to create a greyscale height map. At its most simplistic, this would entail desaturating the source image and then running through any number of programs or PS filters to generate the normal map. For example CrazyBump, AwesomeBump, xNormal, etc. There are also some online tools to do this, for example NormalMap Online. Results through this approach will vary wildly depending on the quality of your source image.
As an example, let's take one of the texture sources from Sithspecter's "High Quality Blasters for Modders" modder's resource. We'll take w_blstrpstl_001 and simply desaturate it to create a pseudo-height map. Then we'll feed this into NormalMap Online:
This is only about 30 seconds of effort, but the result isn't too bad considering. However if you have a look at the attached normal in closer detail, you'll see a lot of noise. This is typically very bad in a normal map, and in this case is somewhat exacerbated by NormalMap Online's lack of sufficient adjustment parameters to mitigate it. But really the root of the problem is that a diffuse is an extremely poor input source, especially in traditional textures that include baked/fake shadowing and highlights/specular. You can see in SS's source image that there are some highlights across the top of the main body, on the top of the sight back piece (bottom left corner), and along most curved edges. There is also a lot of noise in the flat areas from what I gather is the use of PS's Clouds filter, particularly noticeable in the trigger guard and surrounding area. Fortunately in this case we have some ability to quickly and easily tweak the height map, since SS's source is a layered PSD. Turning off a few of the noisy layers to create a new height map input, the revised generated normal looks like this:
Looking at the attached revised normal, you'll see there is now far less noise, giving a mostly crisp map. There's still a little bit of wonkiness due to the highlights - notably at the top edges of the grip/handle, the lens of the sight (top left), and the screw heads and scallops - but that's part and parcel of using this sort of image as a source. Those particular issues could be reduced or resolved with some manual adjustment of the height map. Just imagine it as a gradient where white is the highest point and black is the lowest point.
The thing to keep in mind with Odyssey is that its normal map implementation is pretty terrible. It's rarely worth the effort to create normal maps. I certainly wouldn't bother for anything small, like weapons or the like. Large floor and wall panels is probably where it will be the most notable, and these have the added benefit of typically being fairly simplistic in terms of the height details, meaning they are easy to create height maps for. Armour and bodies (like droids) can also make use of them, although this is best reserved for large details rather than lots of noisy fine detail. If you are thinking of trying it for stuff like monitor panels and the like I'd suggest you don't waste your time. Especially if it is going to be in a dark area (like the Hawk's cockpit). Stick with faked details in the diffuse for that sort of thing.
Edit: Still far from perfect, but here's a further quick adjustment of the height map to address some of the highlighted (no pun intended) problems:
You'd actually want to vary the height of the straight panel lines I think, make them a dark grey rather than black like the scallops. And the top edge of the handle needs to be a gradient to get a nice smooth curve. Same thing for the scope lenses (see the screw heads).
w_blstrpstl_001_Generated_Normal.7z w_blstrpstl_001_Generated_Normal2.7z
w_blstrpstl_001_Generated_Normal3.7z