diff --git a/Milestone1/Wenqing Wang.hipnc b/Milestone1/Wenqing Wang.hipnc new file mode 100644 index 0000000..c48b0b1 Binary files /dev/null and b/Milestone1/Wenqing Wang.hipnc differ diff --git a/Milestone1/Yuqi Zhang rain.hipnc b/Milestone1/Yuqi Zhang rain.hipnc new file mode 100644 index 0000000..16e6f85 Binary files /dev/null and b/Milestone1/Yuqi Zhang rain.hipnc differ diff --git a/Milestone1/dongying_liu_fluid_landscape.hipnc b/Milestone1/dongying_liu_fluid_landscape.hipnc new file mode 100644 index 0000000..294bc15 Binary files /dev/null and b/Milestone1/dongying_liu_fluid_landscape.hipnc differ diff --git a/Milestone2/cloud.hipnc b/Milestone2/cloud.hipnc new file mode 100644 index 0000000..917fa22 Binary files /dev/null and b/Milestone2/cloud.hipnc differ diff --git a/Milestone2/final_proj_fluid_with_growth_1130.hipnc b/Milestone2/final_proj_fluid_with_growth_1130.hipnc new file mode 100644 index 0000000..b27c039 Binary files /dev/null and b/Milestone2/final_proj_fluid_with_growth_1130.hipnc differ diff --git a/Milestone2/final_proj_fluid_with_growth_1201.hipnc b/Milestone2/final_proj_fluid_with_growth_1201.hipnc new file mode 100644 index 0000000..32fe2b9 Binary files /dev/null and b/Milestone2/final_proj_fluid_with_growth_1201.hipnc differ diff --git a/Milestone2/final_proj_growth_2.hipnc b/Milestone2/final_proj_growth_2.hipnc new file mode 100644 index 0000000..67a7ded Binary files /dev/null and b/Milestone2/final_proj_growth_2.hipnc differ diff --git a/Milestone2/final_proj_growth_2_1130.hipnc b/Milestone2/final_proj_growth_2_1130.hipnc new file mode 100644 index 0000000..67a7ded Binary files /dev/null and b/Milestone2/final_proj_growth_2_1130.hipnc differ diff --git a/Milestone2/final_proj_growth_2_1202.hipnc b/Milestone2/final_proj_growth_2_1202.hipnc new file mode 100644 index 0000000..9bd8b85 Binary files /dev/null and b/Milestone2/final_proj_growth_2_1202.hipnc differ diff --git a/Milestone2/final_proj_growth_2_1202_v3.hipnc b/Milestone2/final_proj_growth_2_1202_v3.hipnc new file mode 100644 index 0000000..84695e7 Binary files /dev/null and b/Milestone2/final_proj_growth_2_1202_v3.hipnc differ diff --git a/Milestone2/final_proj_growth_2_1203_final.hipnc b/Milestone2/final_proj_growth_2_1203_final.hipnc new file mode 100644 index 0000000..f86bccc Binary files /dev/null and b/Milestone2/final_proj_growth_2_1203_final.hipnc differ diff --git a/Milestone2/final_proj_growth_2_1203_v4.hipnc b/Milestone2/final_proj_growth_2_1203_v4.hipnc new file mode 100644 index 0000000..99708b6 Binary files /dev/null and b/Milestone2/final_proj_growth_2_1203_v4.hipnc differ diff --git a/Milestone2/heightfield_with_density_1.bgeo b/Milestone2/heightfield_with_density_1.bgeo new file mode 100644 index 0000000..3ca93e0 Binary files /dev/null and b/Milestone2/heightfield_with_density_1.bgeo differ diff --git a/Milestone2/movecloud.hipnc b/Milestone2/movecloud.hipnc new file mode 100644 index 0000000..60b53ad Binary files /dev/null and b/Milestone2/movecloud.hipnc differ diff --git a/Milestone2/snowy.hipnc b/Milestone2/snowy.hipnc new file mode 100644 index 0000000..8dfcb91 Binary files /dev/null and b/Milestone2/snowy.hipnc differ diff --git a/README.md b/README.md index 2859b45..d57f146 100644 --- a/README.md +++ b/README.md @@ -1,117 +1,218 @@ -# Final Project! - -This is it! The culmination of your procedural graphics experience this semester. For your final project, we'd like to give you the time and space to explore a topic of your choosing. You may choose any topic you please, so long as you vet the topic and scope with an instructor or TA. We've provided some suggestions below. The scope of your project should be roughly 1.5 homework assignments). To help structure your time, we're breaking down the project into 4 milestones: - -## Project planning: Design Doc (due 11/9) -Before submitting your first milestone, _you must get your project idea and scope approved by Rachel, Adam or a TA._ - -### Design Doc -Start off by forking this repository. In your README, write a design doc to outline your project goals and implementation plan. It must include the following sections: - -#### Introduction -- What motivates your project? - -#### Goal -- What do you intend to achieve with this project? - -#### Inspiration/reference: -- You must have some form of reference material for your final project. Your reference may be a research paper, a blog post, some artwork, a video, another class at Penn, etc. -- Include in your design doc links to and images of your reference material. - -#### Specification: -- Outline the main features of your project. - -#### Techniques: -- What are the main technical/algorithmic tools you’ll be using? Give an overview, citing specific papers/articles. - -#### Design: -- How will your program fit together? Make a simple free-body diagram illustrating the pieces. - -#### Timeline: -- Create a week-by-week set of milestones for each person in your group. Make sure you explicitly outline what each group member's duties will be. - -Submit your Design doc as usual via pull request against this repository. -## Milestone 1: Implementation part 1 (due 11/16) -Begin implementing your engine! Don't worry too much about polish or parameter tuning -- this week is about getting together the bulk of your generator implemented. By the end of the week, even if your visuals are crude, the majority of your generator's functionality should be done. - -Put all your code in your forked repository. - -Submission: Add a new section to your README titled: Milestone #1, which should include -- written description of progress on your project goals. If you haven't hit all your goals, what's giving you trouble? -- Examples of your generators output so far -We'll check your repository for updates. No need to create a new pull request. -## Milestone 3: Implementation part 2 (due 11/28) -We're over halfway there! This week should be about fixing bugs and extending the core of your generator. Make sure by the end of this week _your generator works and is feature complete._ Any core engine features that don't make it in this week should be cut! Don't worry if you haven't managed to exactly hit your goals. We're more interested in seeing proof of your development effort than knowing your planned everything perfectly. - -Put all your code in your forked repository. - -Submission: Add a new section to your README titled: Milestone #3, which should include -- written description of progress on your project goals. If you haven't hit all your goals, what did you have to cut and why? -- Detailed output from your generator, images, video, etc. -We'll check your repository for updates. No need to create a new pull request. - -Come to class on the due date with a WORKING COPY of your project. We'll be spending time in class critiquing and reviewing your work so far. - -## Final submission (due 12/5) -Time to polish! Spen this last week of your project using your generator to produce beautiful output. Add textures, tune parameters, play with colors, play with camera animation. Take the feedback from class critques and use it to take your project to the next level. - -Submission: -- Push all your code / files to your repository -- Come to class ready to present your finished project -- Update your README with two sections - - final results with images and a live demo if possible - - post mortem: how did your project go overall? Did you accomplish your goals? Did you have to pivot? - -## Topic Suggestions - -### Create a generator in Houdini - -### A CLASSIC 4K DEMO -- In the spirit of the demo scene, create an animation that fits into a 4k executable that runs in real-time. Feel free to take inspiration from the many existing demos. Focus on efficiency and elegance in your implementation. -- Example: - - [cdak by Quite & orange](https://www.youtube.com/watch?v=RCh3Q08HMfs&list=PLA5E2FF8E143DA58C) - -### A RE-IMPLEMENTATION -- Take an academic paper or other pre-existing project and implement it, or a portion of it. -- Examples: - - [2D Wavefunction Collapse Pokémon Town](https://gurtd.github.io/566-final-project/) - - [3D Wavefunction Collapse Dungeon Generator](https://github.com/whaoran0718/3dDungeonGeneration) - - [Reaction Diffusion](https://github.com/charlesliwang/Reaction-Diffusion) - - [WebGL Erosion](https://github.com/LanLou123/Webgl-Erosion) - - [Particle Waterfall](https://github.com/chloele33/particle-waterfall) - - [Voxelized Bread](https://github.com/ChiantiYZY/566-final) - -### A FORGERY -Taking inspiration from a particular natural phenomenon or distinctive set of visuals, implement a detailed, procedural recreation of that aesthetic. This includes modeling, texturing and object placement within your scene. Does not need to be real-time. Focus on detail and visual accuracy in your implementation. -- Examples: - - [The Shrines](https://github.com/byumjin/The-Shrines) - - [Watercolor Shader](https://github.com/gracelgilbert/watercolor-stylization) - - [Sunset Beach](https://github.com/HanmingZhang/homework-final) - - [Sky Whales](https://github.com/WanruZhao/CIS566FinalProject) - - [Snail](https://www.shadertoy.com/view/ld3Gz2) - - [Journey](https://www.shadertoy.com/view/ldlcRf) - - [Big Hero 6 Wormhole](https://2.bp.blogspot.com/-R-6AN2cWjwg/VTyIzIQSQfI/AAAAAAAABLA/GC0yzzz4wHw/s1600/big-hero-6-disneyscreencaps.com-10092.jpg) - -### A GAME LEVEL -- Like generations of game makers before us, create a game which generates an navigable environment (eg. a roguelike dungeon, platforms) and some sort of goal or conflict (eg. enemy agents to avoid or items to collect). Aim to create an experience that will challenge players and vary noticeably in different playthroughs, whether that means procedural dungeon generation, careful resource management or an interesting AI model. Focus on designing a system that is capable of generating complex challenges and goals. -- Examples: - - [Rhythm-based Mario Platformer](https://github.com/sgalban/platformer-gen-2D) - - [Pokémon Ice Puzzle Generator](https://github.com/jwang5675/Ice-Puzzle-Generator) - - [Abstract Exploratory Game](https://github.com/MauKMu/procedural-final-project) - - [Tiny Wings](https://github.com/irovira/TinyWings) - - Spore - - Dwarf Fortress - - Minecraft - - Rogue - -### AN ANIMATED ENVIRONMENT / MUSIC VISUALIZER -- Create an environment full of interactive procedural animation. The goal of this project is to create an environment that feels responsive and alive. Whether or not animations are musically-driven, sound should be an important component. Focus on user interactions, motion design and experimental interfaces. -- Examples: - - [The Darkside](https://github.com/morganherrmann/thedarkside) - - [Music Visualizer](https://yuruwang.github.io/MusicVisualizer/) - - [Abstract Mesh Animation](https://github.com/mgriley/cis566_finalproj) - - [Panoramical](https://www.youtube.com/watch?v=gBTTMNFXHTk) - - [Bound](https://www.youtube.com/watch?v=aE37l6RvF-c) - -### YOUR OWN PROPOSAL -- You are of course welcome to propose your own topic . Regardless of what you choose, you and your team must research your topic and relevant techniques and come up with a detailed plan of execution. You will meet with some subset of the procedural staff before starting implementation for approval. +# CIS 566 final project - Wonderland +![8581a335e5ba963ffe02e6495117ba0](https://user-images.githubusercontent.com/33616958/206277929-d033cc65-9e86-474c-bf13-63fbe25f8126.jpg) + +Please check out our final project video [here](https://drive.google.com/file/d/1AealpV6AoR4Fn9kUgliotcyZZVXKcarp/view?usp=share_link) + +## Final Submission + +### Features Overview + +| Rain and Leave interaction | Snowing | +|---|---| +|rain_94|snow + +Rain drops falls on the leaves, accumulate and drop. Snow flyes in the air and accumulate on the trees. + +| Growth of the plants | Terrain movements | +|---|---| +|growth|snow + +| Snow Accumulation | Terrain | +|---|---| +|growth|snow + + +### Procedural Snowflake +Initially, I used small spheres to build snowflakes, I created the particles movement system at first, then copy the small spheres to the particles to create snow. However, since our project has unrealistic style, the original snowflakes not fit this style. We discussed the shape of snowflake and finally come up with the procedural snowflake idea. +I recreated the snowflake by L-system, The snowflake could be customized by how many division it has. It could has four to six divisions. +| Four Petal Snowflake | Five Petal Snowflake | +|---|---| +|four_petal|five_petal + +### Rain +Initially, raining is a part of the weather system, Rain drops are not very complicated, we could just generate falling particles and use copy to point to replace the particles by rain drops. +However, we also want to make interaction between the rain drops and the leaf. We need to first set the collision source for the object, to detect if there are collision between the object and the rain drops. + +| Raining and object collision | Object collision Source| +|---|---| +|Raining and object collision|collision| + +If there is a collision, the collided rain drops will become a collision group, it will stick on the surface of the object, then, some of the particle in the collision group will become sliding group, the velocity of that group will change, it will slide down from the surface of the object. +In the image below, the white particles are rain drop particles, the green particles are the collision group and the blue particles are the sliding group generated from collision group. +| Different rain drop groups| Rain Drop group nodes| +|---|---| +|rain drop groups|group nodes| + +### Growth +In the last week, I first took the advice of the peer review meeting and created more unrealistic trees to better fit the style of our terrain. I used Houdini's Quick Tree Tool to create the basic shape of the tree by drawing curves. Then, inspired by some tutorials online, I reshape and distribute the leaves to give the tree a more stylized look. +| Basic tree | Stylized tree | +|--|--| +|cloud1|cloud2| +|cloud1|cloud2| +|cloud1|cloud2| + +For the growth simulation part, I mainly followed the method I used in milestone 2. To make the growth animation looks more natural, I painted different masks for each type of tree and removed the noise node so that the spreading is strictly confined to the specified areas. This allowed us to achieve the goal of matching the color of the leaves to the terrain to a certain extent. + +| Growth simulation | +|-| +|growth_path| + +| Frame 40 | Frame 80 | Frame 120 | +|---|---|---| +| F_40|F_80 | F_121| + +One thing worth mentioning is that at first, I wanted to dynamically set the color of the leaves by getting the color of the scatters points which inherited the terrain color. The results looked exactly what I wanted in the scene view but incorrect in the render view. I was stuck here for a long time, trying different ways to fix this. Finally, I found it was caused by the "pack and instance" option in the copy to points node. When I unchecked this option, everything turned out to be correct in the render view. Unfortunately, it then made my Houdini super slow and crashed frequently which means I had to abandon this approach and find an alternative. +Performance was always a top concern during my development, especially when I started merging with the flowing terrain part, I found that computing a single frame of simulation took much longer (3-5 minutes) than we had expected, making it almost impossible for us to render a more than 1-minute animation in the end. To this end, I have taken many measures to reduce the computing load. Firstly, I optimized the distribution method of trees on the terrain. I restricted the scattered area based on the previously made growth path mask and density attribute (Dongying adds density attribute to the terrain according to the altitude), reducing the number of required distribution points by **10-20 times**. In addition, when importing Dongying's finished terrain, in order to avoid recalculating the terrain every frame, we used the cached results to reference each other's work, which greatly reduced the calculation time. Lastly, since I found an alternative to match the leaf's color to the terrain, I was able to use pack and instance for both leaves generation as well as spreading trees across the terrain, which saved a lot of resource load time. + +| File cache Example| +|-| +|file_cache_example| + +After a series of performance optimizations, the final render time has been reduced from 3-5 minutes to 3-5 seconds per frame, which is nearly **60 times** faster. + +### Fluid Terrain +#### Terrain Texture Generation +After creating our terrain with heightfeild, I use the cop2net node to create the texture for our terrain with all the mask and data generated with Heightfield. The base color was create from height attribute of the heightfield and ramp the color with height. I used flow mask to emphasize the flow color, and use ao and edge and random noise to add some details to our terrain texture as well. +After creating the texture, I use attribfrommap node to project the texture to our terrain. +| Base Color - Height | Flow Detail - Flow Mask | Details Added | +|----|----|----| +|||| + +#### Grass +To make the terrain looks fluffy with grass. I add normal to terrain and use hairgen to create grass for the terrain. Adding some bend and randomness to it as well. One thing important for grass generation is how detailed is the grass land. Because we don't need the details for grass, I resample each grass so that it only has two points to keep the total points number of the grass land relatively low. +After create UV for the grass land, I used the same texture for the terrain to create color attribute for it. +| Grass | Terrain With Grass | +|---|---| +||| + +#### Integration +One important part for our project is integration. As terrain is the main part for most of the scene of our project, I output my terrain and grass as file cached so my teammates can grab what they want for their features. And I used their output cached file as well to finished the fluid terrain. + +## Post Mortem + +### How did your project go overall? +Overall, the project goes well, the combination between all the components works well. The movement of the ground, the growth of the plants, the weather system. We finished three parts separately and finally merged and dealt with the interaction between different parts together. + + +### Did you accomplish your goal? +Yes, the initial goal of this project was to combine terrain, plants and weather together. Let those three factors interact closely. The terrain and the weather changes may have different effects on the plants. According to our design doc, the goal was “ Rendering a short film in the 30-40s, reflecting the impact of natural climate and geological changes on the growth of plants.” + +In our final accomplishment, we not only show those three parts beautifully individually, but also deal with the interaction between the three parts naturally. We are all very satisfied by our final result. + + +### Did you have to pivot? +Fortunatly, we do not need to pivot for our project. We seperate our work clearly at the beginning and integrate in the early stage to make sure we have everything we need to finished out project. + +# Milestone 2 + +## Weather +### Yuqi Zhang +For milestone 2, I finished most part of different weathers, I still getting bugs on thunders and lightning part. +The Cloud will be used in sunny weather and raining/snowy weather. The color(shadow) of the cloud will change based on the timeframe. +There are also be different layers of cloud, I finished two layers, the cloud on the top layer will be lighter and move fast. But rendering one frame of cloud takes about 40 minutes, so I didn't include the gif of the cloud. +| Cloud | Cloud with sample scene| +|--|--| +|cloud1|cloud2| + + +For the interaction part, I finished the accumulated snow on the simple tree. The interaction between objects and snow only has the relationship of accumulation. The interaction between rain and objects may be more complicated. The rain drops may accumulate, sliding, sticking on the surface of the objects. + +| Snow interactions | +|--| +|snowy| + + +In the next week, I will work with my teammate to merge this part. I will work with the interaction of snow and rain on the terrain and plants that my teammates implemented. I did not find a good way to transit weathers for now, I will work on that before the final. If I cannot find a good way to transit, I may use keyframe to present different weathers. The transit between different seasons and weather may also be a challenge for me. I will also work on the weather cycle to make the change of weather as smooth as possible. + +## Fluid Landscape and Growth + +

