Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
79 commits
Select commit Hold shift + click to select a range
28396ff
Update README.md
gserena01 Nov 15, 2021
25864a2
Update README.md
gserena01 Nov 15, 2021
8f7f557
Update README.md
gserena01 Nov 15, 2021
4016116
Update README.md
gserena01 Nov 15, 2021
63c79fe
added data flow diagram
dluisnothere Nov 15, 2021
7076d06
Update README.md
dluisnothere Nov 15, 2021
c9511a8
Update README.md
gserena01 Nov 15, 2021
25eab39
Update README.md
dluisnothere Nov 15, 2021
12b69dc
Adding L-System Base Code
serenag01 Nov 17, 2021
9ff830b
player keyboard motion added
serenag01 Nov 21, 2021
b148a7c
cleanup, detect mouse movement
serenag01 Nov 21, 2021
a27c80a
add red plane terrain to scene, change camera position and look vector
dluisnothere Nov 21, 2021
9bb29b1
mouse movement, cleanup
serenag01 Nov 21, 2021
7e54395
change terrain color
dluisnothere Nov 21, 2021
3de8d40
Merge pull request #1 from gserena01/di-terrain
dluisnothere Nov 21, 2021
5be489e
added player state (distance from start)
serenag01 Nov 21, 2021
6ac21d2
Merge branch 'main' into player-motion-physics-and-state
dluisnothere Nov 21, 2021
a199aa1
Merge pull request #2 from gserena01/player-motion-physics-and-state
dluisnothere Nov 21, 2021
a2d6976
reset player after traveling too far
serenag01 Nov 22, 2021
40b14f2
sky/clear color changes with DistFromStart
serenag01 Nov 22, 2021
a73b467
Update README.md
gserena01 Nov 22, 2021
2fb95cf
Update README.md
gserena01 Nov 22, 2021
c665e9a
Update README.md
gserena01 Nov 22, 2021
a1c5cf6
Trees on the terrain and camera position for player
dluisnothere Nov 23, 2021
22fda98
added some infrastructure for post-processing shaders
serenag01 Nov 23, 2021
de4ff41
Merge pull request #3 from gserena01/serena-phase-in
gserena01 Nov 23, 2021
120dc0c
Merge branch 'main' into di-forest
dluisnothere Nov 23, 2021
21a4314
Merge pull request #4 from gserena01/di-forest
dluisnothere Nov 23, 2021
03bd8e7
added player argument to render properly
serenag01 Nov 23, 2021
c846813
player stays level
serenag01 Nov 23, 2021
5dc3b39
fix ground color and shading
serenag01 Nov 23, 2021
2053663
fixed grammar
serenag01 Nov 23, 2021
31b48be
Update README.md
gserena01 Nov 23, 2021
7e552a7
distance based l systems generation
dluisnothere Nov 23, 2021
855cb22
distance based tree iterations
dluisnothere Nov 23, 2021
93fda22
added progress image
dluisnothere Nov 23, 2021
4bd82fc
Update README.md
dluisnothere Nov 23, 2021
bfdc828
Update README.md
dluisnothere Nov 23, 2021
e107baf
Update lambert-frag.glsl
serenag01 Nov 23, 2021
1562a25
Merge branch 'main' of https://github.com/gserena01/final-project
serenag01 Nov 23, 2021
7312495
Update terrain.ts
serenag01 Nov 23, 2021
730ba9f
Update lambert-frag.glsl
serenag01 Nov 23, 2021
7eb5f8d
post-processing framework
serenag01 Nov 28, 2021
190b417
added conditional post-processing
serenag01 Nov 28, 2021
e7c5136
add 5 second pause for transition, fade for trees
serenag01 Nov 29, 2021
a8576a0
bugs fixed for post-processing
serenag01 Nov 29, 2021
206a6df
additional bugs fixed
serenag01 Nov 29, 2021
d530597
reworked grammar
dluisnothere Nov 30, 2021
b196530
added uniform time to transition shader
serenag01 Nov 30, 2021
386c21d
Merge branch 'main' into post-processing-shaders
gserena01 Nov 30, 2021
54babf3
Merge pull request #5 from gserena01/post-processing-shaders
gserena01 Nov 30, 2021
0408be1
allows for forest radius to be changed easily
serenag01 Nov 30, 2021
f9b4e02
make transition longer
serenag01 Nov 30, 2021
e9170eb
added progress image
dluisnothere Nov 30, 2021
6b796f7
Update README.md
dluisnothere Nov 30, 2021
b1a6292
lengthen cylinders
serenag01 Nov 30, 2021
b283750
Merge branch 'main' of https://github.com/gserena01/final-project
serenag01 Nov 30, 2021
5a65b97
better L systems
dluisnothere Nov 30, 2021
cc96b5f
noisy effect
serenag01 Nov 30, 2021
21dec02
noise and blur effects, gui added
serenag01 Dec 1, 2021
8e50d95
more post shaders options
serenag01 Dec 1, 2021
b286af1
Update main.ts
serenag01 Dec 1, 2021
736fc90
added checkbox to keep post-processing on forever
serenag01 Dec 1, 2021
06cd7e6
added coraline theme music
serenag01 Dec 1, 2021
1841008
haha better trees
dluisnothere Dec 1, 2021
8fe3c45
Merge pull request #6 from gserena01/post-effect
dluisnothere Dec 1, 2021
021b24d
trees fade out with distance from start
serenag01 Dec 1, 2021
3486527
added pixelated shader
serenag01 Dec 6, 2021
0b40d82
Create INSTRUCTIONS.md
gserena01 Dec 6, 2021
4de4dc1
Update README.md
gserena01 Dec 6, 2021
3702f87
o:wq
dluisnothere Dec 1, 2021
737890c
added leaf texture
dluisnothere Dec 6, 2021
8791e5d
start leaf shader and better distance trees
dluisnothere Dec 6, 2021
5eef778
noised terrain and sky and changed colors of assets
dluisnothere Dec 6, 2021
c774288
Update README.md
gserena01 Dec 6, 2021
7766a60
final images
dluisnothere Dec 7, 2021
5405ce4
Update README.md
dluisnothere Dec 7, 2021
c3aca99
Update README.md
dluisnothere Dec 7, 2021
22b77c3
Update README.md
dluisnothere Dec 7, 2021
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
39 changes: 39 additions & 0 deletions .github/workflows/build-and-deploy.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@


