Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
53 commits
Select commit Hold shift + click to select a range
d972ee6
design doc
sarahforcier Apr 8, 2017
0d90ad0
typo
sarahforcier Apr 8, 2017
6629428
static perlin sky
sarahforcier Apr 9, 2017
65f1e15
layout scene
sarahforcier Apr 9, 2017
db0d246
moving camera and sky
sarahforcier Apr 18, 2017
ba6881b
rocks pulsating
sarahforcier Apr 19, 2017
3089c50
milestone1
sarahforcier Apr 19, 2017
6239960
txt
sarahforcier Apr 19, 2017
2ee55dd
new deploy
sarahforcier Apr 19, 2017
f7504e0
spline map partial
sarahforcier Apr 26, 2017
28ef8eb
canyon path
sarahforcier Apr 28, 2017
e799d1d
milestone2
sarahforcier Apr 28, 2017
87cbca4
milestone2
sarahforcier Apr 28, 2017
0d15c08
readme
sarahforcier Apr 28, 2017
dfed134
rain
sarahforcier Apr 29, 2017
0c8f95c
rain drops
sarahforcier Apr 29, 2017
a7dd7a5
fog
sarahforcier Apr 29, 2017
c819914
load boat
sarahforcier Apr 30, 2017
166df03
report images
sarahforcier Apr 30, 2017
a7533f0
instanced geo
sarahforcier Apr 30, 2017
11c9e4e
boat
sarahforcier May 1, 2017
14c3217
stuck on instancing
sarahforcier May 1, 2017
e152b1c
final report
sarahforcier May 1, 2017
8e46371
image size
sarahforcier May 1, 2017
706e1e9
image size
sarahforcier May 1, 2017
59639dc
images
sarahforcier May 1, 2017
e5159a2
alignment
sarahforcier May 1, 2017
8b9540d
camera
sarahforcier May 1, 2017
b234d44
toggle
sarahforcier May 1, 2017
d1bea27
above
sarahforcier May 1, 2017
ec00ab6
3 viewpoints
sarahforcier May 1, 2017
eb4eff2
rawshader
sarahforcier May 2, 2017
f1d2d8f
no rain
sarahforcier May 2, 2017
bcc2335
works but don't like
sarahforcier May 2, 2017
b358c07
droplets
sarahforcier May 2, 2017
e9d6731
music is dumb
sarahforcier May 2, 2017
3e4f876
gui
sarahforcier May 2, 2017
5f279d5
final touches
sarahforcier May 3, 2017
4b4584c
image resize
sarahforcier May 3, 2017
b20af94
readme
sarahforcier May 3, 2017
57dcfe2
figures
sarahforcier May 3, 2017
b655f54
formatting
sarahforcier May 3, 2017
aa5b6b6
final
sarahforcier May 3, 2017
d19a6b5
deleted extra stuff
sarahforcier May 3, 2017
2bc8b33
edits
sarahforcier May 3, 2017
9bb1b9f
bigger pics
sarahforcier May 3, 2017
01760f1
image resize
sarahforcier May 3, 2017
27d5734
youtube
sarahforcier May 4, 2017
1ba56e2
default viewpoint
sarahforcier Jul 15, 2017
8ab1be4
more controlls
sarahforcier Jul 15, 2017
eeb3ec7
linux warning
sarahforcier Jul 31, 2017
c0a69f0
reword
sarahforcier Aug 1, 2017
53a4e0b
linux alert
sarahforcier Aug 7, 2017
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
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
node_modules
npm-debug.log
67 changes: 67 additions & 0 deletions DESIGNDOC.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
# Zionical

This project is inspired by [Panoramical][1], a game where players can manipulate landscapes musically. In this game, the environments are highly abstracted and colorful

## Goal

I would like to create an environment inspired by Zion National Park. The environment will be interactive with mouse and camera control. In addition, parts of the environment will move or pulse at the frequency of a chosen song. The entire program will be written in Javascript using the THREE.js library.

## References

### Zion

- #### Zion Canyon
![](./images/zionPark.jpg)

### Art Abstraction
![](./images/panoramical.png) ![](./images/panoramical2.jpg)

