Skip to content

emjapo/physically-based-effects

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

46 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Physically Based Animations

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

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

Levelsets

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

Wedges

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

Kingdom of the Lost Implicit Function

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

Advected Bunny

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

Install Instructions

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.

  1. Start with the starter, openexr-2.5.8, and OpenImageIO-2.4.14.0 packages, unzipped

  2. Create buidl directories

mkdir build
mkdir openexr-2.5.8_build
  1. Run cmake in the build directory from the code directory
cd openexr-2.5.8_build
cmake ../openexr-2.5.8
  1. Now make an edit in the CMakeCache.txt and change CMAKE_INSTALL_PREFIX to the absolute path for the physically-based-effects/build directory.

  2. Install openexr

cmake --build . --target install --config Release
  1. 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.

  1. 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.

  1. Copy stuff into our build directory
cd dist
cp -r * ../../build/
  1. Build the starter kit
cd starter
make

About

repo for the work in the physically based effects class (CPSC 8190) at Clemson University

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors