Learning Blender -> Unity workflow, creating a simple vehicle.

I have started to learn Unity3D and have got to a point where I want to try and import my own 3d models for use in Unity. Being a coder I have little experience with 3D modelling and the workflows involved in general but I thought I would give it a shot with a simple project to learn the work involved. The goal is to

  1. Create a tank vehicle model in Blender
  2. Apply a simple texture to it (a single color texture would work).
  3. Apply an armature to it. (Body → Turret → barrel)
  4. Allow its movement to be controlled using a script. (Move forward, turn left/right)
  5. Get the gun barrel in the tank to point at a certain point.

So far I have created the model with 3 objects in blender (body, turret, barrel), applied an armature with 3 bones to move the turret and barrel and attempted to save as FBX and import into Unity.

The first thing I noticed when importing is that the armature for the turret and barrel have rotations applied already. Is this also imported from Blender? Is the best practice to start everything with 0 rotation in Blender?

Also is there any way to modify the asset from within blender, for instance modifying the transform of one of the objects in the asset. I can do this when creating an instance but it seems I can’t from the asset panel.

Finally is the way I am creating the 3D Model the best way I can do it for my use case? I am very inexperienced with Blender and was wondering if there are any guides or workflows I should follow when creating stuff in Blender for use in Unity.

I have uploaded my Blender scene and FBX here, any advice on what I am doing would be greatly appreciated:

You don’t need a scene. You just need to export the model.
Before export you must apply location, rotation, scale.

Avoid drivers and shapekeys. Unity doesn’t support them.

You will be disappointed : caterpillar tracks are moving textures… Unity doesn’t support bezier curves from Blender, at least not without some plugin.

Yes, the rotations are an aftereffect of the rigging process. You’ll need to rotate all pivots to 0,0,0 in blender. Note: The pivots, not the objects. That one had me stuck for a while.

I don’t understand what you mean by modifying the asset from within blender. If you mean edit the model after it was imported into the project, yeah, load the file from the project directory, when you save and reenter unity it will autoupdate.

If you mean modifying the animations in blender, say, you want to rotate the turret around, yes, you can save that as an animations, look up keyframes.

If you mean having both unity and blender open, modify the model in blender and have it update in unity in realtime, no unfortunately, that’s not what instances are for. I believe those just make a clone of your object to make repetitive stuff like roof shingles.

Finally, your workflow seems fine in general, model in blender, animate in blender, uv map in blender, texture in photoshop or whatever, import everything into unity, add scripts.

For this specific case where you have a tank with a turret you don’t actually need bones though. Those are for meshes that deform, like human characters that require you to apply weights to individual polygons. What you have there is a “hardsurface”, it just moves and rotates but doesn’t actually deform in itself. Here all you need is the parenting relationship. Then you can just move the separate objects via code. LookAt is what I usually use. Most important thing here really is to cut your model into parts that should be moving, which you did, so all good.