You can make a lot of interesting objects with matlab primitive shapes (e.g. "cylinder," "sphere," "ellipsoid") by beginning with some of the built-in Matlab primitives and simply applying deformations. The gif above demonstrates how the Manta animation was created using a cylinder as the primitive and successively applying deformations: (https://www.mathworks.com/matlabcentral/communitycontests/contests/8/entries/16252);
Similarly, last year a sphere was deformed to create a face in two of my submissions, for example, the profile in "waking":
You can piece-wise assemble images, but one of the advantages of creating objects with deformations is that you have a parametric representation of the surface. Creating a higher or lower polygon rendering of the surface is as simple as declaring the number of faces in the orignal primitive. For example here is the scene in "snowfall" using sphere with different numbers of input faces:
sphere(100)
sphere(500)
High poly models aren't always better. Low-polygon shapes can sometimes add a little distance from that low point in the uncanny valley.
8 Comments
The animation at the top of this article that starts with a cylinder and ends with the ray is perfecto!
I used a similar deformation approach in my 2021 and 2023 teardrop entry as well as my 2021 craters function on the FEX. Both start with a simple sphere. Tim took this to a whole other level! The key is to have a library of paramaterized curves available and to know how to combine those curves to form complex shapes.
Tim, your submissions are outstanding. We've all gained great insights from both your code and approach.
This is impressive.
I do wish the speed of the animated gif could be slowed down and paused—it contains so much information.