top of page

Scotty3D is and 3D editing application for CMU 15662 Computer Graphics assignments 2 (Mesh Edit), assignment 3 (Pathtrace), and assignment 4 (Animation), where the instructors provides the frame and work flow support, and the students are responsible for implementing the functionalities.

For assignment 5, students need to choose a direction to add feature extension to Scotty3D.

Proposal

Name: Yuchen (Carsten) Huang

Project: Advanced Dynamic Simulations

As my career goal (these recent years) is to be a gameplay programmer, I would like to practice a lot more about physics, math, optimization and motion. In assignment 4, the physics simulation makes really fascinating effects with fewest code, and that’s the beautiful nature of math and physics.

Specifically, the effect I want to implement most is cloth simulation, which increases artistic level of video games and animations. In this project, unlike the wave function in assignment 4, I would like to explore the shape of the mesh when continuous force is added to certain point, instead of giving a initial offset.

Break Down:

  1. Further understand the current framework, especially how offset, velocity and multi-threading is applied.

  2. Implement at least one more equation, preferring

    1. Mesh-based surface tension (Elasticity model)

    2. 3d shape editing

  3. Implement at least one more integrator

  4. (Optional) Modify the integrator to be multi-threaded. Should be possible, as it iterates all vertices twice in Forward Euler and Symplectic Euler.

Report

User Guide:

Currently cloth simulation and wave simulation are exclusive with each other.


Modification in source code to enable/disable cloth simulation:
Set offset_3d in mesh.cpp to true to enable cloth simulation, set to false to enable wave simulation.


Elasticity is defined in application.cpp near defination of damping_factor
Mass is defined in Vertex::clothSimulationAcceleration()

The cloth simulation runs (relative to other dae files) best with /dae/basic/plane64.dae

 

Walkthrough:
Press 'A' to enter Animation mode
Then press 'H' to enter clotH mode
Click to select at least one vertex to set the anchor (static in simulation)
Click play button to watch the animation


Developer and Grader Guide: 

The current simulation result is not satisfactory due to my time management issues.
The elasticity of springs is not tweaked to a good point.
Making springs on triangle meshes makes the forces unbalanced.
There is no implementation to prevent intersection.

Ways to improve:
1. Use quad mesh instead of triangle mesh.
2. Improve the physical model by defining three types of springs for different edges, instead of one.
3. Add intersection prevention.
4. Make elasticities (k) and vertex mass tangible from GUI.

According to proposal, the code implemented:
1. 
Support in the OpenGL framework application. 
Added cloth simulation mode, and ways of interaction.

2.
Modified physical model from single scalar offset to 3D offset vector.
Basic physical model to compute elastic forces when viewing edges as springs
The simulation result is not realistic, but converges to a dynamically stable state
In real life, cloth should end up to a static stable state

3.
New integrator is NOT implemented.

bottom of page