Implemented cloth simulation
based on mass-spring model. Used Cuda to compute particle positions on the GPU and OpenGL for rendering.
Implemented Catmull-Clark subdivision on arbitrary
meshes, modiﬁed by blending the extraordinary points with a cubic polynomial to obtain continuous
curvature. Used CGAL for mesh modiﬁcation/navigation and OpenGL for rendering. Implemented in C++.
See relevant paper by Adi Levin.
Implemented a particle system on
the GPU using the fragment shader to solve the ODE and compute particle positions. These were rendered
to a texture using OpenGL's Vertex Buffer Object (VBO) and subsequently rendered using another pass.
Implemented in C++ using OpenGL and GLSL.
Substituted the geometry
of a triangular mesh with bi-cubic Bezier Triangles (evaluated using de Casteljau’s algorithm) and a
quadratically varying normal to produce smoother shapes. Used OpenGL/C++/CGAL.
See relevant paper by
Alex Vlachos, Jörg Peters, Chas Boyd and Jason L. Mitchell
project involved modeling of the human face using 3D triangulation
data provided in .ply format. Skin was implemented using
texture mapping applied to a Nurbs Surface which was then fitted
to the model by dragging the control points.
Shading and Glass
Shading were implemented using Open GL Shading - GLSL. Also
implemented were Normal Mapping and Shadow
Volumes. All coding was done in Open GL.
Coded for a generative model in R3, with two classes each modeled by normal distributions, using a random number generator for a 1-D normal distribution. Implemented an incremental perceptron learning algorithm to classify samples generated i.i.d. and compared the empirical testing error with the expected classification error for the optimal discriminant, approximated by Monte Carlo integration. Implemented in MATLAB.
an Open GL program to implement a spline sketcher using Bezier
Curves, NURBS and Subdivision methods.
Allowed for picking and dynamic manipulation of control points.
an Open GL program to implement linear transformations on platonic
solids. A 3D scene was created, and 3 tetrahedrons
were stacked onto one another, aligned by their edges. The lowermost
allowed to translate in the z-x plane, while the other two tetrahedrons
were allowed to rotate about independent axes, at the point of contact.
The transformations were hierarchical, so that a transformation
to the lowermost tetrahedron affected the other two but not vice-versa
(Akin to the robotic arm in the Redbook). Any tetrahedron could be
picked using a mouse and manipulated using the mouse or the arrow
keys. The world and the camera could also be rotated independently.
motion of a solid from
the tip of the topmost tetrahedron onto the z-x plane.