This work was done for CPSC 8190 taught by Dr. Jerry Tessendorf at Clemson University. There are five projects included in this repository. More details about the class, assignments, and further reading can be found on the course website.
humanoid-avatar.cpp contains the code to render a humanoid avatar created from implicit functions and constructive solid geometry operations and volumetric rendering. The avatar created by this code is a humanoid version of the stanford bunny kindly referred to as Stan the bunny.
To compile this project, run the following command in the terminal from the starter directory:
make clean && make && make one
The program renders out a 120 frame turntable of the avatar. It takes two arguments - frame start and frame stop - which are inclusive frame numbers to render out. To run the code from the starter directory, a command like the following will work:
./bin/stanthebunny 0 119
This project has 2 parts. One program creates a levelset of Stanford Bunny and another program creates a levelset of Ajax. Each programs creates a 120 frame turntable of the respective levelsets and takes 3 arguments: fstart, fstop, cache. --cache is a boolean flag that does not take anymore inputs and it directs the code to use a binary file for the levelset or create one if a binary file does not already exist. --fstart and --fstop take an integer input to indicate the frame to start and stop rendering at (inclusive).
To compile this project, run the following command in the terminal from the starter directory:
make clean && make && make two
To run the full program for the Stanford Bunny with caching, run the following command from the starter directory:
./bin/level1 --fstart 0 --fstop 119 --cache
To run the full program of Ajax without caching, run the following command from the starter directory:
./bin/level2 --fstart 0 --fstop 119
This project is contained in a single file with different arguments to create all 3 parts of the project. Wedgy can create wedges of pyroclastic spheres, stamped noise, and wisps with 500 frames each. There are 3 arguments that the program takes: --fstart, --fstop, --wt. --fstart and --fstop take an integer input to indicate the frame to start and stop rendering at (inclusive). --wt takes a string t indicate the wedge type to render. The options are "noise", "pyro", and "wisp".
To compile this project, run the follwoing command in the terminal from the starter directory:
make clean && make && make three
An example command to run this program is:
./bin/wedgey --wt pyro --fstart 0 --fstop 499
This project utilizes numerous techniques to create a landscape with mountains and valleys, a volcano, a lake, and a field of flowers. Terria renders 4 sides of the landscape with an option to view the terrain from above using the --debug flag. There are also --fstart and --fstop flags that take an integer input to indicate the frame to start and stop rendering at (inclusive).
To compile this project, run the following command in the terminal from the starter directory:
make clean && make && make four
An example command to run this program is:
./bin/terria --fstop 3
This project has 2 parts in one file. Part one can be triggered with --seq 0 and works for frames 0 to 119 which can be set with --fstart and --fstop. The first 60 frames ramp up pyroclastic displacment on the Stanford Bunny levelset, and the next 60 frames apply semi-lagranian advection to the bunny.
Part two can be triggered with --seq 1 which produces a 120 frame turntable of the Stanford Bunny with only the ears advected.
Both parts can trigger caching of the levelsets with the use of the --cache flag.
To compile this project, run the following command in the terminal from the starter directory:
make clean && make && make five
An example command to run this program is:
./bin/bunny-stuff --fstop 119 --seq 0 --cache
Just in case my install messes up, I'll keep a written document of it so I don't have to watch the hour long video everytime.
-
Start with the starter, openexr-2.5.8, and OpenImageIO-2.4.14.0 packages, unzipped
-
Create buidl directories
mkdir build
mkdir openexr-2.5.8_build
- Run cmake in the build directory from the code directory
cd openexr-2.5.8_build
cmake ../openexr-2.5.8
-
Now make an edit in the CMakeCache.txt and change CMAKE_INSTALL_PREFIX to the absolute path for the physically-based-effects/build directory.
-
Install openexr
cmake --build . --target install --config Release
- Configure settings for OpenImageIO
cd OpenImageIO-2.4.14.0
export LD_LIBRARY_PATH=$PWD/../build/lib
This one isn't from the video, so use with caution
export LD_PRELOAD=$PWD/../build/lib/libOpenImageIO.so
Also add this to the .bashrc with the absoutle path or else you will have to do this every time you open a terminal.
- Build the directory and provide commands so that it knows where to look for openexr
make ILMBASE_ROOT=$PWD/../build OPENEXR_ROOT=$PWD/../build USE_FFMPEG=0 USE_PYTHON=0 VERBOSE=0
I did encounter an issue when I copied over files and tried to do it again. The work around is just make clean and then it should work correctly.
- Copy stuff into our build directory
cd dist
cp -r * ../../build/
- Build the starter kit
cd starter
make