139 lines
4.4 KiB
Bash
Executable file
139 lines
4.4 KiB
Bash
Executable file
#!/bin/sh
|
|
# ==============================================================================
|
|
# POV-Ray 3.7
|
|
# portfolio.sh - render the POV-Ray portfolio
|
|
# ==============================================================================
|
|
# written November 2003 by Christoph Hormann
|
|
# This file is part of POV-Ray and subject to the POV-Ray licence
|
|
# see POVLEGAL.DOC for details
|
|
# ------------------------------------------------------------------------------
|
|
# calling conventions:
|
|
#
|
|
# portfolio.sh [log] [-d scene_directory] [-o output_directory]
|
|
#
|
|
# output_directory: if specified all images are written to this directory
|
|
# if not specified the images are written into the scene
|
|
# file directories, if these are not writable they are
|
|
# written in the current directory.
|
|
# log: log all text output of POV-Ray to a file (log.txt)
|
|
# scene_directory: if specified the portfolio scene in this directory are
|
|
# rendered, otherwise the scene directory is determined form
|
|
# the main povray ini file.
|
|
# (usually /usr/local/share/povray-3.7/scenes/portfolio).
|
|
# ==============================================================================
|
|
|
|
# test mode
|
|
#SCENE_DIR=.
|
|
|
|
VERSION=3.7
|
|
VER_DIR=povray-$VERSION
|
|
DEFAULT_DIR=/usr/local
|
|
SYSCONFDIR=$DEFAULT_DIR/etc
|
|
|
|
install_dir()
|
|
{
|
|
if [ -z "$POVINI" ] ; then
|
|
test -f "$SYSCONFDIR/povray.ini" && POVINI="$SYSCONFDIR/povray.ini"
|
|
test -f "$HOME/.povrayrc" && POVINI="$HOME/.povrayrc"
|
|
test -f "$SYSCONFDIR/povray/$VERSION/povray.ini" && POVINI="$SYSCONFDIR/povray/$VERSION/povray.ini"
|
|
test -f "$HOME/.povray/$VERSION/povray.ini" && POVINI="$HOME/.povray/$VERSION/povray.ini"
|
|
fi
|
|
|
|
if [ ! -z "$POVINI" ] ; then
|
|
# this is not a completely failsafe method but it should work in most cases
|
|
INSTALL_DIR=`grep -E -i "^library_path=.*share/$VER_DIR" "$POVINI" | head -n 1 | sed "s?[^=]*=\"*??;s?/share/$VER_DIR.*??"`
|
|
echo "$INSTALL_DIR"
|
|
fi
|
|
}
|
|
|
|
OPTIONS="$1 $2 $3 $4 $5"
|
|
|
|
case "$OPTIONS" in
|
|
*log* | *LOG* | *Log* )
|
|
DATE=`date`
|
|
LOG_FILE="log.txt"
|
|
echo "log file for POV-Ray 3.7 sample scene render $DATE" > "$LOG_FILE"
|
|
;;
|
|
esac
|
|
|
|
test "$1" = "-d" && SCENE_DIR="$2"
|
|
test "$2" = "-d" && SCENE_DIR="$3"
|
|
test "$3" = "-d" && SCENE_DIR="$4"
|
|
test "$4" = "-d" && SCENE_DIR="$5"
|
|
|
|
if [ -z "$SCENE_DIR" ] ; then
|
|
INSTALL_DIR="`install_dir`"
|
|
if [ -z "$INSTALL_DIR" ] ; then
|
|
echo "------------------------------------------------------"
|
|
echo " the sample scene render script could not determine"
|
|
echo " the location where POV-Ray is installed. Make sure"
|
|
echo " POV-Ray $VERSION has been correctly installed on this"
|
|
echo " computer. If you continue the script will try to"
|
|
echo " the scenes from the current directory."
|
|
echo ""
|
|
read -p "Press CTRL-C to abort or any other key to continue " -n 1
|
|
echo "------------------------------------------------------"
|
|
|
|
SCENE_DIR=.
|
|
else
|
|
SCENE_DIR="$INSTALL_DIR/share/$VER_DIR/scenes/portfolio"
|
|
fi
|
|
fi
|
|
|
|
if [ ! -d "$SCENE_DIR" ] ; then
|
|
echo "------------------------------------------------------"
|
|
echo " Your POV-Ray installation seems to be defective"
|
|
echo " so this script does not work."
|
|
echo " Try reinstalling POV-Ray."
|
|
echo "------------------------------------------------------"
|
|
read
|
|
exit
|
|
fi
|
|
|
|
if [ -d "$SCENE_DIR/portfolio" ] ; then
|
|
SCENE_DIR="$SCENE_DIR/portfolio"
|
|
fi
|
|
|
|
test "$1" = "-o" && OUTPUT_DIR="$2"
|
|
test "$2" = "-o" && OUTPUT_DIR="$3"
|
|
test "$3" = "-o" && OUTPUT_DIR="$4"
|
|
test "$4" = "-o" && OUTPUT_DIR="$5"
|
|
|
|
if [ -z "$OUTPUT_DIR" ] ; then
|
|
if [ -w "$SCENE_DIR" ] ; then
|
|
OUTPUT_DIR="$SCENE_DIR"
|
|
else
|
|
OUTPUT_DIR=.
|
|
fi
|
|
fi
|
|
|
|
if [ ! -d "$OUTPUT_DIR" ] ; then
|
|
mkdir -p "$OUTPUT_DIR"
|
|
fi
|
|
|
|
if [ "$SCENE_DIR" != "$OUTPUT_DIR" ] ; then
|
|
test -f "$SCENE_DIR/index.html" && cp -f "$SCENE_DIR/index.html" "$OUTPUT_DIR/"
|
|
test -f "$SCENE_DIR/readme.txt" && cp -f "$SCENE_DIR/readme.txt" "$OUTPUT_DIR/"
|
|
fi
|
|
|
|
CURR_DIR=`pwd`
|
|
|
|
SCENE_DIR=`echo "$SCENE_DIR" | sed "s?^\.?$CURR_DIR?"`
|
|
SCENE_DIR=`echo "$SCENE_DIR" | sed "s?^\([^/]\)?$CURR_DIR/\1?"`
|
|
|
|
FILE_LIST=`find "$SCENE_DIR" -not -path "*__empty*" -name "*.ini" | sort`
|
|
|
|
cd "$OUTPUT_DIR"
|
|
|
|
#echo "$FILE_LIST"
|
|
#echo "-------"
|
|
#echo "$OUTPUT_DIR"
|
|
#echo "$SCENE_DIR"
|
|
|
|
if [ -z "$LOG_FILE" ] ; then
|
|
echo "$FILE_LIST" | xargs -n 1 povray +L$SCENE_DIR
|
|
else
|
|
echo "$FILE_LIST" | xargs -n 1 povray +L$SCENE_DIR 2>&1 | tee -a "$LOG_FILE"
|
|
fi
|
|
|
|
cd "$CURR_DIR"
|