Using a completely new scene with the standard 2x2x2 cube.
When I choose “Selected objects” .fbx export from Blender and open the model in Unity the X,Y,Z values are each scaled by a hundred. But the cube appears in Unity as if it was 2x2x2m. Trying to rescale in Unity from 100—>1 ends up with a ridiculously small cube.
How do I export a model from Blender to Unity and keep the scaling right?
@b1gry4n Thanks for acually "kind of" answering my question "So unless you make a custom shader to mask parts of these sprites or you use transparency in a clever way, this is impossible"
After disabling this little button above, I no longer see the 100x scaled transforms and I can export & import at scales of 1.
Update (May 2018):
This option appears to be removed in the current version of Blender (v2.79). Instead you should check the box for "EXPERIMENTAL! Apply Transform". Unfortunately this only works for one generation in the hierarchy, i.e. don’t expect grandchild transforms to work when imported to Unity.
If you have done everything correctly in Unity and blender, and you are having scaling issues, this is the correct answer. I too can confirm this works. Thank you!
Hello. I tried this solution. It seems that it works for Unity 5, but does not work anymore in Unity 2017 for some reason. Have you guys found a workaround?
I think, whenever you calculate your vector (you don't need just the float but a direction too, so keep the vector as a whole for the force), maybe in LateUpdate, save the currentposition as the last one. This way, when you encounter the calculation of the actual slingshot, you have both positions. Of course it will fail during the first frame, but who is able to attach and detach in one go ;)
From my own experimentation, checking the !EXPERIMENTAL! Apply Transform button will work most of the time, however, if you have more then one layer of child objects (one child parented to another child that itself is parented to the root object), the rotation of all the child objects will be horribly maimed.
To solve this without checking Apply Transform, instead ensure that the scale button is unchecked, and the Apply Scalings drop down is set to FBX All.
For me this is the way, when you are exporting e.g. an Armature to Unity. The original answer is really only good for single level objects. (Unity 2019.4, Blender 2.8.3)
@doublemax That definitely sounds like a great start. I'm still pretty new to coding though and may need some additional help if you don't mind. I know how to calculate Distance using float distance = new Vector2.Distance (currLoc, prevLoc); therefor creating a float to use as my speed reference...but I'm stumped on how to store the previous position of my player from the last frame, and then to calculate the direction of it along both X and Y axes so that I can "shoot" the character. I'm assuming I'll use AddForce with ForceMode2D.Impulse?
I’ve tried all of these approaches and my model still comes in scaled incorrectly. This is a problem because some assets need to be able to change scale at runtime, and the object already having a scale of 100, 100, 100 makes it difficult and inefficient to work with. Is there really no way to import something from Blender without it being autoscaled up by 100? I even tried scaling it up in the Blender viewport by 100 hoping that Unity would catch on, and it came into unity at 10000, 10000, 10000. What am I doing wrong?
Thanks for the replies guys! I found a solution to the problem. There is a setting in the Blender FBX export settings called "EXPERIMENTAL Apply Transform" that I needed to enable. This makes it so that transformations translated into Unity correctly from Blender.
I was about to comment the same solution as yours! except i also have to Set the Model's Scale Factor at 0.5 and uncheck the "Use File Scale". Who ever downvoted this comment doesn't test and compare Blender exported cube and unity's exported cube with these settings.
Apply Transform reverts the Unity rotation fix. (Select all objects, rotate with 90 degree on x axis, apply rotation, rotate back and do not apply rotation). The rotation fix is for me more important than the scaling fix.
However, I found a solution, use the settings I made on the image. Root has scaling 1, children have a scaling 1. Finally, rotation and scaling fixed, tested with Unity 2018.3.
If you want blender units to match exactly with your unity units there are a few things you need to do. In blender follow the scale value not the dimensions value. If i have a plane in blender that is 10 x 10 (in the scale value not the dimensions value) then I export it out in FBX changing the exporter scale factor to 0.01. When I bring it into unity in the import options I change unity scale factor to 0.5 this way my units match unity units no problem.
This is how I do it and I hope it helps.
When you create a plane in Blender it uses a radius. The default plane is radius=1m, so the area is 2m x 2m. That is why your plane is twice as large.
I’m not actually sure if there’s a way to do it with the import settings, Unity automatically changes the scale to compensate as you’ve seen. If you need to get rid of it or it just bugs you there’s always the option of blowing it up in blender by 100x before export.
Just scaled everything X,Y,Z x100 and used "Apply --> Scale". Works great
I figured out what is happening. In Unity there are two different kinds of scales that change when importing models from Blender. Selecting the model in the asset folder, “File Scale” is found under Import Settings in the inspector and is related to the export FBX scale settings in Blender. “Scale” is found under the “Imported Object” section and is a way of defining the default scaling in Unity. File Scale is set and cannot be changed but Scale is editable for individual instances or prefabs of the model.
The problem is solved by exporting at scale 100 in Blender. The File Scale is matched and becomes a perfect 1.00 in Unity. The Scale becomes a ridiculously huge number, but it can be adjusted to 1,1,1 so that is not a problem.
Did you try enabling the option next to the scale that takes into account the Blender unitys (see attached image). Also try enabling the “!Experimental! Apply Transform” option. That works for me.
I’ve found that the “EXPERIMENTAL! Apply Transform” option resolves rotational issues but not scaling ones. The only solution that works for me for animated meshes that have an armature is to export with Scale: 0.01 and import with Use File Scale: False in the model’s import settings in Unity.
Ah yes, I should clarify that this solution works for me for animated meshes with an armature. Unticking the box next to the scale field didn't work, but this method does seem to work with armatures and animations work as expected.
As of 2021, the solution seems to be [here][1]. In short, export FBX Apply Scaling: FBX All. [1]: https://forum.unity.com/threads/blender-scale.511523/
– melsov@b1gry4n Thanks for acually "kind of" answering my question "So unless you make a custom shader to mask parts of these sprites or you use transparency in a clever way, this is impossible"
– VinnieH01Blender 4.0.2:
– alexsafayanApply Scalings>FBX Units Scale