What skills do I need to program with the FBX SDK Python?

What skills do I need to program with the FBX SDK Python?

A programmer with zero knowledge of 3DCG (let's say Mr. A) said, "Please tell me what skills you need to create a program using FBX SDK Python", so I made a simple summary.

There may be other people who have the same troubles as I expected, so I will publish it.

I made the material so that it is easy for Mr. A to understand, so the glossary may not be very accurate. Please understand what you are doing.

It is roughly divided into three categories.

Mathematics

Even with 3DCG and programming experience, it is difficult to use the FBX SDK Python without math skills. We recommend that you start by studying math.

3D vector

It is a method to express the position and direction in the three-dimensional space with three numerical values (x, y, z).

Addition / subtraction / inner product / outer product of 3D vectors are often used, so it is better to suppress them.

Degree [°] and radians [rad]

Both are units of angle. 180 ° = π [rad].

Radians are a prerequisite for understanding trigonometric functions.

Trigonometric function

It means sin and cos.

This is a prerequisite for calculating Euler angles.

Euler angles

It is a method to express the direction of rotation by rotating three times.

There are 12 ways of expression such as z-y-x and z-x-y in "Which axis should be rotated in which order?".

The following articles are detailed. [https://ja.wikipedia.org/wiki/%E3%82%AA%E3%82%A4%E3%83%A9%E3%83%BC%E8%A7%92](https: // ja .wikipedia.org/wiki/Euler angles)

Quarternion (quaternion)

It is a method to express the direction of rotation with four numerical values (x, y, z, w).

I think it's a good idea to suppress quaternion multiplication and conjugate quaternions.

The following articles are detailed. https://qiita.com/kenjihiranabe/items/945232fbde58fab45681

Right-handed and left-handed

It's about the orientation of the 3D coordinate system.

Note that this will change the positive and negative of the vector quaternion.

The following articles are easy to understand. https://ja.wikipedia.org/wiki/%E5%8F%B3%E6%89%8B%E7%B3%BB

Both of them appear frequently, so you need to be careful not to make a mistake.

3DCG edition

Even if you have experience in math and programming, it is difficult to use the FBX SDK Python without 3DCG related knowledge.

Here, we list the knowledge and skills related to 3DCG.

y-up and z-up

It is a story about whether the sky direction is the y-axis or the z-axis.

Both y-up and z-up often appear, so you need to be careful not to make a mistake.

Meters and centimeters

It is a story about whether the unit of length is 1 meter or 1 centimeter.

Both of them appear frequently, so you need to be careful not to make a mistake.

Skeleton (Bone Joint Armature)

It is the skeleton of a humanoid character.

For example, if you move your right shoulder, your right elbow will follow. However, even if you move your right elbow, your right shoulder does not move.

The relationship between such joints is expressed in a hierarchical structure such as right shoulder → right elbow → right wrist.

By setting the direction of rotation (quaternion and Euler angles) for each joint, you can determine the pose (posture) of the whole body.

See below for details. https://styly.cc/ja/tips/blender-modeling-start5-2/

T stance

T-stance is a type of humanoid character pose. It is often used as the initial posture.

Animation curve

A line graph drawn in an area where the horizontal axis is the time axis and the vertical axis is the amount of change.

For example, record the time change of Euler angles of joints as an animation curve.

See below for details. https://docs.unity3d.com/ja/2018.4/Manual/animeditor-AnimationCurves.html

frame rate

How many frames are there per second?

30 and 60 are often used.

FBX

This is a 3DCG file format.

You can save polygons, skeletons, animation curves, etc.

Programming

We have also summarized the programming skills required to work with the FBX SDK Python.

Python

First of all, you need to be able to use Python.

The following lessons are recommended. https://dotinstall.com/lessons/basic_python_v4

FBX SDK Python

Obviously, you need to install the FBX SDK Python.

See below for details.

Package management tool

Although not directly related to the FBX SDK Python, it is better to introduce tools to manage Python libraries.

I personally recommend Poetry.

For details, refer to the following. https://qiita.com/sk217/items/43c994640f4843a18dbe

Test framework

It's not directly related to the FBX SDK Python, but I think it will introduce a framework for writing unit tests.

I personally recommend Pytest.

For details, refer to the following. https://dev.classmethod.jp/server-side/python/pytest-getting-started/

at the end

I have listed them in a row.

It's a long way from inexperienced, but let's do our best!

I'm pleasure to be of some help.

Recommended Posts

What skills do I need to program with the FBX SDK Python?
What to do with PYTHON release?
What I did to welcome the Python2 EOL with confidence
What should I do with the Python directory structure after all?
[Python] What I did to do Unit Test
What to do if the server doesn't start with python manage.py runserver
I tried to touch the CSV file with Python
I tried to solve the soma cube with python
I want to inherit to the back with python dataclass
[ML Ops] I want to do multi-project with Python
I tried to solve the problem with Python Vol.1
I tried to find the entropy of the image with python
I tried to simulate how the infection spreads with Python
I wanted to solve the Panasonic Programming Contest 2020 with Python
I wrote a program quickly to study DI with Python ①
What you can do with the Python standard library statistics
[Python] I want to use the -h option with argparse
I tried to divide the file into folders with Python
What to do with Magics install
To do tail recursion with Python2
I liked the tweet with python. ..
I want to do ○○ with Pandas
I want to debug with Python
Python | What you can do with Python
I tried to solve the ant book beginner's edition with python
I want to know the weather with LINE bot feat.Heroku + Python
What to do if you can't install pyaudio with pip #Python
What I was addicted to with json.dumps in Python base64 encoding
I want to output the beginning of the next month with Python
I want to do a full text search with elasticsearch + python
Consider what you can do with Python from the Qiita article
I wanted to solve the ABC164 A ~ D problem with Python
What to do when you get "I can't see the site !!!!"
I tried to improve the efficiency of daily work with Python
What to do when the value type is ambiguous in Python?
I wanted to solve ABC160 with Python
Working with OpenStack using the Python SDK
I want to analyze logs with Python
How to do portmanteau test with python
I want to play with aws with python
What I did with a Python array
What you can do with programming skills
What I was addicted to Python autorun
I wanted to solve ABC172 with Python
The road to compiling to Python 3 with Thrift
What I did to save Python memory
[Python] I tried to visualize the night on the Galactic Railroad with WordCloud!
I tried to refer to the fun rock-paper-scissors poi for beginners with Python
I want to do it with Python lambda Django, but I will stop
I tried to create a program to convert hexadecimal numbers to decimal numbers with python
What to do if you couldn't send an email to Yahoo with Python.
What to do if ipython and python start up with different versions
I tried to get the authentication code of Qiita API with Python.
It's more recent, but I wanted to do BMI calculation with python.
What to do if the Chainer (Windows) sample mnist terminates with WinError 183.
I tried using "Streamlit" which can do the Web only with Python
I tried with the top 100 PyPI packages> I tried to graph the packages installed on Python
I tried to streamline the standard role of new employees with Python
I tried to get the movie information of TMDb API with Python
I made a program to check the size of a file in Python
[Introduction to Python] What is the method of repeating with the continue statement?