This podcast discusses 3D pose estimation using ml5.js and the BlazePose model, which provides 3D keypoints in meters relative to the body's center, unlike the 2D keypoints from PoseNet. The presenter demonstrates how to visualize these 3D keypoints within a WebGL 3D scene in p5.js, including rotating and scaling the scene, and shows how to translate to different positions in the scene to create a more complex 3D rendering.
BlazePose Model
• 00:00:37 The BlazePose model estimates 3D keypoints, providing X, Y, and Z coordinates in meters, unlike the 2D keypoints from PoseNet. The 3D coordinates are relative to the center of the body, specifically the hips, and the model places the body in a 2x2x2 meter box.
3D Visualization
• 00:05:01 The podcast explains how to render the 3D keypoints in a WebGL 3D scene using the p5.js library. The origin in WebGL is the center, which is suitable for working with XYZ coordinates relative to the body's center. The presenter demonstrates how to adjust the canvas size and scale the scene to visualize the 3D coordinates appropriately.
Webgl and 3D Rendering
• 00:05:45 The podcast explores utilizing the p5.js webgl renderer to create a 3D scene for visualizing the 3D pose data. It addresses the origin change in webgl and how to scale the data to fit the canvas size. It also introduces the concept of depth sorting, which affects how objects are rendered in the 3D space.
Transformations in 3D
• 00:12:14 The podcast describes how to use translate, push, and pop to draw 3D shapes at specific positions in the scene. This is necessary when working with objects that are not simply points and allows for a more complex visualization of the 3D pose estimation. The podcast further discusses drawing and rotating 3D boxes to emphasize the capabilities of translate.