What Skills Are Needed to Develop Programs Using FBX SDK Python?
This article is a translated version of my original post on Qiita. Original (Japanese): https://qiita.com/segur/items/04455f9487a434883bf6
What Skills Are Needed to Develop Programs Using FBX SDK Python?
A programmer with no knowledge of 3D computer graphics (let's call them 'Person A') asked me, "What skills do I need to develop programs using FBX SDK Python?" To help, I created a simple summary document.
I figured there might be others with the same question, so I'm sharing it here.
To make it comprehensible for Person A, the explanations might not be perfectly accurate in terms of terminology. Please bear with me.
I've divided it into three major categories:
- Mathematics
- 3D Graphics (3DCG)
- Programming
Mathematics
Even if you have experience in 3DCG or programming, using FBX SDK Python will be difficult without mathematical skills. I recommend starting with studying mathematics.
3D Vectors
This is a method for representing positions or directions in a 3D space using three numeric values (x, y, z).
Operations like addition, subtraction, inner product, and cross product of 3D vectors are frequently used, so it's good to grasp these.
Degrees [°] and Radians [rad]
Both are units of angle. 180° equals Ï radians.
Radians are foundational knowledge for understanding trigonometric functions.
Trigonometric Functions
This includes functions like sin and cos.
They are foundational for calculating Euler angles.
Euler Angles
This is a method for expressing rotation direction with three rotations.
Image source: Wikipedia
There are 12 different ways to express rotation sequence, like z-y-x or z-x-y, depending on which axis is rotated in which order.
This Wikipedia article provides more details.
Quaternions
This is a method for expressing rotation direction using four numeric values (x, y, z, w).
It's good to know about quaternion multiplication and conjugate quaternions.
This Qiita article provides more details.
Right-handed and Left-handed Systems
This refers to the orientation of the 3D coordinate system.
It changes the signs of vectors and quaternions, so attention is required.
This Wikipedia article is informative.
Both systems frequently appear, so make sure not to confuse them.
3D Graphics (3DCG)
Even with mathematics and programming experience, using FBX SDK Python will be difficult without knowledge of 3DCG. Here, I list out the knowledge and skills related to 3DCG.
Y-Up and Z-Up
This refers to whether the upward direction in the sky is along the y-axis or z-axis.
Both y-up and z-up frequently appear, so it's important not to get confused.
Metric and Centimeter Units
This refers to whether the unit of length is 1 meter or 1 centimeter.
Both units frequently appear, so it's important not to get confused.
Skeleton (Bones, Joints, Armature)
This refers to the skeletal structure of a humanoid character.
For example, moving the right shoulder also moves the right elbow. However, moving the right elbow does not move the right shoulder.
The relationship between joints is expressed in a hierarchical structure like right shoulder -> right elbow -> right wrist.
You can set the rotation direction (quaternion or Euler angles) for each joint to determine the whole body's pose.
For more details, refer to this STYLY page.
T-stance
T-stance is a type of pose for humanoid characters. It's often used as an initial posture.
Animation Curves
This refers to a line graph plotted with time on the horizontal axis and amount of change on the vertical axis.
For example, the time variation of a joint's Euler angle is recorded as an animation curve.
For more details, refer to this Unity documentation.
Frame Rate
This refers to how many frames there are in one second.
30 and 60 are commonly used.
FBX
This is a file format related to 3DCG.
It can store polygons, skeletons, animation curves, and more.
Programming
I've also summarized the programming skills needed to work with FBX SDK Python.
Python
First, you need to be able to use Python.
I recommend this Dotinstall lesson.
FBX SDK Python
Of course, you need to have FBX SDK Python installed.
For more details, refer to:
Package Management Tools
Although not directly related to FBX SDK Python, it's advisable to have a tool for managing Python libraries.
Personally, I recommend Poetry.
This Qiita article is helpful.
Testing Framework
Although not directly related to FBX SDK Python, you might want to introduce a framework for writing unit tests.
Personally, I recommend Pytest.
This Classmethod article is helpful.
Conclusion
I have listed many things here.
Although the journey can be quite long for a complete beginner, let's do our best!
I hope you find this useful.