Created a script to aid in the creation of new textures for whatever mods

depend on unifieddyes.  Rewrote README and expanded it to document the usage of
that script.
This commit is contained in:
Vanessa Ezekowitz 2012-07-13 17:19:29 -04:00
parent 398b39068b
commit 17348122fc
2 changed files with 214 additions and 6 deletions

164
README
View File

@ -1,8 +1,160 @@
This is a pretty extensive dyes mod, which has the sole purpose of
supplying a complete set of colors and a few greys, all of which are
intended to be used by other mods as needed to make colored objects. It
uses Ironzorg's Flowers mod as the source of the actual pigments.
Flowers can be had from one of the links below, or as part of neko259's
Nature Pack.
VanessaE's Unified Dyes Mod
===========================
This is a pretty extensive dyes mod, which has the sole purpose of supplying a
complete set of colors and a few greys, all of which are intended to be used by
other mods as needed to make colored objects. It uses Ironzorg's Flowers mod
as the source of the actual pigments (this same mod is part of neko259's nature
pack, and can be found in a few other mods/mod packs as well).
In total, this mod provides [b]77[/b] colors (including greys) at present.
Usage instructions, technical information
=========================================
Colors
------
Creating a particular color of dye is pretty simple - just harvest coal,
cactus, or the appropriate flowers and start smelting them and crafting the
results together to get the various colors. There are 12 base colors, which
are formed as follows (the degree figure is that color's hue on a standard HSV
color wheel, and is what is used in the textures supplied with this mod):
Red (0°): smelt one rose (yields 2 portions of red dye)
Orange (30°): smelt one tulip (yields 2) or mix red+yellow (yields 2)
Yellow (60°): smelt one yellow dandelion (yields 2)
Lime (90°): mix yellow + green (yields 2)
Green (120°): smelt one cactus or one waterlily (yields 2),
or mix yellow + blue (yields 2)
Aqua (150°): mix green + cyan (yields 2)
Cyan (180°): green + blue (yields 2)
Sky blue (210°): mix cyan + blue (yields 2)
Blue (240°): Smelt one viola (yields 2)
Violet (270°): mix blue + magenta (yields 2) or mix 2 blues + 1 red (yields 3)
Magenta (300°): Mix blue + red (yields 2)
Red-violet (330°): mix magenta + red (yields 2)
Greys
-----
There are also three shades of grey plus pure black and pure white (figures in
parenthesis indicate the intended brightness of the shade, relative to white):
Black (0%): smelt one piece of coal (yields 2)
Dark grey (25%): mix one portion of white paint with two portions of black dye
(yields 3)
Medium grey (50%): mix one white and one black (yields 2)
Light grey (75%): mix two white and one black (yields 3)
White (100%): see below.
To obtain a medium-brightness (66%) version of a given color, mix the desired
base color from the list above with one portion of black dye (for example,
medium lime = lime + black). All such mixtures yield two portions of the final
color.
To obtain a dark (33%) version of a given color, use two portions of black dye
along with the base color, which yields three portions of the final color.
White Paint
-----------
To get the white paint mentioned above, first smelt some cobble into smooth
stone as usual. Then, smelt one smooth stone block to get 10 portions of
Titanium Dioxide. Finally, craft one portion of that with a bucket of water
and one piece of jungle grass. Yields one bucket of white paint.
Reduced saturation colors
-------------------------
To get the low saturation (50%) version of one of the base colors, mix one or
more of white, black, or a shade of grey with the desired base color:
Dark, low saturation: dark grey paint + color (yields 2), or two blacks + 1
white + color (yields 4). For example, dark, low-saturation red = red + dark
grey paint, or red + two black + one white.
Medium brightness, low saturation: medium grey paint + color (yields 2), or
black + white + color (yields 3). For example, medium, low-saturation green =
green + medium grey, or green + black + white.
Bright, low saturation: light grey + color (yields 2), or 1 black + 2 whites +
color (yields 4). For example, bright, low-saturation blue = blue + light
grey, or blue + black + 2 white.
RGB values
----------
All RGB values and filenames for all colors and shades of grey are represented
in the file "colors.txt" (which is generated with the bash script
"listcolors.sh", which actually reads from the texture files included with this
mod), included in the distribution directory. This script requires
Imagemagick.
Misc. Notes
-----------
If you need to use /give commands, the node names are of the following format:
unifieddyes:{nothing or "medium_" or "dark_"}{color}{nothing or "_s50"}.
For example, low saturation dark yellow would be "unifieddyes:dark_yellow_s50",
while bright, full-saturation red would simply be "unifieddyes:red".
See the texture filenames in the textures/ folder for further hints - all of
the item names follow the same format as the filenames, save for having a colon
(:) instead of the first underscore (_).
Semi-automatic generation of new textures
=========================================
Obviously, in order for this mod to be useful, you'll need textures to use with
your crafting recipes. If you plan to support the entire range of colors
supplied by this mod, there is a BASH script included in the distribution
directory, named gentextures.sh, which will, with an appropriately- colored and
appropriately-named source texture, generate a complete set of colored and
greyscale textures based on that first one.
This script requires bc (the calculator program) to handle some basic math
regarding the hue adjustments, and Imagemagick's "convert" program handles all
of the actual conversions.
To make this script for your mod, open it in your favorite editor and change
the TEXTURE variable near the top of the file to whatever your particular mod
will use as the basis of its texture filenames. For example, the default is
cotton, so the files created by the script will be named cotton_xxxxxx.png for
each of the supported colors.
Then, using yoiur favorite image editor, create a single version of your
desired texture. Draw it in the brightest, deepest shade of RED you can muster
without losing any detail, and save it out. Ideally, you will want the average
color of the texture, when taking into account all bright and dark areas, to be
as close as possible to the hex value
#FF0000 (0 degrees, 100% saturation, pure red) without losing any appreciable
#detail
Save this source texture out with a filename of red_base_whatever.png, where
"whatever" is the same name you used in the TEXTURE variable above. The
default cotton setting, thus, would need a filename of red_base_cotton.png.
Copy the gentextures.sh script to the same directory where you placed the base
texture, chmod 755 gentextures.sh if necessary, and run it using the usual
dot-slash notation: ./gentextures.sh
The program will exit immediately if it can't find the base texture it needs
(i.e. if you didn't supply it, or if you named it wrong, or if it isn't it in
the same directory as the script).
Otherwise, the program will create a new folder named generated-textures/ and
then iterate through all of the hues and shades that are supported by
unifieddyes (though this is done manually, not by reading anything from the
mod). All of the output files will be placed in that folder.
Use your favorite image browser or file manager to review the results, and if
they're right, copy them over to the textures/ folder in your mod.

