Skip to the content.

This is the repository for COMP5411 Advantage Computer Graphics in HKUST (year2021).

In this class I have complete some assignments and a final project.

Assignments include:

Final Project:

Final Project: Rendering Fur On Bunny

Our group using webgl and three.js to render fur on a bunny object. We also render a background scenario and illuminate some light effects.

Summary

The proposal of our project is here. proposal

Here is the proposal video for our project:

Please check more details in the proposal video.

The major challenges we faced are:

1. How to generate a real-time realistic fur:

First, we sample some points on each mesh of the bunny randomly. How many points we sample decides the fur density. We call this plane with sampled points one slice.

realistic-fur_1

Then we grow slices on the direction of mesh normal. It means we convert a fur fiber into several fur points along the mesh normal direction.

realistic-fur_2

And when one piece of fur slice moves around, all the fibers in this group moves. This operation fastens the rendering computation efficiently to avoid calculating each fiber’s movement.

2. How to import a complex obj module into the program:

Our bunny.obj files contains faces and vertices. However, we also need to know the normals of each face and how does the texture map onto each slice. So we utilize blender to pre-compute these normals and texture maps.

module_1

Then we found that .obj can’t save these parameters. So we convert the models into .js file which contains the whole information.

module_2

What’s more, we also remesh the bunny to have a uniform density of fur. And we do the smooth operation to have a soft varying normals.

module_3

3. How to set background scene and finish the light illumination:

We add background texture to simulate bunny is on a moon and using the phong illumination model and phong shading algorithm.

phong-illumination-module

video:

Here is the firnal report video for our project:

Please check more details in the final video.

Assignment 1: Laplacian Smoothing

I implement the explicit Laplician smoothing using the uniform weights and the cotangent weights. And I also implement the implicit Laplacian smoothing using uniform weights and cotangent weights.The result and report of this assignment is here. Laplacian Smoothing Report

explicit

uniform weights

Find the average position for the all the neighbors of point Xi. Using the difference between the average point and the point Xi to indicate the direction to smooth the point Xi.

laplacian-smoothing_1

contagent weights

laplacian-smoothing_2

laplacian-smoothing_3

implicit

implicit integration approximate derivative using the new mesh.

laplacian-smoothing_4

Assignment 2: Naive Laplacian Deformation

I implement the naive Laplacian deformation. I use the differential coordinate to encode the geometric details of each vertex. People can select some points to move and the deformation problem can be formulated as a least square problem, whcih contains two part: the regularization part and the matching part. A paper and report show the method in detail is here. Naive Laplacian Deformation paper and report

naive-laplacian-deformation_1

naive-laplacian-deformation_2

naive-laplacian-deformation_3

naive-laplacian-deformation_4

The result video is here.

Please check more details in the Naive Laplacian Deformation Video.