CAGD 458 - Blog Post 3 - 4/26/2026

    In this sprint I focused on making sure each point of interest loads the correct model and gives the user a clear way to enter the viewer. In the demo, you can see the flow begin with a location specific popup, followed by the option to enter the 3D model viewer. Each POI is tied directly to its own model prefab, so when the viewer opens, the correct model is always displayed for that location. This keeps the experience consistent and ensures the user is always looking at the intended content without any mismatch between the POI and the model.

    I also implemented the 3D model viewer button as the entry point into this interaction. This gives the user a clear and intentional way to move into the viewer instead of loading it automatically. In the demo, this transition is immediate and keeps the user within the same flow, which avoids unnecessary loading or confusion. The goal here was to make accessing the model feel direct and predictable, while still being tied to the context of the selected POI.

    Once inside the viewer, the interaction is built around allowing the user to freely explore the model. As shown in the demo, swiping across the screen rotates the model in real time. I calculate the difference between the current and previous pointer positions each frame and use that to drive rotation updates. Horizontal swipes rotate the model freely around the Y axis, giving full 360-degree control, while vertical movement adjusts the X rotation and is clamped to prevent the model from flipping over. This keeps the interaction intuitive while still maintaining control over extreme angles.

    The rotation is applied continuously using a Quaternion, which keeps the motion smooth and stable across all angles. I also normalize the starting rotation so the interaction behaves consistently no matter how the model is initially oriented. The result is a system where the user can enter the viewer, see the correct model for the selected POI, and rotate it naturally with simple swipe input. This directly supports the core user goals of viewing a model and examining it from all angles without friction.

Comments