+ +

+ +### Dongying Liu - Fluid Landscape +After figuring out how to transfer the motion of flip particles to heightfield, I tried to create a better looked terrain and drive it with a spiral particle motion. + +#### Pyro Smoke and Flip Particle Simulation +I want to create a spiral particle simulation. Inspired by [this tutorial](https://lesterbanks.com/2018/10/create-mix-colors-houdini-fluids/) +, I tried to create a smoke and use the motion of the smoke to drive the paritcles' movement. The smoke is created with pyro solver. The particle is simulated with flip solver. I use the velocity of the smoke as wind direction, and use wind to affect the particles' movement. +| Smoke Simulation | Flip Particle Simulation Drive By Smoke | +|--|--| +||| + +#### HeightField Terrain +Inspired by [this tutorial](https://www.youtube.com/watch?v=X0Bgl-HjW8k). I simply created the terrain with heightfield. + +

+ +

+ +#### Transfer Flip Particle Motion To HeightField +Although I've spend a lot of time and tried a lot of ways to transfer the flip particle motion to heightfield. When I finally figured this out, it turns out that it was really not that difficult... Flip simulation is created base on volume, it will output a velocity field itself. So, I can use the velocity field of the flip particle simuation to drive the heightfield. After convert the heightfield to polygon, I sample the velocity field with point position and use the solver to do p+=vt to create the movement of the terrain. + +

