More work with generate_assets script.
Now uncompressed tux with .spm takes just 350 kb.
This commit is contained in:
parent
a00b878919
commit
3cf8649a6e
@ -160,13 +160,14 @@ echo "Decrease assets quality"
|
||||
|
||||
convert_image()
|
||||
{
|
||||
if [ -z "$1" ]; then
|
||||
echo "No file to convert"
|
||||
return
|
||||
fi
|
||||
|
||||
FILE="$1"
|
||||
FILE_TYPE="$2"
|
||||
echo "Convert file: $FILE"
|
||||
|
||||
if [ ! -f "$FILE" ]; then
|
||||
echo " File doesn't exist."
|
||||
return
|
||||
fi
|
||||
|
||||
W=`identify -format "%[fx:w]" "$FILE"`
|
||||
H=`identify -format "%[fx:h]" "$FILE"`
|
||||
@ -210,13 +211,14 @@ convert_image()
|
||||
|
||||
convert_sound()
|
||||
{
|
||||
if [ -z "$1" ]; then
|
||||
echo "No file to convert"
|
||||
FILE="$1"
|
||||
echo "Convert file: $FILE"
|
||||
|
||||
if [ ! -f "$FILE" ]; then
|
||||
echo " File doesn't exist."
|
||||
return
|
||||
fi
|
||||
|
||||
FILE="$1"
|
||||
|
||||
oggdec "$FILE" -o tmp.wav
|
||||
|
||||
if [ -s tmp.wav ]; then
|
||||
@ -250,108 +252,75 @@ convert_sound()
|
||||
rm -f tmp.wav tmp.ogg
|
||||
}
|
||||
|
||||
convert_model()
|
||||
convert_to_jpg()
|
||||
{
|
||||
if [ -z "$1" ]; then
|
||||
echo "No texture path provided"
|
||||
FILE="$1"
|
||||
echo "Convert file: $FILE"
|
||||
|
||||
if [ ! -f "$FILE" ]; then
|
||||
echo " File doesn't exist."
|
||||
return
|
||||
fi
|
||||
|
||||
TEXTURE_PATH="$1"
|
||||
|
||||
#echo " Texture: $TEXTURE_NAME"
|
||||
|
||||
ALREADY_CONVERTED=0
|
||||
|
||||
if [ -s "./converted_textures" ]; then
|
||||
while read -r CONVERTED_TEXTURE; do
|
||||
if [ "$TEXTURE_PATH" = "$CONVERTED_TEXTURE" ]; then
|
||||
if [ "$FILE" = "$CONVERTED_TEXTURE" ]; then
|
||||
ALREADY_CONVERTED=1
|
||||
break
|
||||
fi
|
||||
done < "./converted_textures"
|
||||
fi
|
||||
|
||||
if [ $ALREADY_CONVERTED -eq 0 ]; then
|
||||
if [ ! -f "$TEXTURE_PATH" ]; then
|
||||
#echo " Couldn't find texture file. Ignore..."
|
||||
continue
|
||||
fi
|
||||
|
||||
FILE_EXTENSION=`echo "$TEXTURE_PATH" | tail -c 5`
|
||||
|
||||
if [ `echo "$FILE_EXTENSION" | head -c 1` != "." ]; then
|
||||
#echo " Unsupported file extension. Ignore..."
|
||||
continue
|
||||
fi
|
||||
|
||||
FILE_FORMAT=`identify -format %m "$TEXTURE_PATH"`
|
||||
|
||||
if [ "$FILE_FORMAT" = "JPEG" ]; then
|
||||
#echo " File is already JPEG. Ignore..."
|
||||
continue
|
||||
fi
|
||||
|
||||
IS_OPAQUE=`identify -format '%[opaque]' "$TEXTURE_PATH"`
|
||||
#HAS_ALPHA=`identify -format '%A' "$TEXTURE_PATH"`
|
||||
|
||||
if [ "$IS_OPAQUE" = "False" ] || [ "$IS_OPAQUE" = "false" ]; then
|
||||
#echo " File has alpha channel. Ignore..."
|
||||
continue
|
||||
fi
|
||||
|
||||
NEW_TEXTURE_NAME="`echo $TEXTURE_NAME | head -c -5`.jpg"
|
||||
NEW_TEXTURE_PATH="`echo $TEXTURE_PATH | head -c -5`.jpg"
|
||||
|
||||
if [ -f "$NEW_TEXTURE_PATH" ]; then
|
||||
#echo " There is already a file with .jpg extension. Ignore..."
|
||||
continue
|
||||
fi
|
||||
|
||||
convert -quality $JPEG_QUALITY "$TEXTURE_PATH" "$NEW_TEXTURE_PATH"
|
||||
rm -f "$TEXTURE_PATH"
|
||||
|
||||
if [ -s "$DIRNAME/materials.xml" ]; then
|
||||
sed -i "s/\"$TEXTURE_NAME\"/\"$NEW_TEXTURE_NAME\"/g" \
|
||||
"$DIRNAME/materials.xml"
|
||||
sed -i "s/\"$TEXTURE_NAME /\"$NEW_TEXTURE_NAME /g" \
|
||||
"$DIRNAME/materials.xml"
|
||||
sed -i "s/ $TEXTURE_NAME\"/ $NEW_TEXTURE_NAME\"/g" \
|
||||
"$DIRNAME/materials.xml"
|
||||
sed -i "s/ $TEXTURE_NAME / $NEW_TEXTURE_NAME /g" \
|
||||
"$DIRNAME/materials.xml"
|
||||
fi
|
||||
|
||||
if [ -s "$DIRNAME/scene.xml" ]; then
|
||||
sed -i "s/\"$TEXTURE_NAME\"/\"$NEW_TEXTURE_NAME\"/g" \
|
||||
"$DIRNAME/scene.xml"
|
||||
sed -i "s/\"$TEXTURE_NAME /\"$NEW_TEXTURE_NAME /g" "$DIRNAME/scene.xml"
|
||||
sed -i "s/ $TEXTURE_NAME\"/ $NEW_TEXTURE_NAME\"/g" "$DIRNAME/scene.xml"
|
||||
sed -i "s/ $TEXTURE_NAME / $NEW_TEXTURE_NAME /g" "$DIRNAME/scene.xml"
|
||||
fi
|
||||
|
||||
echo "$TEXTURE_PATH" >> "./converted_textures"
|
||||
if [ $ALREADY_CONVERTED -eq 1 ]; then
|
||||
return
|
||||
fi
|
||||
|
||||
echo -n ".jpg" | dd of=./tmp bs=1 seek=$(($TEXNAME_END - 4)) \
|
||||
conv=notrunc 2> /dev/null
|
||||
|
||||
SIZE_OLD=`du -b "$FILE" | cut -f1`
|
||||
SIZE_NEW=`du -b "tmp" | cut -f1`
|
||||
|
||||
if [ $SIZE_NEW -ne $SIZE_OLD ]; then
|
||||
echo " Something went wrong..."
|
||||
exit
|
||||
if [ ! -f "$FILE" ]; then
|
||||
#echo " Couldn't find texture file. Ignore..."
|
||||
continue
|
||||
fi
|
||||
|
||||
FILE_EXTENSION=`echo "$FILE" | tail -c 5`
|
||||
|
||||
if [ `echo "$FILE_EXTENSION" | head -c 1` != "." ]; then
|
||||
#echo " Unsupported file extension. Ignore..."
|
||||
continue
|
||||
fi
|
||||
|
||||
FILE_FORMAT=`identify -format %m "$FILE"`
|
||||
|
||||
if [ "$FILE_FORMAT" = "JPEG" ]; then
|
||||
#echo " File is already JPEG. Ignore..."
|
||||
continue
|
||||
fi
|
||||
|
||||
IS_OPAQUE=`identify -format '%[opaque]' "$FILE"`
|
||||
#HAS_ALPHA=`identify -format '%A' "$FILE"`
|
||||
|
||||
if [ "$IS_OPAQUE" = "False" ] || [ "$IS_OPAQUE" = "false" ]; then
|
||||
#echo " File has alpha channel. Ignore..."
|
||||
continue
|
||||
fi
|
||||
|
||||
NEW_FILE="`echo $FILE | head -c -5`.jpg"
|
||||
|
||||
if [ -f "$NEW_FILE" ]; then
|
||||
#echo " There is already a file with .jpg extension. Ignore..."
|
||||
continue
|
||||
fi
|
||||
|
||||
# We can check if new file is smaller
|
||||
convert -quality $JPEG_QUALITY "$FILE" "$NEW_FILE"
|
||||
rm -f "$FILE"
|
||||
|
||||
echo "$FILE" >> "./converted_textures"
|
||||
}
|
||||
|
||||
convert_b3d()
|
||||
{
|
||||
if [ -z "$1" ]; then
|
||||
echo "No file to convert"
|
||||
return
|
||||
fi
|
||||
|
||||
convert_to_jpg_extract_b3dz()
|
||||
{
|
||||
FILE="$1"
|
||||
echo "Convert file: $FILE"
|
||||
|
||||
@ -360,6 +329,28 @@ convert_b3d()
|
||||
return
|
||||
fi
|
||||
|
||||
DIRNAME="`dirname "$FILE"`"
|
||||
|
||||
unzip "$FILE" -d "$DIRNAME"
|
||||
rm -f "$FILE"
|
||||
|
||||
TEXNAME="`basename "$FILE"`"
|
||||
NEWNAME="`echo $TEXNAME | head -c -6`.b3d"
|
||||
|
||||
sed -i "s/\"$TEXNAME\"/\"$NEWNAME\"/g" "$DIRNAME/kart.xml"
|
||||
}
|
||||
|
||||
|
||||
convert_to_jpg_update_b3d()
|
||||
{
|
||||
FILE="$1"
|
||||
echo "Convert file: $FILE"
|
||||
|
||||
if [ ! -f "$1" ]; then
|
||||
echo " File doesn't exist."
|
||||
return
|
||||
fi
|
||||
|
||||
HEX_FILE=`hexdump -ve '1/1 "%.2x"' "$FILE"`
|
||||
|
||||
TEXS_CHUNK="54455853"
|
||||
@ -369,7 +360,7 @@ convert_b3d()
|
||||
| tail -c +$(($TEXS_CHUNK_POS + 1))`
|
||||
|
||||
if [ -z "$FOUND_CHUNK" ] || [ "$FOUND_CHUNK" != "$TEXS_CHUNK" ]; then
|
||||
echo " Unsupported format."
|
||||
echo " File has no textures."
|
||||
return
|
||||
fi
|
||||
|
||||
@ -391,8 +382,6 @@ convert_b3d()
|
||||
HEX_TEXS=`echo $HEX_FILE | head -c $TEXS_END | tail -c +$(($TEXS_BEGIN+1))`
|
||||
CURR_POS=0
|
||||
|
||||
cp "$FILE" tmp
|
||||
|
||||
while [ $CURR_POS -lt $TEXS_END ]; do
|
||||
NULL_POS=`echo $HEX_TEXS | tail -c +$(($CURR_POS+1)) | grep -b -o "00" \
|
||||
| head -n 1 | cut -f1 -d":"`
|
||||
@ -413,26 +402,32 @@ convert_b3d()
|
||||
|
||||
TEXTURE_NAME=`dd if="$FILE" bs=1 skip=$TEXNAME_BEGIN \
|
||||
count=$(($TEXNAME_END - $TEXNAME_BEGIN)) 2> /dev/null`
|
||||
DIRNAME=`dirname "$FILE"`
|
||||
DIRNAME="`dirname "$FILE"`"
|
||||
TEXTURE_PATH="$DIRNAME/$TEXTURE_NAME"
|
||||
|
||||
IS_CONVERTED=0
|
||||
|
||||
while read -r CONVERTED_TEXTURE; do
|
||||
if [ "$TEXTURE_PATH" = "$CONVERTED_TEXTURE" ]; then
|
||||
IS_CONVERTED=1
|
||||
break
|
||||
fi
|
||||
done < "./converted_textures"
|
||||
|
||||
convert_model "$TEXTURE_PATH"
|
||||
if [ $IS_CONVERTED -eq 1 ]; then
|
||||
echo -n ".jpg" | dd of="$FILE" bs=1 seek=$(($TEXNAME_END - 4)) \
|
||||
conv=notrunc 2> /dev/null
|
||||
fi;
|
||||
done
|
||||
|
||||
mv tmp "$FILE"
|
||||
}
|
||||
|
||||
convert_spm()
|
||||
{
|
||||
if [ -z "$1" ]; then
|
||||
echo "No file to convert"
|
||||
return
|
||||
fi
|
||||
|
||||
convert_to_jpg_update_spm()
|
||||
{
|
||||
FILE="$1"
|
||||
echo "Convert file: $FILE"
|
||||
|
||||
if [ ! -f "$FILE" ]; then
|
||||
|
||||
if [ ! -f "$1" ]; then
|
||||
echo " File doesn't exist."
|
||||
return
|
||||
fi
|
||||
@ -462,8 +457,6 @@ convert_spm()
|
||||
|
||||
CURR_POS=$(($TEXS_BEGIN + 2))
|
||||
|
||||
cp "$FILE" tmp
|
||||
|
||||
while [ $TEXS_COUNT_CONVERTED -gt 0 ]; do
|
||||
TEXS_COUNT_CONVERTED=$(($TEXS_COUNT_CONVERTED - 1))
|
||||
|
||||
@ -482,13 +475,50 @@ convert_spm()
|
||||
TEXTURE_NAME=`dd if="$FILE" bs=1 skip=$TEXNAME_BEGIN \
|
||||
count=$(($TEXNAME_END - $TEXNAME_BEGIN)) 2> /dev/null`
|
||||
|
||||
DIRNAME=`dirname "$FILE"`
|
||||
DIRNAME="`dirname "$FILE"`"
|
||||
TEXTURE_PATH="$DIRNAME/$TEXTURE_NAME"
|
||||
|
||||
convert_model "$TEXTURE_PATH"
|
||||
IS_CONVERTED=0
|
||||
|
||||
while read -r CONVERTED_TEXTURE; do
|
||||
if [ "$TEXTURE_PATH" = "$CONVERTED_TEXTURE" ]; then
|
||||
IS_CONVERTED=1
|
||||
break
|
||||
fi
|
||||
done < "./converted_textures"
|
||||
|
||||
if [ $IS_CONVERTED -eq 1 ]; then
|
||||
echo -n ".jpg" | dd of="$FILE" bs=1 seek=$(($TEXNAME_END - 4)) \
|
||||
conv=notrunc 2> /dev/null
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
mv tmp "$FILE"
|
||||
|
||||
convert_to_jpg_update_xml()
|
||||
{
|
||||
FILE="$1"
|
||||
echo "Convert file: $FILE"
|
||||
|
||||
if [ ! -f "$FILE" ]; then
|
||||
echo " File doesn't exist."
|
||||
return
|
||||
fi
|
||||
|
||||
DIRNAME="`dirname "$FILE"`"
|
||||
|
||||
while read -r CONVERTED_TEXTURE; do
|
||||
DIRNAME_TEX="`dirname "$CONVERTED_TEXTURE"`"
|
||||
|
||||
if [ "$DIRNAME_TEX" != "$DIRNAME" ]; then
|
||||
continue;
|
||||
fi
|
||||
|
||||
TEXNAME="`basename "$CONVERTED_TEXTURE" | head -c -5`"
|
||||
|
||||
sed -i "s/\"$TEXNAME.[pP][nN][gG]/\"$TEXNAME.jpg/g" "$FILE"
|
||||
sed -i "s/ $TEXNAME.[pP][nN][gG]/ $TEXNAME.jpg/g" "$FILE"
|
||||
done < "./converted_textures"
|
||||
}
|
||||
|
||||
|
||||
@ -500,9 +530,13 @@ fi
|
||||
|
||||
|
||||
if [ $CONVERT_TO_JPG -gt 0 ]; then
|
||||
find assets/data -iname "*.b3d" | while read f; do convert_b3d "$f"; done
|
||||
find assets/data -iname "*.spm" | while read f; do convert_spm "$f"; done
|
||||
|
||||
find assets/data -not -path "assets/data/textures/*" -iname "*.png" | while read f; do convert_to_jpg "$f"; done
|
||||
|
||||
find assets/data -iname "*.b3dz" | while read f; do convert_to_jpg_extract_b3dz "$f"; done
|
||||
find assets/data -iname "*.b3d" | while read f; do convert_to_jpg_update_b3d "$f"; done
|
||||
find assets/data -iname "*.spm" | while read f; do convert_to_jpg_update_spm "$f"; done
|
||||
find assets/data -iname "*.xml" | while read f; do convert_to_jpg_update_xml "$f"; done
|
||||
|
||||
if [ -s "./converted_textures" ]; then
|
||||
echo "Converted textures:"
|
||||
cat "./converted_textures"
|
||||
|
Loading…
x
Reference in New Issue
Block a user