It did finish eventually I saved the object While we're on the topic of performance: Blender has a few suggestions https://docs.blender.org/api/current/info_best_practice.html Scripting move of individual vertices: This is actually the first API example https://docs.blender.org/api/current/info_overview.html So we can access vertices in an array! Blender seems to only update the UI when the script is done Demo with sleep and moving the vertex There might be a way around it Alright, another demo: Can we make a piece of corrugated roofing? It'll be a plane with a lot of subdivisions Adjust with trig function We can make the resolution adjustable Python review kinda: Let's make a function that makes these With default values for parameters Could even return a reference to the thing we just made Thanks to Python, we don't have to know what type that is Angles: Is this a problem? Yeah Two ideas: 1. Rotate it, then do the corrugation with a lot of math 2. Corrugate it, then rotate it Probably easier this way Back to Eulers Didn't have much time last time Do I this time? Leonhard Euler was a famous Swiss mathematician, physicist, etc in the 1700's Any two coordinate systems are related by rotation about a fixed axis NOT like x, y, or z, but some vector through space So you don't need to rotate around one axis, then another Sometimes it does help keep your head screwed on straight This is how we usually specify a rotation in games Euler angles, like Blender wants here: An offset from each of the three principle axis We can add or subtract from them rotation_euler array is a property of our object So now we have a decision: How should the parameters for our function work? Or should it just return a reference and let the user rotate it? Probably this Homework this week: Make a carport with a corrugated roof Is your roof slanted? Main homework this week: Watch the doughnut tutorial I'd recommend this to learn the UI https://www.youtube.com/@blenderguru You don't have to turn it in It's pretty long