CreatingShieldIconsInGimp
From FreeSpace Wiki
This is a quick summary of how I created two segment shield icons for the HUD.
I'm writing this down so I remember how to do this, because me not being an artist, it took me ages to figure out how to do this and I don't want to go through the frustration of rediscovering it!!!!
Programs I used:
- GIMP 2.8
- apngasm 3.1.6
Create Ship Image
- (if necessary) create a new canvas 112x93
- Import a top down image of the ship & centre it
- so far I've grabbed the existing shield anim frame 0
- might be able to grab other ships by
- setting shield anim to be FSO generated
- DISABLING shields (or the auto-generated shield bars may overlap the image)
- screenshot'ing the HUD
- converting the image to greyscale (TBC how best to do this!)
Create Shield
- Using fuzzy select (with zero threshold) select the area outside the ship image; then invert selection
- If necessary modify the selection to better fit the ship, e.g. using the oval select (additive) to round out an irregular shape
- Select -> Grow... by 10 (? try 11) pixels
- Select -> feather set to 2 pixels
- Create new layer (black background) & select the new layer
- Bucket fill: white
- Select -> Shrink... by 3 (?) pixels
- Bucket fill: black (leaving a mostly 1 pixel full-white outline)
- Select -> Grow... by 2 pixels
- Filters -> Blur -> Gaussian blur; aspect locked; 3 (?) pixels
- Filters -> Artistic -> Softglow; 9 (?) pixels
- Use colour select to select all the fully black regions (outside & inside shield); then invert selection
- Layer -> Mask -> Add Layer Mask... using the current selection
- Confirm you can clearly see the ship and the shields don't overlap the ship (unless you really want them to!)
Split Shield into Segments
- through the middle of the oval; create rectangle selection 2 pixels high & shield width, then fill full black
- at the end of each shield (4x ends) create rectangle selection, 2 pixels high & shield width
- should have 4x small rectangles
- might need to be done in two steps? fore/aft ends?
- apply the gaussian blur filter (1 pixel, width & height locked)
- create a new layer and move fore or aft to it (should have 3x layers)
- export image (all layers) as png
- use apngasm to create APNG image
- apngasm -o shipname_shield.png ship_base.png ship_shield_fore.png ship_shield_aft.png
- test in FSO
WASH, RINSE, REPEAT
TODO: figure out if there's any benefit to creating an ani instead of an apng (maybe uses less ram/texture memory? since apngs auto-expand to full 24bits per pixel?)