56
gentextures.sh Executable file
View File

@ -0,0 +1,56 @@
#!/bin/bash
# This line defines the base of the filename, e.g. cotton_xxx_xxx.png
TEXTURE="cotton"
# This defines the name of the bright red source texture that will
# be used to generate all of the others.
base_texture="red_base_"$TEXTURE".png"
base_colors="red orange yellow lime green aqua cyan skyblue blue violet magenta redviolet"
echo -e "\nCurrently configured to generate filenames based on "$TEXTURE"."
if [ ! -e "$base_texture" ] ; then {
echo -e "\nPlease supply a proper base texture from which to generate all"
echo "of the colors. It must be named "$base_texture" and must"
echo -e "be placed in the directory you ran this script from.\n"
exit 1
} fi
pushd . >/dev/null
mkdir generated-textures
cd generated-textures
hue=0
for name in $base_colors ; do
hue2=`echo "scale=10; ("$hue"*200/360)+100" |bc`
echo $name "("$hue" degrees)"
echo " dark"
convert ../$base_texture -modulate 33,100,$hue2 $TEXTURE"_dark_"$name".png"
echo " medium"
convert ../$base_texture -modulate 66,100,$hue2 $TEXTURE"_medium_"$name".png"
echo " bright"
convert ../$base_texture -modulate 100,100,$hue2 $TEXTURE"_"$name".png"
echo " dark, 50% saturation"
convert ../$base_texture -modulate 33,50,$hue2 $TEXTURE"_dark_"$name"_s50.png"
echo " medium, 50% saturation"
convert ../$base_texture -modulate 66,50,$hue2 $TEXTURE"_medium_"$name"_s50.png"
echo " bright, 50% saturation"
convert ../$base_texture -modulate 100,50,$hue2 $TEXTURE"_"$name"_s50.png"
hue=$((hue+30))
done
echo "greyscales"
echo " black"
convert ../$base_texture -modulate 15,0,0 $TEXTURE"_black.png"
echo " dark grey"
convert ../$base_texture -modulate 50,0,0 $TEXTURE"_darkgrey.png"
echo " medium grey"
convert ../$base_texture -modulate 100,0,0 $TEXTURE"_mediumgrey.png"
echo " light grey"
convert ../$base_texture -modulate 150,0,0 $TEXTURE"_lightgrey.png"
echo " white"
convert ../$base_texture -modulate 190,0,0 $TEXTURE"_white.png"
popd >/dev/null