diff --git a/content/tracks/main-tracks/ml5js-beginners-guide/index.json b/content/tracks/main-tracks/ml5js-beginners-guide/index.json index 9d0d6f92d..f98c698dc 100644 --- a/content/tracks/main-tracks/ml5js-beginners-guide/index.json +++ b/content/tracks/main-tracks/ml5js-beginners-guide/index.json @@ -34,7 +34,7 @@ }, { "title": "Landmark Detection", - "videos": ["ml5/7-bodypose/pose-detection", "ml5/hand-pose", "ml5/facemesh", "ml5/0-introduction/patt-vira"] + "videos": ["ml5/7-bodypose/pose-detection", "ml5/7-bodypose/blazePose", "ml5/hand-pose", "ml5/facemesh", "ml5/0-introduction/patt-vira"] }, { "title": "Train Your Own Neural Network", diff --git a/content/videos/challenges/10-dfs-maze-generator/showcase/contribution-1731984639.json b/content/videos/challenges/10-dfs-maze-generator/showcase/contribution-1731984639.json new file mode 100644 index 000000000..f0f733fa4 --- /dev/null +++ b/content/videos/challenges/10-dfs-maze-generator/showcase/contribution-1731984639.json @@ -0,0 +1,11 @@ +{ + "title": "Procedural 3d Maze", + "author": { + "name": "Erick Menezes", + "url": "https://mrmenezesdev.github.io/rascunhos/", + "instagram": "__mrmenezes" + }, + "url": "https://mrmenezesdev.github.io/rascunhos/#R_241120", + "submittedOn": "2024-11-19T02:50:39.820Z", + "socialPermission": true +} diff --git a/content/videos/challenges/10-dfs-maze-generator/showcase/contribution-1731984639.png b/content/videos/challenges/10-dfs-maze-generator/showcase/contribution-1731984639.png new file mode 100644 index 000000000..2c1053f5b Binary files /dev/null and b/content/videos/challenges/10-dfs-maze-generator/showcase/contribution-1731984639.png differ diff --git a/content/videos/challenges/124-flocking-simulation/showcase/contribution-1731880553.json b/content/videos/challenges/124-flocking-simulation/showcase/contribution-1731880553.json new file mode 100644 index 000000000..4e819d7f6 --- /dev/null +++ b/content/videos/challenges/124-flocking-simulation/showcase/contribution-1731880553.json @@ -0,0 +1,11 @@ +{ + "title": "Alphabet Life", + "author": { + "name": "Pierre Coric", + "url": "https://pierre-coric.top/", + "instagram": "https://www.instagram.com/pierrecoric/" + }, + "url": "https://pierre-coric.top/life/", + "submittedOn": "2024-11-17T21:55:54.261Z", + "socialPermission": true +} diff --git a/content/videos/challenges/124-flocking-simulation/showcase/contribution-1731880553.png b/content/videos/challenges/124-flocking-simulation/showcase/contribution-1731880553.png new file mode 100644 index 000000000..6e79b0f6e Binary files /dev/null and b/content/videos/challenges/124-flocking-simulation/showcase/contribution-1731880553.png differ diff --git a/content/videos/challenges/13-reaction-diffusion/showcase/contribution-1731867047.json b/content/videos/challenges/13-reaction-diffusion/showcase/contribution-1731867047.json new file mode 100644 index 000000000..9cf87d9f9 --- /dev/null +++ b/content/videos/challenges/13-reaction-diffusion/showcase/contribution-1731867047.json @@ -0,0 +1,9 @@ +{ + "title": "Full-screen Reaction Diffusion", + "author": { + "name": "Diego Ochoa" + }, + "url": "https://diegoochoaa.github.io/Reaction-Diffusion/", + "submittedOn": "2024-11-17T18:10:47.811Z", + "socialPermission": true +} diff --git a/content/videos/challenges/13-reaction-diffusion/showcase/contribution-1731867047.png b/content/videos/challenges/13-reaction-diffusion/showcase/contribution-1731867047.png new file mode 100644 index 000000000..42bd2a75c Binary files /dev/null and b/content/videos/challenges/13-reaction-diffusion/showcase/contribution-1731867047.png differ diff --git a/content/videos/challenges/13-reaction-diffusion/showcase/contribution-1732903159.jpg b/content/videos/challenges/13-reaction-diffusion/showcase/contribution-1732903159.jpg new file mode 100644 index 000000000..8e6e554ca Binary files /dev/null and b/content/videos/challenges/13-reaction-diffusion/showcase/contribution-1732903159.jpg differ diff --git a/content/videos/challenges/13-reaction-diffusion/showcase/contribution-1732903159.json b/content/videos/challenges/13-reaction-diffusion/showcase/contribution-1732903159.json new file mode 100644 index 000000000..ad27cd6f7 --- /dev/null +++ b/content/videos/challenges/13-reaction-diffusion/showcase/contribution-1732903159.json @@ -0,0 +1,10 @@ +{ + "title": "3D Reaction Diffusion in Blender", + "author": { + "name": "Jasmine Mah", + "instagram": "@beehivehoney" + }, + "url": "https://www.instagram.com/p/CsCHwpCutpF/?igsh=MWl0ajF4ZG1yMTJsdA==", + "submittedOn": "2024-11-29T17:59:19.514Z", + "socialPermission": true +} diff --git a/content/videos/challenges/146-rendering-ray-casting/showcase/contribution-1732549503.json b/content/videos/challenges/146-rendering-ray-casting/showcase/contribution-1732549503.json new file mode 100644 index 000000000..36293b1fd --- /dev/null +++ b/content/videos/challenges/146-rendering-ray-casting/showcase/contribution-1732549503.json @@ -0,0 +1,10 @@ +{ + "title": "2D and 3D raycasting with vanilla JavaScript", + "author": { + "name": "Aleksandr Hovhannisyan", + "url": "https://www.aleksandrhovhannisyan.com/" + }, + "url": "https://github.com/AleksandrHovhannisyan/raycasting-js/", + "submittedOn": "2024-11-25T15:45:03.372Z", + "socialPermission": true +} diff --git a/content/videos/challenges/146-rendering-ray-casting/showcase/contribution-1732549503.png b/content/videos/challenges/146-rendering-ray-casting/showcase/contribution-1732549503.png new file mode 100644 index 000000000..60d9e69bc Binary files /dev/null and b/content/videos/challenges/146-rendering-ray-casting/showcase/contribution-1732549503.png differ diff --git a/content/videos/challenges/166-image-to-ascii/showcase/contribution-1733109425.json b/content/videos/challenges/166-image-to-ascii/showcase/contribution-1733109425.json new file mode 100644 index 000000000..b3d33f463 --- /dev/null +++ b/content/videos/challenges/166-image-to-ascii/showcase/contribution-1733109425.json @@ -0,0 +1,11 @@ +{ + "title": "Bad Apple in p5.js code", + "author": { + "name": "Juan Carlos Ponce Campuzano", + "url": "https://www.dynamicmath.xyz/", + "twitter": "https://x.com/jcponcemath" + }, + "url": "https://youtu.be/8IWFDBocjMs", + "submittedOn": "2024-12-02T03:17:06.046Z", + "socialPermission": true +} diff --git a/content/videos/challenges/166-image-to-ascii/showcase/contribution-1733109425.png b/content/videos/challenges/166-image-to-ascii/showcase/contribution-1733109425.png new file mode 100644 index 000000000..e3525d562 Binary files /dev/null and b/content/videos/challenges/166-image-to-ascii/showcase/contribution-1733109425.png differ diff --git a/content/videos/challenges/171-wave-function-collapse/showcase/contribution-1731965151.json b/content/videos/challenges/171-wave-function-collapse/showcase/contribution-1731965151.json new file mode 100644 index 000000000..ef8c5b2a6 --- /dev/null +++ b/content/videos/challenges/171-wave-function-collapse/showcase/contribution-1731965151.json @@ -0,0 +1,11 @@ +{ + "title": "Penrose Wave Function Collapse", + "author": { + "name": "MrMenezes", + "url": "https://mrmenezesdev.github.io/rascunhos/", + "instagram": "@__mrmenezes" + }, + "url": "https://mrmenezesdev.github.io/rascunhos/#R_241118", + "submittedOn": "2024-11-18T21:25:51.898Z", + "socialPermission": true +} diff --git a/content/videos/challenges/171-wave-function-collapse/showcase/contribution-1731965151.png b/content/videos/challenges/171-wave-function-collapse/showcase/contribution-1731965151.png new file mode 100644 index 000000000..0dc076f3c Binary files /dev/null and b/content/videos/challenges/171-wave-function-collapse/showcase/contribution-1731965151.png differ diff --git a/content/videos/challenges/179-wolfram-ca/showcase/contribution-1733011003.json b/content/videos/challenges/179-wolfram-ca/showcase/contribution-1733011003.json new file mode 100644 index 000000000..3ae9f101e --- /dev/null +++ b/content/videos/challenges/179-wolfram-ca/showcase/contribution-1733011003.json @@ -0,0 +1,10 @@ +{ + "title": "Wolfram CA with Original Roots Detection", + "author": { + "name": "Nalin", + "instagram": "nalinsaigal" + }, + "url": "https://editor.p5js.org/nsaigal7/sketches/jky_-18Vu", + "submittedOn": "2024-11-30T23:56:43.394Z", + "socialPermission": true +} diff --git a/content/videos/challenges/179-wolfram-ca/showcase/contribution-1733011003.png b/content/videos/challenges/179-wolfram-ca/showcase/contribution-1733011003.png new file mode 100644 index 000000000..8b905ca70 Binary files /dev/null and b/content/videos/challenges/179-wolfram-ca/showcase/contribution-1733011003.png differ diff --git a/content/videos/challenges/77-recursion/showcase/contribution-1733073032.jpg b/content/videos/challenges/77-recursion/showcase/contribution-1733073032.jpg new file mode 100644 index 000000000..b0a9c0060 Binary files /dev/null and b/content/videos/challenges/77-recursion/showcase/contribution-1733073032.jpg differ diff --git a/content/videos/challenges/77-recursion/showcase/contribution-1733073032.json b/content/videos/challenges/77-recursion/showcase/contribution-1733073032.json new file mode 100644 index 000000000..3065b2092 --- /dev/null +++ b/content/videos/challenges/77-recursion/showcase/contribution-1733073032.json @@ -0,0 +1,9 @@ +{ + "title": "Persian Rug in p5.js", + "author": { + "name": "Kathy McGuiness" + }, + "url": "https://editor.p5js.org/kfahn/full/sL1BsexS-", + "submittedOn": "2024-12-01T17:10:33.104Z", + "socialPermission": true +} diff --git a/content/videos/ml5/7-bodypose/blazePose/images/blazepose.png b/content/videos/ml5/7-bodypose/blazePose/images/blazepose.png new file mode 100644 index 000000000..855b5b1a1 Binary files /dev/null and b/content/videos/ml5/7-bodypose/blazePose/images/blazepose.png differ diff --git a/content/videos/ml5/7-bodypose/blazePose/images/blazepose_lerp.png b/content/videos/ml5/7-bodypose/blazePose/images/blazepose_lerp.png new file mode 100644 index 000000000..7210683bf Binary files /dev/null and b/content/videos/ml5/7-bodypose/blazePose/images/blazepose_lerp.png differ diff --git a/content/videos/ml5/7-bodypose/blazePose/index.json b/content/videos/ml5/7-bodypose/blazePose/index.json new file mode 100644 index 000000000..c3c352e91 --- /dev/null +++ b/content/videos/ml5/7-bodypose/blazePose/index.json @@ -0,0 +1,95 @@ +{ + "title": "3D Pose Estimation with ml5.js", + "description": "Building on BodyPose in ml5.js, this video explores the 3D capabilities of the BlazePose model, visualizing poses in a 3D space using WEBGL in p5.js.", + "videoId": "IF414I26_K8", + "nebulaSlug": "codingtrain-3d-pose-estimation-with-ml5js", + "date": "2024-12-01", + "languages": ["ml5.js", "JavaScript"], + "topics": ["machine learning (ML)", "webcam", "pose detection", "ml5.js", "MoveNet", "BlazePose"], + "canContribute": true, + "timestamps": [ + { "time": "0:00", "title": "Introduction" }, + { "time": "2:00", "title": "Incorporating BlazePose model" }, + { "time": "2:37", "title": "What are the xyz values?" }, + { "time": "4:30", "title": "Replace live camera with recorded video." }, + { "time": "5:49", "title": "Render with p5.js WEBGL" }, + { "time": "7:48", "title": "Use scale() to expand range of xyz values" }, + { "time": "9:00", "title": "Creating 3D scene" }, + { "time": "9:58", "title": "Rotating scene." }, + { "time": "11:24", "title": "Using orbitControl()" }, + { "time": "12:22", "title": "Using 3D shapes" }, + { "time": "13:42", "title": "Goodbye!" } + ], + "codeExamples": [ + { + "title": "BlazePose 3D", + "description": "Sketch demonstrating use of BlazePose model with 3D keypoints.", + "image": "blazepose.png", + "urls": { "p5": "https://editor.p5js.org/codingtrain/sketches/ftALPDieT" } + }, + { + "title": "BlazePose Lerp", + "description": "Sketch demonstrating linear interpolation of 3D keypoints.", + "image": "blazepose_lerp.png", + "urls": { "p5": "https://editor.p5js.org/codingtrain/sketches/JMhDRpcxi_" } + } + ], + "groupLinks": [ + { + "title": "References", + "links": [ + { + "icon": "💻", + "title": "ml5.js: BodyPose", + "url": "https://docs.ml5js.org/#/reference/bodypose", + "description": "ml5.js documentation on BodyPose models." + }, + { + "icon": "📄", + "title": "On-device, Real-time Body Pose Tracking with MediaPipe BlazePose", + "url": "https://research.google/blog/on-device-real-time-body-pose-tracking-with-mediapipe-blazepose/", + "description": "Google Research blog post on the BlazePose model." + }, + { + "icon": "📄", + "title": "3D Pose Detection with MediaPipe BlazePose GHUM and TensorFlow.js", + "url": "https://blog.tensorflow.org/2021/08/3d-pose-detection-with-mediapipe-blazepose-ghum-tfjs.html", + "description": "TensorFlow blog post on the BlazePose GHUM model." + }, + { + "icon": "📄", + "title": "BlazePose GHUM Holistic:", + "url": "https://arxiv.org/pdf/2206.11678", + "description": "Research paper covering real-time 3D human landmarks and pose estimation." + } + ] + }, + { + "title": "Videos", + "links": [ + { + "icon": "🚂", + "title": "ml5.js Pose Estimation", + "url": "/tracks/ml5js-beginners-guide/ml5/7-bodypose/pose-detection", + "description": "Previous video covering BodyPose in ml5.js focusing on the MoveNet model." + }, + { + "icon": "🚂", + "title": "Custom Shapes", + "url": "/tracks/p5-tips-and-tricks/more-p5/custom-shapes", + "description": "In this video, I look at how to draw \"custom\" shapes in p5.js, using, `beginShape()`, `endShape()`, `vertex()` and `curveVertex()." + }, + { + "icon": "🚂", + "title": "Translate, Rotate, Push/Pop", + "url": "/tracks/transformations-in-p5/transformations/translate-rotate-push-pop", + "description": "In this video I cover the functions translate(), rotate(), push() and pop()." + } + ] + } + ], + "credits": [ + { "title": "Editing", "name": "Mathieu Blanchette" }, + { "title": "Animations", "name": "Jason Heglund" } + ] +} diff --git a/content/videos/ml5/7-bodypose/pose-detection/showcase/contribution-1733094893.json b/content/videos/ml5/7-bodypose/pose-detection/showcase/contribution-1733094893.json new file mode 100644 index 000000000..d13b1887d --- /dev/null +++ b/content/videos/ml5/7-bodypose/pose-detection/showcase/contribution-1733094893.json @@ -0,0 +1,11 @@ +{ + "title": "Regular polygons playground", + "author": { + "name": "Juan Carlos Ponce Campuzano", + "url": "https://www.dynamicmath.xyz/", + "twitter": "https://twitter.com/jcponcemath" + }, + "url": "https://openprocessing.org/sketch/2470495", + "submittedOn": "2024-12-01T23:14:53.878Z", + "socialPermission": true +} diff --git a/content/videos/ml5/7-bodypose/pose-detection/showcase/contribution-1733094893.png b/content/videos/ml5/7-bodypose/pose-detection/showcase/contribution-1733094893.png new file mode 100644 index 000000000..67ad4c7c6 Binary files /dev/null and b/content/videos/ml5/7-bodypose/pose-detection/showcase/contribution-1733094893.png differ diff --git a/content/videos/ml5/facemesh/showcase/contribution-1732412552.jpg b/content/videos/ml5/facemesh/showcase/contribution-1732412552.jpg new file mode 100644 index 000000000..3cfeae6f1 Binary files /dev/null and b/content/videos/ml5/facemesh/showcase/contribution-1732412552.jpg differ diff --git a/content/videos/ml5/facemesh/showcase/contribution-1732412552.json b/content/videos/ml5/facemesh/showcase/contribution-1732412552.json new file mode 100644 index 000000000..d6f349691 --- /dev/null +++ b/content/videos/ml5/facemesh/showcase/contribution-1732412552.json @@ -0,0 +1,9 @@ +{ + "title": "Fire breathing", + "author": { + "name": "Pierre B." + }, + "url": "https://editor.p5js.org/pierrebai/sketches/eU1gAU_MN", + "submittedOn": "2024-11-24T01:42:32.616Z", + "socialPermission": true +} diff --git a/content/videos/ml5/facemesh/showcase/contribution-1733002616.jpg b/content/videos/ml5/facemesh/showcase/contribution-1733002616.jpg new file mode 100644 index 000000000..e702ddc70 Binary files /dev/null and b/content/videos/ml5/facemesh/showcase/contribution-1733002616.jpg differ diff --git a/content/videos/ml5/facemesh/showcase/contribution-1733002616.json b/content/videos/ml5/facemesh/showcase/contribution-1733002616.json new file mode 100644 index 000000000..b848529cd --- /dev/null +++ b/content/videos/ml5/facemesh/showcase/contribution-1733002616.json @@ -0,0 +1,9 @@ +{ + "title": "Ghost in the Material World", + "author": { + "name": "Kathy McGuiness" + }, + "url": "https://github.com/kfahn22/ml-facemesh", + "submittedOn": "2024-11-30T21:36:57.262Z", + "socialPermission": true +}