name: Build and Deploy
on:
push:
branches:
- master
jobs:
build-and-deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout 🛎️
uses: actions/[email protected]
with:
persist-credentials: false

- uses: actions/setup-node@v2-beta
with:
node-version: "15.x"

- uses: actions/cache@v2
with:
# npm cache files are stored in `~/.npm` on Linux/macOS
path: ~/.npm
key: ${{ runner.os }}-build-${{ hashFiles('**/package-lock.json') }}

- name: Install and Build 🔧
run: |
npm ci
export NODE_ENV=production
npm run-script build
touch dist/.nojekyll
- name: Deploy 🚀
uses: JamesIves/[email protected]
with:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
BRANCH: gh-pages
FOLDER: dist
CLEAN: false
61 changes: 61 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*

# Runtime data
pids
*.pid
*.seed
*.pid.lock

# Directory for instrumented libs generated by jscoverage/JSCover
lib-cov

# Coverage directory used by tools like istanbul
coverage

# nyc test coverage
.nyc_output

# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
.grunt

# Bower dependency directory (https://bower.io/)
bower_components

# node-waf configuration
.lock-wscript

# Compiled binary addons (https://nodejs.org/api/addons.html)
build/Release

# Dependency directories
node_modules/
jspm_packages/

# Typescript v1 declaration files
typings/

# Optional npm cache directory
.npm

# Optional eslint cache
.eslintcache

# Optional REPL history
.node_repl_history

# Output of 'npm pack'
*.tgz

# Yarn Integrity file
.yarn-integrity

# dotenv environment variables file
.env

# next.js build output
.next
144 changes: 144 additions & 0 deletions INSTRUCTIONS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,144 @@
# Coraline Walking Simulator (by Di Lu and Serena Gandhi)

## Design Doc

