Install Steam
login
|
language
简体中文 (Simplified Chinese)
繁體中文 (Traditional Chinese)
日本語 (Japanese)
한국어 (Korean)
ไทย (Thai)
Български (Bulgarian)
Čeština (Czech)
Dansk (Danish)
Deutsch (German)
Español - España (Spanish - Spain)
Español - Latinoamérica (Spanish - Latin America)
Ελληνικά (Greek)
Français (French)
Italiano (Italian)
Bahasa Indonesia (Indonesian)
Magyar (Hungarian)
Nederlands (Dutch)
Norsk (Norwegian)
Polski (Polish)
Português (Portuguese - Portugal)
Português - Brasil (Portuguese - Brazil)
Română (Romanian)
Русский (Russian)
Suomi (Finnish)
Svenska (Swedish)
Türkçe (Turkish)
Tiếng Việt (Vietnamese)
Українська (Ukrainian)
Report a translation problem
First of all, an explanation; in the export_smd file's "writeSMD" function, this is the code used for writing bone positions and angles.
The offending functions here are mostly parentMat.inverted(); inverting matrices is done in C, and according to my own tests, some precision is lost in the result.
Finding the bone's matrices is actually completely unnecessary, as Blender already provides a pose bone's correct position/angle on the current animation frame with the bone.location/bone.rotation_euler variable (these variables are what are displayed when you're editing a bone in the Blender menu.) Upon switching out this code with using those variables instead, in my tests everything exports perfectly with no precision errors; positions and angles alike of bones are exactly like in my original .smd.
Instead of messing with the exporter, I would suggest a post-process script which snaps values which are very close to the originals. That would work 100% of the time.