3D Dress Up
Programming language: Javascript. HTML/CSS, Three.js, WebGL, GLSL ES
I tried to change a 2d dress up game into a 3d game. User can choose hairstyles, clothes, skirts, shoes to dress up a little girl. They can also change the pet for the girl to furnish the scene. This project is finished by Javascript with Three.js. I made all the 3d models, did the textures and did all the programming by myself.
I tried to change a 2d dress up game into a 3d game. User can choose hairstyles, clothes, skirts, shoes to dress up a little girl. They can also change the pet for the girl to furnish the scene. This project is finished by Javascript with Three.js. I made all the 3d models, did the textures and did all the programming by myself.
WebGL Study
Programming language: Javascript. HTML/CSS, WebGL,GLSL ES
User can change the models, textures, materials, shading effects, base color and add point/ ambient/specular/directional light into the scene. This project is finished by Javascript and WebGL without using any library.
User can change the models, textures, materials, shading effects, base color and add point/ ambient/specular/directional light into the scene. This project is finished by Javascript and WebGL without using any library.
Subdivision
Programming language: C++, OpenGL.
Input: A virtual camera, A loaded mesh, and A texture
Output: A rendering of the mesh using the given camera and texture. With each press of the `r’ key, the mesh should be subdivided using the loop subdivision algorithm.
Loop subdivision algorithm is a two-pass algorithm: the first pass creates all the new points and triangles, and the second refines all the old points that were not created during the first pass. It is an approximating algorithm, which means that the existing vertices are modified during subdivision.
Input: A virtual camera, A loaded mesh, and A texture
Output: A rendering of the mesh using the given camera and texture. With each press of the `r’ key, the mesh should be subdivided using the loop subdivision algorithm.
Loop subdivision algorithm is a two-pass algorithm: the first pass creates all the new points and triangles, and the second refines all the old points that were not created during the first pass. It is an approximating algorithm, which means that the existing vertices are modified during subdivision.
Raytracing
Programming language: C++
Input: Several scenes make up of various geometries, a loader, and an OpenGL renderer that approximates the lighting of the scene.
Output: Produce an image created by raytracing the scene by implementing the Raytracer::raytrace function. All have recursive rays depth of 3.
Intersection test on different geometries and diffuse, texture, and reflection color calculation.
Input: Several scenes make up of various geometries, a loader, and an OpenGL renderer that approximates the lighting of the scene.
Output: Produce an image created by raytracing the scene by implementing the Raytracer::raytrace function. All have recursive rays depth of 3.
Intersection test on different geometries and diffuse, texture, and reflection color calculation.
Physics Engine
Programming language: C++
Input: Several scenes with both dynamic and static bodies.
Output: Finish a physics engine that simulates collisions between spheres, triangles and planes. Program the animation of spring interactions between bodies and add force, damping, gravity by implementing Runge-Kutta 4th Order.
Input: Several scenes with both dynamic and static bodies.
Output: Finish a physics engine that simulates collisions between spheres, triangles and planes. Program the animation of spring interactions between bodies and add force, damping, gravity by implementing Runge-Kutta 4th Order.
GLSL Shading Effects
Programming language: C++, OpenGL,GLSL
Input: Scenes, and functions to load shaders.
Output: Shaders that modify the rendering to have black outlines. They must be based on a combination of deference in depth and deference in surface normal. Shaders that simulate motion blur effects when the camera moves.
This is a 4 passes pipeline.
1st pass: use a shader to convert vertex normal to color (make a normal texture/normal map).
2nd pass: use openGL fixed-functionality to render the mesh to fbo, get color texture and depth texture.
3rd pass: based on depth and normal texture, compute the outline, use color texture to cover the rest of the image.
4th pass: combine current frame and previous frames of the output in 3rd pass, get motion blur effect.
Input: Scenes, and functions to load shaders.
Output: Shaders that modify the rendering to have black outlines. They must be based on a combination of deference in depth and deference in surface normal. Shaders that simulate motion blur effects when the camera moves.
This is a 4 passes pipeline.
1st pass: use a shader to convert vertex normal to color (make a normal texture/normal map).
2nd pass: use openGL fixed-functionality to render the mesh to fbo, get color texture and depth texture.
3rd pass: based on depth and normal texture, compute the outline, use color texture to cover the rest of the image.
4th pass: combine current frame and previous frames of the output in 3rd pass, get motion blur effect.
GLSL ES Shading Effects
Programming language: WebGL,GLSL ES, JavaScript
Input: A platform with some models.
Output: Different shaders that show the models in different effects, including toon shading, phong shading, lambert shading, rainbow shading, wireframe and xray.
User can load their own models to our platform, and they can see their models in different modes by pressing different shading buttons.
Input: A platform with some models.
Output: Different shaders that show the models in different effects, including toon shading, phong shading, lambert shading, rainbow shading, wireframe and xray.
User can load their own models to our platform, and they can see their models in different modes by pressing different shading buttons.
OpenGL
Programming language: C++, OpenGL.
Input: An obj file(mesh). A computing method for heightmap.
Output: A static mesh with changing material and an animated heightmap.
Input: An obj file(mesh). A computing method for heightmap.
Output: A static mesh with changing material and an animated heightmap.