DRAWING SIMULATOR
I have been developing a first-person Drawing Simulator tool in Unreal Engine 5. For now, it is a tool that I am using for some experimental animation projects, but it is something that will eventually become a full fledged first-person drawing game.
It started from an interest in actually replicating the physical feeling of drawing in a software context. While programs like Photoshop and MS Paint are highly effective JPG makers and file editors, I wanted to create a program that actually replicated the feeling of being in a room, sitting down, and drawing on a piece of paper with your own hand.
As this is an ongoing project, I will be keeping development notes and screenshots here on this page.
All code done inside UE5’s blueprint scripting.
It started from an interest in actually replicating the physical feeling of drawing in a software context. While programs like Photoshop and MS Paint are highly effective JPG makers and file editors, I wanted to create a program that actually replicated the feeling of being in a room, sitting down, and drawing on a piece of paper with your own hand.
As this is an ongoing project, I will be keeping development notes and screenshots here on this page.
All code done inside UE5’s blueprint scripting.
The Drawing Simulator project has been the most fascinating and challenging coding project I’ve taken on to date.
Making a disembodied, floating pencil follow a trace to a piece of paper and draw on it is a really simple task. Its mostly about drawing a trace from your mouse cursor out to a point in 3D space, and simply making a mark where the trace hits. However, once you attatch that drawing tool to a hand, which is attatched to a rigged and animated character that is being controlled by a player, the task becomes much more complex.
In real life, picking up a pencil or a pen and drawing with it on a surface is one of the most basic and intuitive actions that we do. We know how we’re supposed to hold it with our fingers, where the tool is supposed to rest in our hand, and that the ink or the graphite comes out of the tip of the tool. We know that if we move our hand to the top right corner of a large drawing surface, our hand has to rotate in a different way than it does if our hand is in the bottom left. We know how to draw in a straight line or circle even while our hand is undergoing these different rotations.
We know all those things, but the computer knows none of them, and as the programmer you have to teach it. All of those very simple actions become extremely complex problems to solve. You have to teach the computer how to percieve and recognize things in the world , and how to act and react in relation to that world.
---
As of now, I have been able to push the Drawing Simulator to the point of achieving all the natural motions of drawing at a basic level.
When I return to working on the project, I will be looking to add in more complex interactions- like adding controls to let the character crouch or stand on their tip toes while drawing to reach different parts of a surface. The character will also eventually be able to sit down, stand up, lie down, etc. and draw from every position. I would eventually like to give the player the ability to draw on their built environment.
I also intend to add in an entire suite of tools for the player to use- erasers, paint brushes, spray paint cans, markers, and handheld sketchpads.
Making a disembodied, floating pencil follow a trace to a piece of paper and draw on it is a really simple task. Its mostly about drawing a trace from your mouse cursor out to a point in 3D space, and simply making a mark where the trace hits. However, once you attatch that drawing tool to a hand, which is attatched to a rigged and animated character that is being controlled by a player, the task becomes much more complex.
In real life, picking up a pencil or a pen and drawing with it on a surface is one of the most basic and intuitive actions that we do. We know how we’re supposed to hold it with our fingers, where the tool is supposed to rest in our hand, and that the ink or the graphite comes out of the tip of the tool. We know that if we move our hand to the top right corner of a large drawing surface, our hand has to rotate in a different way than it does if our hand is in the bottom left. We know how to draw in a straight line or circle even while our hand is undergoing these different rotations.
We know all those things, but the computer knows none of them, and as the programmer you have to teach it. All of those very simple actions become extremely complex problems to solve. You have to teach the computer how to percieve and recognize things in the world , and how to act and react in relation to that world.
---
As of now, I have been able to push the Drawing Simulator to the point of achieving all the natural motions of drawing at a basic level.
When I return to working on the project, I will be looking to add in more complex interactions- like adding controls to let the character crouch or stand on their tip toes while drawing to reach different parts of a surface. The character will also eventually be able to sit down, stand up, lie down, etc. and draw from every position. I would eventually like to give the player the ability to draw on their built environment.
I also intend to add in an entire suite of tools for the player to use- erasers, paint brushes, spray paint cans, markers, and handheld sketchpads.