Ding (Isaac) Zhang
Programmer
Hi, thank you for visiting my site!
I am Ding Zhang, a programmer who loves Games & Computer Graphics. Currently, I major in Master of Entertainment Technology at Carnegie Mellon University and I graduated from Shandong University with a Software Engineering degree. Feel free to explore some of my works at both CMU and Shandong University!
​
Projects
Rhythm
ETC Project
This is a UE4 rendered animation done by a team of six. I am working as a tech artist on this project. Since our concept art has a unique style, my main responsibility is to help achieve that style in UE4. I solved some technical problems like hiding water in the boat, DOF for translucent objects and reflection, crash on importing geometry cache, etc. Being a TA, I also helped to create materials, VFX, and editor utilities.
Realtime Ink Simulation
Personal
This attempts to mimic traditional Chinese ink wash painting in realtime. The algorithm is physically based but with some simplification. It regards the render target as a piece of paper and simulates the ink dispersal inside the paper structure. The initial ink comes from the geometry and lighting of meshes.
The idea is from a paper.
NOTE: this technique is realtime but it's hard to be used in a game. It's expensive.
Ray Tracer
Academic
One of the assignments for Computer Graphics at CMU. A simple ray tracer built over provided base code. Implemented path tracing, Russian roulette, surface area heuristic BVH, image-based lighting, importance sampling on environment map, etc. The scene is created in Blender with Animation Node plugin.
NextAR
ETC Project
NextAR is an ongoing project aiming for creating a networked social AR experience. We want people in different physical spaces to interact with each other through our product and improve their relationship during their experience.
We are doing pass-through AR by using HTC Vive Pro and ZED camera. Also, we use Leap Motion to track the user's hands because we want to bring our users a natural experience.
I am one of the two programmers in our team. I am mainly dealing with physics, replication optimization, and some part of gameplay systems (e.g. the interaction between objects and fire, building the campfire). Also, all the materials and visual effects are done by me.
Volfy Von Volfson Hunts Wolves
BVW Round 5
Volfy Von Volfson Hunts Wolves is a three week VR game for Valve Index. In the game, the player will act as a hunter to kill demoniac wolves.Â
In this game, I designed and implemented AI for the first boss wolf using behavior tree. I also created some particle effects and sound effects for the game. Another part of my work is optimization. Since we have an outdoor scene with many high-poly meshes and nine terrain layers, we got some performance issues in early builds. I finally managed to use many techniques like LOD, camera culling, occlusion culling and instancing to increase our FPS from 55 to 102 on my PC.
Bubbels
BVW Round 4 (Story Telling)
Bubbels is a single-player VR experience on the Valve Index VR headset. It tells a story between Bubbels, a pet dog, and his owner. In the game, we jump back and forth between reality and memory to retrospect the key moments between the pet and the owner such as the adopting of the pet, their happy time in the yard and more.
I worked as a programmer building the AI for Bubbles using a simple finite state machine framework made by myself. I also recreated the GameEvent system, a ScriptableObject based tool introduced by Schell Games, to help to decouple and debugging. Finally, I made a simple procedural animation for Bubbles to look at his target while hanging around or look at the ball when the player holds it in the hand. This makes the interaction between the player and Bubbles much more natural and fun because it provides more feedback and it is similar to the real experience of playing with a pet dog.
BCW 2021
BVW Round 3 (Fun)
BCW 2021 is a one-week jam-o-drum game. Jam-o-drum is a device that has four controllers. Each controller contains a wheel and a hit pad. Players can rotate the wheels or hit the pads. In BCW 2021, the four players are divided into two teams, each team controls a pair of portals in the same color. A portal can absorb fireballs released by the boss and re-release them from the other portal in the same color to hit the boss.
I am the sound designer in this project. I created all the sound effects used in the game like fire, electricity, hitting, etc. And I also composed the battle BGM and the victory BGM which match the art style well.
Uncle Ke-Bob
BVW Round 2 (Naive Guests)
Uncle Ke-Bob is an AR game created for Magic Leap One in two weeks. In this game, the player needs to stab food flying to him/her to create kebabs and serve the customers. As this game is designed for naive guests, we simplified all the interaction into stabbing, even the buttons for starting and resetting the game are tomatoes which can be activated by stabbing them.
In this project, I worked as a programmer and I also created some sound effects. My main work is the customer and ordering system, the delivering and scoring system, as well as part of the stabbing system.
ARAP Shape Manipulation
Personal
This is an interactive as-rigid-as-possible shape manipulation demo implemented with C++ and OpenGL. The input is a triangular mesh file. Users will be able to add handle points to vertices by right click on them, and then hit "C" to compile (do some pre-calculation). After that, they will be able to drag each handle anywhere else and all other non-handle vertices will be moved automatically. Those green triangles show a middle step of the deformation.
The algorithm is from this paper.
Realtime Rendering in OpenGL
Academic
This is basically an assignment from my Computer Graphics course at Shandong University. Although the original task is to make a simple maze game, I made it a roaming app in which there exists a maze, lol.
In this program, I mainly focused on implementing some real-time rendering algorithms, including deferred rendering, bloom, normal mapping, skybox, shadow mapping, environment mapping, light sources, tone mapping, gamma correction and object picking (for turning on/off the cube shape point lights).
Solitaire
Academic
This is an assignment from the Object-Oriented Programming course at Shandong University. I reimplemented the classic Solitaire game using OpenGL. Inspired by Unreal Engine 4, I built a simplified code structure to organize classes and decouple the dependency between them.
I used several OO principles and design patterns in the code. For example, I utilized the Command pattern to obtain the undo/redo function and applied the Chain of Responsibility pattern to handle UI events correctly especially for cases that several cards overlap with each other.