Revision dcfc57322ed41d76906acd23d619d88c6b28a0cb (click the page title to view the current version)
Session. 3D Objects in Python
Learning Objectives
Key learning outcome Improve the understanding of the mathematical descriptions of 3D Motion, by testing implementations in Python.
Secondary outcomes if you have time, it is worth browsing different libraries and frameworks to build, visualise, and animate scenes using 3D objects.
Briefing
Recap: a simple object
Remember, last week we worked with this data structure in Python:
In [1]: print(vertices)
[[-1. 0.5 0.5]
[ 1. 0.5 0.5]
[ 0. -0.5 0.5]
[-1. 0.5 0.5]
[ 1. 0.5 0.5]
[ 0. 0.5 -0.5]
[-1. 0.5 0.5]
[ 0. -0.5 0.5]
[ 0. 0.5 -0.5]
[ 1. 0.5 0.5]
[ 0. -0.5 0.5]
[ 0. 0.5 -0.5]]
The rows are points in 3D. Note that there are only four distinct points. If we divide the matrix into sets of three rows, each triplet defines a triangle. These four triangles form the faces of an irregular tetrahedron.
This is a standard way to define a 3D object. More complex objects need more triangles.
Note that the textbook have vertices as column vectors, while we here use row vectors. This means that we need to transpose matrices when we translate textbook formulæ to python formulæ.
STL files and the STL library
Exercise
Rotations and translations
Homogenous Coordinates
Motion defined by homogenous matrix
STL files and the STL library
- Load Model
- View Model
- Change Model
- Save Model