## Specification

### Color
In keeping with the abstract theme, the colors will be bright and closer to toon shading than gradients. There will be no actual lights in the scene, but objects will be visualized with abstract shaders instead. To give the scene more depth, I would like to add an ambient occlusion shader as well.
### Camera
The camera will appear to move through the base of canyon (either the camera or the geometry will move). In addition, the actual viewing direction will be interactive.
### Objects
Instead of creating a large environment and slowing down the FPS, the geometry will be stored in a buffer geometry with new vertices replacing the old behind the camera.
### Music
The frequency and amplitude of the background music will influence the frequency and amplitude of the textural noise.
Infinite camera moving. Abstract geometry, no lighting

## Techniques

The majority of the procedural techniques I will use are noise generation algorithms for creating rocky terrain. We have thus far explored the use of perlin noise, but for this environment I want to expand to different types of noise. As seen in the image above, Zion canyon is rocky and eroded. I believe the following papers and algorithms will be helpful in achieving this effect.

* [Realtime Procedural Terrain Generation][2]
* Perlin Noise and [Simplex][3] Noise
* [Diamond-square algorithm][4]
* [Fractal landscape][5]

I will try the various techniques and choose the one or ones that look the best artisticly.

## Design

![](./images/diagram.png)

## Timeline

### Week of 04/10
* Create rough rock formation
* Choose a song and animate some aspect of environment
* Move camera through the environment

![](./milestone1.png)

### Week of 04/17
* Create the canyon dugout

![](./milestone2.png)

### Week of 04/24
* Polish with shaders

[1]: https://vimeo.com/88946422
[2]: http://web.mit.edu/cesium/Public/terrain.pdf
[3]: http://webstaff.itn.liu.se/~stegu/simplexnoise/simplexnoise.pdf
[4]: http://stevelosh.com/blog/2016/06/diamond-square
[5]: http://paulbourke.net/fractals/noise/
11 changes: 11 additions & 0 deletions Milestone1.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
Completed for Milestone 1:
1.) The sky map is a sphere with 3d time based perlin noise. The colors are interpolated both from the noise value and the distance from the horizon. I want to mess with the colors a bit more for the final, but this is the generate gist. I am going for that abstract sunset vibe. The shader also has a toon shader on top of the noise value.

2.) The camera is animated along a closed spline with jittered knot points. The jitter is so that the animation is interesting with twists and turns. At the moment, the camera can do almost a 180 degree turn. I want to avoid that by restricting the jitter of the knot points to within a range of the surrounding knots. The camera also looks forward, which is good, but maybe it would be nice to be able to look around. I could let the user look around and when there is no mouse interaction, the view goes slowly back to forward (unlikely how it jerkily does this now).

3.) There webpage runs a song and I have puts frequency analytics on the music. I hooked the frequency to the perlin noise in the sky, but didn't like the effect. I want to also attach it to the rocks in the scene, but I haven't gotten the right parameters for it to look right.

4.) As for the main component, the canyon walls, I have tried multiple techniques. I tried first a vertical wall, but the noise looked strange. I also couldn't figure out to extend as the camera moved. I instead moved to a horizontal plane with very spiky noise close together. I still have the problem of extending with the camera movement, but I just figured out how to fix this, although haven't implemented it. From the spline data, I want to create a grayscale texture with black along the spline with a steep ramp to get the canyon walls. I should be able to send this texture to my shader and create a canyon that my camera can move through.

see image in README
demo here: http://www.sarahforcier.com/Project9-FinalProject
6 changes: 6 additions & 0 deletions Milestone2.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
Completed for Milestone 2:

From the points of the closed spline, I create a texture to be passed into the canyon vertex shader so that the noise can be applied only to the walls on either side of the canyon. Since the spline is only 1D. I most compose the texture in multiple passes. First, I map the spline to the texture, defining all points on the spline as 1. I then widen the path by taking the maximum value in a square area on the texture. Finally, I apply a gaussian blur in both the X and Y directions to get the detail on the walls of the canyon rather than a box transition.

see image in README
demo here: http://www.sarahforcier.com/Project9-FinalProject
Loading