#### Project Motivation
- Di Lu and Serena Gandhi both share a deep love for Coraline (2009). We knew we wanted to incorporate the visual elements from the film, and while watching a "in the making" video of Coraline, stumbled upon the scene in which Coraline runs away (https://www.youtube.com/watch?v=91nfNp7MVIw) and noticed that it has great procedural graphics potential.

#### Goal
- In this project, Di and I intend to create a presentable and working project that will fit well on a demo reel. We also hope to deepen our understanding of the procedural pipeline as it applies to larger projects. Neither Di or Serena have worked on a project of this scope with so much freedom, so we are excited to learn from this process!

#### Inspiration/reference:
- https://www.youtube.com/watch?v=91nfNp7MVIw
- ![image](https://user-images.githubusercontent.com/60444726/141865552-a3a7e93b-9b17-426b-bd80-28f5e8d90aae.png)
- ![image](https://user-images.githubusercontent.com/60444726/141865591-80497847-05b5-4a3a-a51a-de41f66862d6.png)
- ![image](https://user-images.githubusercontent.com/60444726/141865624-49270621-bb91-4aa1-bacb-24e14c17f3a1.png)


#### Specification:
- In this project, Di and I intend to create a walking simulator in which the player can move around an intially fully-populated forest in the style of Coraline. The further from their spawn point they travel, the more sparse, cubist, and pixelated the scene becomes, just like in the scene from the movie. While diverging from the spawn point, trees will begin to look less natural, just as they do in the film. The forest and trees are all generated using instanced rendering and the terrain is generated as the player walks. Additionally, this project will incorporate procedural elements by altering the color palette or "season" and using randomness to generate and place the trees and assets in the forest. This project will require use of keyboard and mouse controls. As a bonus, we may also feature royalty-free music.

#### Techniques:
Here are the main technical/algorithmic tools we’ll be using:
- L-Systems (http://paulbourke.net/fractals/lsys/)
- Noise Functions (https://graphics.pixar.com/library/WaveletNoise/paper.pdf)
- Procedurally-generated realtime terrain creation (https://remptongames.com/2021/02/28/how-minecraft-generates-massive-virtual-worlds-from-scratch/)

#### Design:
- Here's how our program will fit together:

![](finalProj.png)

#### Timeline:
- 11/22: Di- OBJs, L-Systems Tree Generation, Terrain Generation; Serena- Player Physics, Player State,
- 11/29: Di and Serena- phase-in effect and incorporating player state with generation properties (by the end of this week, hopefully have black sky and white terrain with structures, which will both exhibit desired behavior such as phasing in/out in a pixelated manner and becoming less natural).
- 12/06: Di- add textures, polish OBJs, normals; Serena- flower assets, House generation (stretch)

## Milestone 2: Implementation part 1 (due 11/22)
### Current Progress:
Thus far, we have created an engine that the player can move around in using keyboard and mouse controls. We have set constraints that move the player back to spawn if they travel too far, and we also change the color of the sky and terrain as the player moves farther away from spawn.

### Trouble Makers:
- instanced rendering trees
- modifying grammar
- converting lambertian shader to account for adjustments due to distance
- keeping player grounded

### Example Images:

Milestone 1:
![image](https://user-images.githubusercontent.com/60444726/142969128-989abb26-0b4b-4f1b-abed-2796b4c42ae8.png)

![image](https://user-images.githubusercontent.com/60444726/142969179-fb43fc6a-bc69-40f8-b196-14db582e72fa.png)

![image](https://user-images.githubusercontent.com/43430369/142970249-ecf053c6-22fd-4db3-805f-343fa6a005f1.png)

This week, Serena and Di implemented player state, player movement, random scattering of trees, and distance-based tree generation. The terrain currently contains many trees which are shorter and more "natural-looking" the closer to the origin, and more "rectangular" as it gets further away. As the player moves away, the trees become taller until eventually the player is reset to the beginning of the plane.

Milestone 2:

This week, Serena and Di implemented better L-systems grammar although now we are struggling with the trees becoming taller and appearing more menacing. Serena implemented a post-processing effect when the player teleports back to the origin.

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/29)
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/6)
Time to polish! Spend 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.
Loading