+ +

+ +### Wenqing Wang - Growth simulation on heightfield +

+screenshot +

+ +Since the method, I used for simulation growth on the surface is somehow computationally heavy and would crash my laptop if using more complicated geometries, I tried another way to implement growth simulation in milestone 2. I first tested it on a 10 x 10 grid with a simple noised applied to it, and it looks good with my pine tree growing on it. In order to merge my simulation with Dongying's terrain motion, I then started working on heightfield. +The basic settings for my growth are simple. First, I selected a start area with the scattered point on the heightfield for the growth simulation. Then I paint the attribute on the converted heightfield to create the growth path. +| Start point | growth path | +|--|--| +|start point|growth path| + +In this phase, I use the color attribute to visualize the expansion of the growth area. I also add a wave at the outer edge to add some motion to the simulation. + +| growth area | growth wave | +|--|--| +|growth_along_path|growth_wave_along_path| + +And below is the final result: +| Pine tree growth simulation on heightfield | +|-| +|tree gowth simulation| + +During this milestone, I also started to merge with Dongying's work. Before merging our code, one of my concerns was whether the positions of the trees growing based on the height field would move with them when the terrain started to have some motion. Fortunately, I found that this could be solved by simply replacing the original scatter node with the heightfield scatter node. + +The biggest problem we faced so far was the hardware and software limitations. Although we have a GTX 3060 graphics card, we can only use the free version of Houdini and its own CPU-based renderer, so our simulation and rendering in Houdini are super slow. The situation seems to get even worse considering Dongying wants to create more complex terrain and I plan to add other high-resolution assets from Quixel Bridge (i.e. grass, flowers, etc) and create unique growth paths and animations for each (we haven't even merged Yuqi's work yet). + +Maybe buying Houdini's commercial version + subscription to Redshift would be a solution, but for now, we are still considering if there is a more affordable solution. + +# Milestone 1 + +### Wenqing Wang +| Dense surface packing | Pine tree model | +|--|--| +|growth|pine_tree| + +In milestone 1, I learned the principle of Dense surface packing to complete a simple tree growth animation. I also modelled a pine tree based on our reference image. The current problem is that Houdini always crashes when I try to replace the low-poly tree shown in the gif result with my high resolution pine tree (I already pack and instance all the leaves when generating the pine tree). I considered that maybe the dense surface packing method is too computationally intensive for complex terrain or complex models, so in milestone 2 I plan to create a scatter number vs. time function to animate the growth of trees on the heightfield. + +### Yuqi Zhang +Yuqi’s Milestone 1:
+ + +I finished the rain and snow particle generation, for the rain effect, I also worked with the interaction with the particle to geometry. (Rain drops stick on the geometry surface, accumulate to and drops)
+I started working with lightning and got basic shapes. I am still working on the color/light of the lightning.
+I also need more knowledge of rendering in houdini. I assigned the material to the geometry and rain drops, but I did not render the effect I wanted. I may also need to spend some time learning that.
+In milestone 2, I need to keep working on the weathers and maybe also need to think about how to represent them. For example, I want to exhibit the wind by moving plants. I may need to observe how they move. What is more, I also need to keep working with the sound, the thunder and lightning always happen together, also I need to add some rain sound to make sure they combine perfectly. + + + +### Dongying Liu + +| Terrian Motion With Random Vel | Flip Tank Particle | Terrian Motion With Particle Vel | +|--|--|--| +|||| + +For milestone 1, my goal is to create a fluid terrain. My first thought was to create a terrain and give every point of the terrain velocity. So, with the Solver node, I can do p+=vt to every point to make the terrain move. + +As the picture shows above, I create a velocity field with Volume Node, and the velocity is generated by noise. And then I sample the velocity field with the position of every point of the terrain to give the point a velocity. As the picture shows, the terrain moved. + +According to the reference, the author said he transfered the flip tank particle motion to heightfield. So, I created a simple flip tank particle effect and then used the particle velocity to create a velocity field volume. However, the reulst seems not correct, it might be the problem that the velocity field has more y direction's velocity. So, the terrian move upward rather than moved on xz plane. + +## Design Doc +Here's the link of our design doc: https://docs.google.com/document/d/1Fy-YzTWK_csSgQDFjBJPMhLtHKCemdKlwvjb63kiVcI/edit?usp=sharing diff --git a/final.mp4 b/final.mp4 new file mode 100644 index 0000000..f757055 Binary files /dev/null and b/final.mp4 differ diff --git a/img/2.png b/img/2.png new file mode 100644 index 0000000..556f9cf Binary files /dev/null and b/img/2.png differ diff --git a/img/cloud1.png b/img/cloud1.png new file mode 100644 index 0000000..79080b9 Binary files /dev/null and b/img/cloud1.png differ diff --git a/img/cloud2.png b/img/cloud2.png new file mode 100644 index 0000000..410a3c8 Binary files /dev/null and b/img/cloud2.png differ diff --git a/img/final_shot_240.jpg b/img/final_shot_240.jpg new file mode 100644 index 0000000..c94b758 Binary files /dev/null and b/img/final_shot_240.jpg differ diff --git a/img/final_snow_300.jpg b/img/final_snow_300.jpg new file mode 100644 index 0000000..4ac6165 Binary files /dev/null and b/img/final_snow_300.jpg differ diff --git a/img/five_petal.png b/img/five_petal.png new file mode 100644 index 0000000..ddefd06 Binary files /dev/null and b/img/five_petal.png differ diff --git a/img/flip_tank.gif b/img/flip_tank.gif new file mode 100644 index 0000000..0a1f4ee Binary files /dev/null and b/img/flip_tank.gif differ diff --git a/img/fluid_landscape_with_growth_1.gif b/img/fluid_landscape_with_growth_1.gif new file mode 100644 index 0000000..32babe0 Binary files /dev/null and b/img/fluid_landscape_with_growth_1.gif differ diff --git a/img/fluid_landscape_with_growth_2.gif b/img/fluid_landscape_with_growth_2.gif new file mode 100644 index 0000000..6297abd Binary files /dev/null and b/img/fluid_landscape_with_growth_2.gif differ diff --git a/img/fluid_terrain_235.jpg b/img/fluid_terrain_235.jpg new file mode 100644 index 0000000..9560d25 Binary files /dev/null and b/img/fluid_terrain_235.jpg differ diff --git a/img/fluid_terrain_final.gif b/img/fluid_terrain_final.gif new file mode 100644 index 0000000..98d17c2 Binary files /dev/null and b/img/fluid_terrain_final.gif differ diff --git a/img/four_petal.png b/img/four_petal.png new file mode 100644 index 0000000..23f0677 Binary files /dev/null and b/img/four_petal.png differ diff --git a/img/growth.gif b/img/growth.gif new file mode 100644 index 0000000..ffa3844 Binary files /dev/null and b/img/growth.gif differ diff --git a/img/growth_214.jpg b/img/growth_214.jpg new file mode 100644 index 0000000..556bd5a Binary files /dev/null and b/img/growth_214.jpg differ diff --git a/img/growth_along_path.gif b/img/growth_along_path.gif new file mode 100644 index 0000000..7629785 Binary files /dev/null and b/img/growth_along_path.gif differ diff --git a/img/growth_gif.gif b/img/growth_gif.gif new file mode 100644 index 0000000..192c3ed Binary files /dev/null and b/img/growth_gif.gif differ diff --git a/img/growth_wave_along_path.gif b/img/growth_wave_along_path.gif new file mode 100644 index 0000000..0066ea7 Binary files /dev/null and b/img/growth_wave_along_path.gif differ diff --git a/img/height_field.jpg b/img/height_field.jpg new file mode 100644 index 0000000..150e0af Binary files /dev/null and b/img/height_field.jpg differ diff --git a/img/heightfield_cop2net.jpg b/img/heightfield_cop2net.jpg new file mode 100644 index 0000000..2c79beb Binary files /dev/null and b/img/heightfield_cop2net.jpg differ diff --git a/img/moving_terrian.gif b/img/moving_terrian.gif new file mode 100644 index 0000000..16e2af3 Binary files /dev/null and b/img/moving_terrian.gif differ diff --git a/img/onluy_terrain.jpg b/img/onluy_terrain.jpg new file mode 100644 index 0000000..f020b16 Binary files /dev/null and b/img/onluy_terrain.jpg differ diff --git a/img/only_grass.jpg b/img/only_grass.jpg new file mode 100644 index 0000000..f743b33 Binary files /dev/null and b/img/only_grass.jpg differ diff --git a/img/only_height.jpg b/img/only_height.jpg new file mode 100644 index 0000000..0ea5d05 Binary files /dev/null and b/img/only_height.jpg differ diff --git a/img/particle_smoke.gif b/img/particle_smoke.gif new file mode 100644 index 0000000..696ec35 Binary files /dev/null and b/img/particle_smoke.gif differ diff --git a/img/particle_smoke_terrain.gif b/img/particle_smoke_terrain.gif new file mode 100644 index 0000000..bfa260f Binary files /dev/null and b/img/particle_smoke_terrain.gif differ diff --git a/img/pat.png b/img/pat.png new file mode 100644 index 0000000..6998a7b Binary files /dev/null and b/img/pat.png differ diff --git a/img/pine_tree.png b/img/pine_tree.png new file mode 100644 index 0000000..0d768b6 Binary files /dev/null and b/img/pine_tree.png differ diff --git a/img/rain.gif b/img/rain.gif new file mode 100644 index 0000000..10a8c90 Binary files /dev/null and b/img/rain.gif differ diff --git a/img/rain.png b/img/rain.png new file mode 100644 index 0000000..7a8818b Binary files /dev/null and b/img/rain.png differ diff --git a/img/rain1.gif b/img/rain1.gif new file mode 100644 index 0000000..ba4c62d Binary files /dev/null and b/img/rain1.gif differ diff --git a/img/rain_1.png b/img/rain_1.png new file mode 100644 index 0000000..c2bab9f Binary files /dev/null and b/img/rain_1.png differ diff --git a/img/rain_94.jpg b/img/rain_94.jpg new file mode 100644 index 0000000..0b01eae Binary files /dev/null and b/img/rain_94.jpg differ diff --git a/img/rain_gif.gif b/img/rain_gif.gif new file mode 100644 index 0000000..ce42045 Binary files /dev/null and b/img/rain_gif.gif differ diff --git a/img/rain_node1.png b/img/rain_node1.png new file mode 100644 index 0000000..eddc082 Binary files /dev/null and b/img/rain_node1.png differ diff --git a/img/rain_node2.png b/img/rain_node2.png new file mode 100644 index 0000000..101dd46 Binary files /dev/null and b/img/rain_node2.png differ diff --git a/img/smoke.gif b/img/smoke.gif new file mode 100644 index 0000000..476e359 Binary files /dev/null and b/img/smoke.gif differ diff --git a/img/smoke_vel.gif b/img/smoke_vel.gif new file mode 100644 index 0000000..171bc81 Binary files /dev/null and b/img/smoke_vel.gif differ diff --git a/img/snow.png b/img/snow.png new file mode 100644 index 0000000..00a569a Binary files /dev/null and b/img/snow.png differ diff --git a/img/snow_gif.gif b/img/snow_gif.gif new file mode 100644 index 0000000..a526b16 Binary files /dev/null and b/img/snow_gif.gif differ diff --git a/img/snowflake_63.jpg b/img/snowflake_63.jpg new file mode 100644 index 0000000..8d321f7 Binary files /dev/null and b/img/snowflake_63.jpg differ diff --git a/img/start_pt.png b/img/start_pt.png new file mode 100644 index 0000000..69dfee2 Binary files /dev/null and b/img/start_pt.png differ diff --git a/img/terrain_texture.jpg b/img/terrain_texture.jpg new file mode 100644 index 0000000..979c205 Binary files /dev/null and b/img/terrain_texture.jpg differ diff --git a/img/terrain_with_grass.jpg b/img/terrain_with_grass.jpg new file mode 100644 index 0000000..398f348 Binary files /dev/null and b/img/terrain_with_grass.jpg differ diff --git a/img/tree_growth_along_path.gif b/img/tree_growth_along_path.gif new file mode 100644 index 0000000..a473eb9 Binary files /dev/null and b/img/tree_growth_along_path.gif differ diff --git a/img/with flow.jpg b/img/with flow.jpg new file mode 100644 index 0000000..e9630ab Binary files /dev/null and b/img/with flow.jpg differ diff --git a/img/with_more_detail.jpg b/img/with_more_detail.jpg new file mode 100644 index 0000000..ff6e12b Binary files /dev/null and b/img/with_more_detail.jpg differ diff --git a/img/wrong_land.jpg b/img/wrong_land.jpg new file mode 100644 index 0000000..dd82c6c Binary files /dev/null and b/img/wrong_land.jpg differ