Almost every time I import something from blender into unity there’s an error with it, this time my gun barrel has turned 90 degrees to the right and last time I imported a sniper rifle the scope was screwed up! What am I doing wrong I’m importing it all in fbx but its still messed up! I need help!!!
We’re ourselves familiar with blender and unity problems, and found out that 99% of the time, the reason is
R T S, rotation, translation, scale
- create a backup of your blender file
- open blender and open your file
- in object mode, select all the meshes (press A), press CONTROL-A (apply menu), then select APPLY ROTATION, then again APPLY TRANSLATION, then APPLY SCALE
- you’ll notice that the objects’ pivots will be re-set to the center, and their scale and rotation will be fixed
Then import back, and tell us if it worked
I don’t see the love affair with FBX. Unity usually reads .blend files as-is no problem, but you can also export to Collada or OBJ or 3DS.
I usually ‘apply’ the transforms (bake them in) before saving/exporting. Object / Clear-Apply / Apply Scale-Rotation to ObjData.
Also remember that in Blender, Z is Up, but in Unity Y is up.
Try Applying the rotation, Scale and rotation before exporting hitting Ctrl + A and applying.
Also try Flipping the Normals in Edit mode, That causes some problems for me sometimes.
The trick is to be sure you scale/move/rotate the verts and not the model. Blender meshes (and Max, etc…) have Transforms. You can see it from Object->TransformProperties. If you change the model in Object Mode, you are really only changing that Transform.
For example, you model a spear pointing +Y, then, in Object mode, twist it to face +Z for Unity. You still have a +Y-facing spear which happens to be tilted to face +Z. Looks fine for most purposes, but as soon as Unity does a LookAt, that tilt is taken off and you have a sideways spear.
If you use extra root bones for animation, it gets even worse. You might rotate the main root to tilt the model from facing +X to +Z, but that’s animation. The real model is still facing +X, but playing any animation at all will apply the tilt to +Z. If you stop animation (maybe to ragdoll it?) it can snap sideways to the “real” facing.
To tilt for real, select all verts, in Edit mode and tilt. Same thing if you want to change where (0,0,0) is. To fix a messed-up model, try resetting Object->TransformProperties to 0’s (rotate) and 1’s(Scale) and then fix everything in Edit mode.
Imagine you have a spike and have 5 linked copies to it. You can rotate/scale them individually, in Object mode, which changes only the Transform and is a good thing. If you decide the spikes are too fat, you change the “real” object they are linked to, in Edit mode.
I personally think it’s easier to do it Unity-style to begin with, but I’m not a real modeller. For experienced modeller’s who don’t want to change workflow for a certain game engine, can always use the “child to an empty” trick (lots of descriptions of it in these forums.)