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
+
+
+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 drops falls on the leaves, accumulate and drop. Snow flyes in the air and accumulate on the trees.
+
+| Growth of the plants | Terrain movements |
+|---|---|
+|
|
+
+| Snow Accumulation | Terrain |
+|---|---|
+|
|
+
+
+### 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 |
+|---|---|
+|
|
+
+### 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|
+|---|---|
+|
|
|
+
+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|
+|---|---|
+|
|
|
+
+### 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 |
+|--|--|
+|
|
|
+|
|
|
+|
|
|
+
+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 |
+|-|
+|
|
+
+| Frame 40 | Frame 80 | Frame 120 |
+|---|---|---|
+|
|
|
|
+
+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|
+|-|
+|
|
+
+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|
+|--|--|
+|
|
|
+
+
+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 |
+|--|
+|
|
+
+
+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
+
+
+
+
+
+
+
+
+
+