Tweet: Competitively model/sketch against a friend using spheres, cubes, cones, and cylinders that seamlessly gloop into each other!
Overview: This is a two player game in which you do your best to “sketch” an example scene in front of you using simple shapes rendered with a hatching shader that you combine into more complicated scenes and forms. Through the power of raymarching and shapes rendered using math equations rather than meshes, shapes smoothly blend together as you translate, rotate, and scale the 4 available default shapes. A simple 2D image comparison algorithm decides if you or the other player is winning and will brighten or dim the spotlight on your easel based on how you’re doing. This game plays on the idea of going between 2D and 3D in sketching and modeling, the interplay between form and contour.
Narrative: What inspired me was a combination of “Real-Time Hatching” by Praun et al. and Sloppy Forgeries. I wanted to implement that shader mainly, and after thinking more, decided I wanted to make some kind of game that would make people think about the role of thinking in 3D for something like 2D drawing.
In the interest of time, I wrote this in the game framework I am most comfortable in: the base code James McCann uses for his Computer Game Programming course here at CMU. I relied on Inigo Quilez’s notes on raymarching and distance functions as well as his shadertoy implementation of raymarching primitives. I also took from this implementation of the hatching paper. Essentially, much of the technique behind this game involves me sticking together lots of other people’s code and doing my best to make it all work together. Despite that, I struggle a lot on getting raymarching working properly, with the scoring algorithm, and with lag between the two players that didn’t pop up as an issue until I finally ran it on another person’s computer instead of just running it in two windows on my own.
I suppose the success of this project I’d measure in terms of what I’ve learned about in terms of shaders (which was a main motivating factor of making this) and how well it serves as a fun game to play. I’ve kind of succeeded and kind of failed in both. I learned some stuff, although probably not as much as I would have if I’d implemented all shaders from scratch. Some people at the final show had fun with my game and complimented the idea and interesting experience. Personally I was proud of the fact that I’d made an UI of some kind that wasn’t just keyboard inputs for the first time ever, but I think my UI confused and frustrated a lot of people. The networking issues with lag also made the actual competition part of the game largely impossible during the show.
Github repo: https://github.com/jackajackalop/Modest-Mimicry
Change of plans. Trying to make custom shader code for Unreal has proven a mild nightmare. I’ll keep working on that slowly but my final project will just be fixing up my drawing assignment. I’d like to make the comparison algorithm less bad and maybe add a clickable UI instead of all keyboard presses and also fix whatever bug is making it crash any mac computer I run it on.
For my final project I’d like to work on a project I’ve been doing as an Independent Study. I’m implementing the paper, “Art Directed Watercolor Stylizations of 3D Animations in Real-time”. Currently only a Maya implementation exists, so I’ve been working to make and release code so that people can use the watercolor style on their games. I’ve mostly completed a C++ implementation, and I’d like to make an implementation for Unreal Engine as my final project for this class (I got permission from my advisor, Jim McCann already). I’m also in the process of documenting my project so far and making a poster for Meeting of the Minds.
From my critique papers it seems people liked my project which was nice and pleasantly surprising. I got a lot of comments about the humor and specificity of it, and also lots of discussion on playing specific roles in relationships/conversation. I feel like this critique format isn’t great though because it feels like so much of the paper form thing is just describing the project, and without specific prompting for criticism I didn’t really get much of it or suggestions for changes.
This is a project for Eric, but also just for me, as is most of my projects. For some context, Eric is my roommate/platonic life partner(as dubbed by tli), and I made this thinking about patterns and routine in communication and also honesty. A very embarrassing project to look at really. Also it’s mildly Undertale inspired because we played that together recently and I like it.
So the gist of it is; as we message, certain specific buttons will appear based on the current conversation. Hit one of those buttons and an message will be sent on your behalf explaining your situation/feelings. Also, because we’re both indecisive there’s a button that’ll webscrape either mine or Eric’s MyAnimeList and choose an anime one of us was planning to watch, and a button that allows you to input a list of choices for it to choose from.
I’m making personalized chatbox things for a few of my friends. Mainly I was thinking about how you can set a messenger chat emoji, and people kind of spam that and use it just to show you acknowledge something. So I’ll make messenger chat emoji’s but they’ll be buttons with very specific messages on each.
I wonder if this would be better as predictive text suggestion things instead of always the same buttons on the screen? Also now that I’m making these, I realize some of these things I feel kind of embarrassed to have people read. Also progress is slow because I decided to finally learn some CSS html things instead of just implementing it myself like a dirty hack as I usually would.
- Utsukushiki Tennen by Romane Granger
This is the first part of my looking outwards. It’s an experimental animation made with stop motion. Her other works are done with clay, and this one is likely done with clay as well but I’m not certain. Overall I’m not a huge fan of her work. I think it’s just not something I particularly enjoy watching as someone who prefers narrative over abstraction and also dislikes watching videos out of impatience, but there are really interesting movements and moments in them that I find inspiring for the telematic art project. This project of hers seems less polished overall than her other pieces, such as Ocean Blues #1, but this one has more relevant movements.
2. Flower gifs by Anna Taberko
These are gifs made by Anna Taberko (https://www.instagram.com/anna.taberko/). I like these for similar reasons as the first piece I listed, juicy movements. There’s good easing motions too. I guess my critique for this is then that the colors used are okay but not great. These are made frame by frame using Photoshop and After Effects. Their entire body of work (on instagram at least) just seems to be these zoetropic looping gifs, mostly of flowers, which is cool and good for branding I guess, but a bit boring after a few.
(This nose was from earlier, before I implemented scoring and timer)
I was thinking about a combination of Sloppy Forgeries and the importance of thinking about how simple shapes make up more complex forms when making paintings with dimensionality. I wanted to make this game so that people could learn to think about that kind of thing so in some ways I wanted this to be a “Learning to Draw Software” as well as a “Drawing Software”.
Disaster struck nearish to the official deadline of the project in the form of realizing that what I set out to make this project in (Three.js) was a billion times too slow for the updates and calculations raymarching required. So here I am now, 17 days late turning this in.
Overall I’m pretty proud of this. I learned a lot; I implemented a raymarching shader (by implement I mean shamelessly stole from Íñigo Quílez), added some real-time hatching (again shamelessly stolen, this time from Jaume Sanchez Elias’s implementation of the Microsoft Research paper), and learned more about OpenGL (such as the very useful glGetTexImage). I’m also happy that I pushed through and finished this for my own sake.
Things that still need improvement: polish continues to be a struggle for my impatience. There’s no music or sound effects currently. UI remains my greatest enemy. The overall aesthetic could definitely be improved and made more unified. The comparison algorithm is hacky at best. Finally, the code is a mess with no added comments and old, completely irrelevant comments left in. That’ll have to wait until some other day though.
Here’s some initial planning
Hmm so the initial idea was to make a “mask” that would transform me into my Warrior cat-sona of my childhood (See here if you’re unfamiliar with Warriors). The relationship of the mask and the performance is that individual features of the mask are triggered by certain motions.
There’s a lot that I wish I could have done, but couldn’t do as I realized while progressing through this project. It seems p5.js can’t load .mtl files associated with .obj models, hence the mask is colorless. It seems p5.js can’t load more than one model at a time (I think????) so the performance and implementation ended up including switching between different features. You can see from the sketch below it looks pretty different from the final result.
Overall not a favorite project since it’s not particularly polished or attractive, but I had fun haha. With more time I’d like to switch to not using p5.js and also adding ability for the mask to rotate with my head.
We by artist trio Let’s is a colorful sculpture installation in which music and colorful light are created by people touching different parts of the installation. What I like about this project is that it’s very fun, and it’s the type of artwork that I’d enjoy seeing and playing around with at a museum. It’s accessible to anyone who sees it and encourages interaction with other people. From what I can tell, it seems like each part of the installation is associated with a set recorded sound/light effect? And I wonder if maybe that restricts the different kinds of experiences viewers can have a bit too much. We is very similar to previous pieces made by the group, although the visuals seem a bit more complex and involved than previously.
I made a bread eating race game with face tracking. I think I’ve mostly accomplished what I set out to do: the game works as desired and the face tracking works better than I’d hoped for. I think some details could be added, like having it so that while the dogs hang and gnaw on the baguettes, the baguettes should swing with the motion, or having the baguettes rotate instead of just translate with the motion of the rope, but with time constraints this is it. Ideally I would upload this on OpenProcessing or some place else so that people could play it, but for OpenProcessing at least, I’m not sure how to combine all my files or how to deal with my image files.