I find it better to make lots of small Blender files, then combine them into prefabs within Unity.
You will not be able to do 100% of any workflow in Blender in any case.
“Something” will ALWAYS need to be done in Unity.
Since anything done on the Blender side has to “survive” the import process, see near the bottom below for my usual approach, which seems to result in the lowest friction.
This might help you reason about what you are seeing:
Unity imports Blender3D objects as FBX via a little Python script:
Often distortions can come as a result of modifiers and/or scales existing through your transform hierarchy. In Object mode in Blender, always have your rotations set as (0,0,0) and your scales set as (1,1,1) otherwise you will have issues. You can apply those transforms in Blender.
Unity runs this script to import your Blender files via transient FBX export:
./Hub/Editor/2020.1.5f1/Unity.app/Contents/Tools/Unity-BlenderToFBX.py
./Hub/Editor/2020.2.1f1/Unity.app/Contents/Tools/Unity-BlenderToF…
The Python script that Unity uses (substitute your Unity version number or search) to import:
./Hub/Editor/2020.2.1f1/Unity.app/Contents/Tools/Unity-BlenderToFBX.py
More on fixing it:
There are no “mesh files” from a standard Blender import. Unity imports a Blender file as a series of different assets depending on what you put into it in the first place: GameObject, MeshRenderers, Meshes, Materials, etc.
All Unity does when it imports a blender file is call the Unity-BlenderToFBX.py script (located in your installation of Unity) and imports stuff.
If you recently upgraded Unity, around Unity2019 or so, they changed what they imported, so it will reshape EVERYTHING in your i…
Blender3D objects used as trees / detail in Unity3D terrain (See the second half of this response)
This might be because your scene includes the default camera and lights. Unity started importing those with its default Blender import script starting sometime in Unity2019 and it will break a lot of prefabs.
You can either a) remove the Camera and Light and everything except the LOD group objects (properly named), or you can modify the Blender import script embedded in Unity. This means you would need to re-modify it every time you switched to a new version of Unity, but I was …
NEVER rename items in Blender after you have imported into Unity, because then Unity imports them as though they were new GameObjects. That’s how the mapping works if you look in the .meta file associated with your Blender file. It is done by name.
I would also NEVER reparent them because of the root (-90,0,0) rotation issue when going from Blender’s right-hand system to Unity’s left-hand system. Reparenting potentially moves an object in or out of the guard area for this rotation.
The best w…
Probuilder and Probuilderize and Blender:
This is what you need, but it’s not a free-back-and-forth-all-day-long process.
You want to be very intentional and parsimonious about how many times you go back and forth because there’s a LOT of room for error.
When you drop a Blender file in, Unity has Blender run a Python export script, then imports the resulting temporary FBX file, which you don’t ever see in the filesystem.
When you drop that (or any model file) into your scene, it makes a GameObject, gives it a MeshFilter and MeshRend…
Some more potentially-useful info:
what are you using for your fbx, export settings in blender, and what are you using for import in unity?
This is what i use in blender, you want to set your Up axis and Forward not to what Unity uses for those, but to how your axis are being used in blender. Also make sure Apply Transform is enabled.
[8037734--1036694--upload_2022-4-11_9-51-35.png]
in Unity i have this.
[8037734--1036700--upload_2022-4-11_9-54-11.png]
Updating Blender files without breaking your prefabs:
Yes ^ ^ ^ the above… but there are limitations. Generally you cannot ADD new items, only change existing items. Here’s why:
Any arbitrary FBX model (including Blender files automatically imported as FBX files in Unity) is a collection of things:
each object becomes a GameObject
each might have a mesh
each might generate / use materials
there are parent/child relations between objects
The collective bunch of things is imported and given Unity-side names (called GUIDs) based on their Blender …
When I work in Blender3D for Unity3D use, I follow these organizational rules:
use Empty Blender Objects as folders: they come out as an extra GameObject
ALWAYS parent everything to a single Empty, even a single object
put as few objects in a given .blend file as possible, combining them in Unity into a prefab
set good names for your Blender3D objects and NEVER RENAME them after Unity sees them
don’t even think about Materials or Textures in Blender, just do it in Unity