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!)
- STOP EDITING THE LAYER MASK (I've accidentally done the next steps to the layer mask TOO MANY FREAKIN TIMES!)
Split Shield into Segments
(this assumes fore/aft two segment shields; adapt as necessary for more segments)
- through the middle of the the shields; create rectangle selection 3 pixels high & shield width, then bucket fill full black (try 5 pixels to give more gap between the segments?)
- ensure bucket fill has "Fill Whole Selection" selected (*sigh*)
- at the end of each shield (4x ends) create rectangle selection, 4 pixels high & shield width (1 pixel into black space; the other 3 over the shield)
- should have 4x small rectangles
- use additive select (hold down shift while selecting)
- apply the gaussian blur filter (3 pixel, width & height locked)
- duplicate the existing shield layer
- rename the layers to fore & aft if you wish
- In the aft shield layer, select the XXXX
- select / cut / etc DO EEET AND WRITE ABOUT EEEET
- export image (all layers) as png (or one at a time; whatever floats your boat)
- use apngasm to create APNG image
- apngasm -o shipname_icon.png ship.png fore.png aft.png
- note the order; that's what FSO expects
- 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?). On the other hand, creating an ANI seems like a PITA...