Concept
I got inspired by another interactive work that was designed as a cozy coffee shop, where the user could walk in and interact with a few things. I thought, why not do something similar using my own artwork? This is how I came up with the idea of creating an interactive art gallery. There would be multiple drawings and paintings of mine, each with its own interaction and movement controlled by the mouse. It’s like stepping into the story of each painting and showing how a simple interaction can change its mood. I also think this concept could draw more people toward art, especially on a larger scale, because it offers a more engaging experience than simply looking at static artwork.
A part of the project I’m really proud of is the flower and teddy bear paintings because I really like how the animations turned out, and they were also the most fun to work on! I wanted to add animations to the other paintings as well, but I realized that some ideas would be too time-consuming, so I settled for simpler methods. There were also some ideas I had to scrap because they didn’t work as I expected, even after multiple adjustments. I just couldn’t achieve the natural and realistic feeling I was aiming for.
To make the gallery feel less empty, I added paintings as decorations on the side walls (credits to my sister for one of the paintings). However, I couldn’t figure out how to tilt them to match the perspective of the walls, so I decided to edit them using another tool and turn the entire gallery into an image. I also chose to make the paintings look pixelated from a distance as an artistic choice. Since the background still felt a bit empty, I added a decorative pattern, using YouTube videos as references to help me create it.
To make the code more efficient, I created a class for the four paintings and gave each one its own coordinates and dimensions. This made it easier to detect where the mouse was clicked and change the game state to display the corresponding painting. Therefore, I didn’t have to repeat the if statement in mousePressed function.
function mousePressed() {
// CHANGE STATE BASED ON WHERE THE MOUSE IS CLICKED //
if (gameState == 'gallery') {
for (let p of paintings) {
if (mouseX > p.x && mouseX < p.x + p.w &&
mouseY > p.y && mouseY < p.y + p.h) {
gameState = p.name;
break;
}
}
For the interactions, I settled on using the mouse. Some paintings respond to the mouse’s Y-axis, while others require the user to click on them. I chose clicking for certain interactions because I feel like people instinctively click on things to see if they do anything. I wanted the interactions to feel simple, so users could discover them without needing complicated instructions.
References and AI Usage
I mainly used references provided on the course website and the p5.js reference page to understand how to implement different features. I also used AI for some of the trickier parts of the project that I couldn’t find a solution to on my own, such as creating the flickering flame effect for the candle painting. AI helped me understand how to approach the perlin noise effect and implement it in my code, it suggested methods to use and explained each of them. It also helped me in the color transition in the sunset painting. Other than that, I relied on the knowledge I gained from previous assignments.
let darkness = map(sunY, 150, 450, 0, 80); let transition = map(sunY, 250, 450, 0, 1); // TRANSITION THE COLOR FROM ORANGE TO PURPLE DEPENDING ON THE SUN Y AXIS // let skyColor = lerpColor(orange, purple, transition); skyColor.setAlpha(darkness); fill(skyColor); rect(250, 25, 500, 650);
Reflection
I’m really proud of this project, especially because I got to showcase my own art. I think the idea has a lot of potential and could be executed in various ways. Perhaps I dreamed bigger than my current skills allowed, but I see that as an opportunity to learn. If I had more time, I would have put more effort into developing the interactions and refining the artwork. In the future, as I gain more coding experience, I’d like to explore this concept on a larger scale and make the gallery more detailed.




