Projector_Render_1_Main.jpeg

Concept

One key feature I wanted in this projector was portability. I searched through provided AI images and used my own AI prompts to find inspiration. Initially, the idea was for the projector to assist early-1900s painters in creating signs and murals on buildings. This concept later evolved into a destination projector (portal) inspired by World War 2 field radios. It retained elements from the original idea, but now its purpose was to project an image into the environment and create a portal of some kind.

Provided AI generated image reference

Provided AI generated image reference

Personally generated AI image reference

Personally generated AI image reference

Modeling in Blender

A month before the course started, I took it upon myself to learn Blender. With limited knowledge, I aimed for simplicity, using cubes, cylinders, and spheres to create the foundation. I frequently used the "boolean" modifier to subtract objects and the "mirror" modifier to speed up modeling by cutting it in half and making quick changes. Lastly, I relied on the "bevel" and "array" modifiers to curve edges and duplicate objects rapidly.

Since many of the shapes and features of the projector were simple, I added standout objects, such as a tangled chord between the projector box and the attached radio phone, and small but thoughtful additions. I learned how to create and attach the chord by following YouTube tutorials, Reddit forums, and more. Using Blender's "curve" functions, I created the chord and used curves as paths for other elements in the project, like the backpack straps, wires, antenna, etc. These later proved to be difficult to manage when it came to animating.

Screenshot 2023-12-28 at 2.35.49 AM.png

Texturing

With a specific idea and backstory in mind for this projector, I wanted the textures to represent its era. Initially, I tried to create my own materials, but they didn't match the concept I had in mind. I wanted the textures to reflect the projector's age, use, and users.

I used ambientcg.com for most, if not all, of the textures in this project. I looked for textures with rust, scratches, and dirt, as well as painted metal (specifically green for a military reference), copper, and gold. Wood and fabric textures were also used for accents and specific materials like the backpack straps. To apply multiple textures to the same object, I had to edit and assign specific faces with new materials or textures, which sometimes required tinkering with the inside of an object's texture.

Projector_Render_6_Full.jpeg

Animating in Godot

Initially, I used Blender's NLA feature to animate everything. However, I couldn't export these animations to Godot, so I had to redo them. Godot’s animation player stored the new animations, and other nodes like AnimatableBody3D and CollisionShape3D, allowed me to interact with objects within the scene. Godot's animation capabilities were surprisingly easy to manage. Some objects, like the phone cord, didn't behave the same as in Blender. To make the 'Phone' object interactable, I had to create a simple cord directly in Godot. I modeled and placed over 30 small pieces individually to align with the phone animations. This was the most time-consuming part of the whole process.

Interaction Design

For the user interface (UI) and user experience (UX) of this project, I have added controls to navigate the camera, enhancing the interactive (viewing) experience. These controls are displayed permanently. When an object is clicked, an information panel about the object appears. There is also a 'Restart' button that allows users to start over.

I have included sounds from FreeSound.org for all interactable areas and added volume bars for adjusting the master volume and background sound.

The interactable areas on the model include the font cap, box camera, glass pane holder, phone, switches and dials, slider(s), door, water, and portal emitter. These can be seen in the video walkthrough. The leg animation plays at the beginning but cannot be triggered again due to how it was originally animated.

To ensure that users stay within the projector's vicinity, there are limits to the user's viewing height and distance. Lastly, the interactable buttons change color when hovered or clicked, which is a native feature of the Button node in Godot.