What is best practice when assetizing models, with respect to their object hierarchy and relationships?
For example, let's say we've created an object that has multiple child objects which serve as components of the main object; it's not sensible to assetize the components individually because they are others useless when not utilized as part of the whole, but should the components be joined into a single mesh before assetizing the object, or is it perfectly acceptable to assetize an entire object hierarchy?
It really depends on the asset and it's intended use as to which method is better. Blender only follows 1 path of child to parent from the point of the child at the bottom being the asset. So if you have multiple children to 1 parent then you will need to use a different method. I recommend collection or group(technically called unlinked collection or hidden collection). This allows everything to be moved around as 1 object(Collection Instance) once appended and if you decide you need access to the individual objects then you have a few options available to you depending on if you want to keep the parent child structure or not. Sorry, I'm about to hit you with a lot of information.
So lets start with marking assets: for collection just right click on collection in outliner and click mark as asset. For groups you have 2 ways to create this. 1. select objects and press Ctrl+G then click last adjustment(Bottom left corner or press F9) to give it a name. 2. Create a collection just like normal then in the outliner right click collection and click unlink. You probably will want to mark as asset first. To access groups(Unlinked collection) in the outliner's header next to the editor type icon is the outliner display mode icon. click it and choose blender file. Go down to collection and expand it. Then you can mark as asset the unlinked collection. It will have the shield as a solid icon. The following only covers if you need to access the induvial objects of a collection asset otherwise once you add it to your scene thru the asset browser it will all act as 1 object(Technically a collection instance).
If you are appending or appending shared data(This is the default) your assets then to convert collection instances to separate objects: First method is the easiest, but doesn't keep parent child relationship, because of this I recommend putting it into a collection before making it real. This way you can easily select all the objects by selecting one of the objects then press shift+g->collection. If it's part of multiple collection then you will need to select the collection name. To convert to objects: select the collection instance and press ctrl+a and click make instance real. Second method: Change outliner display type to blender file, expand collections, right click on the instanced collection name, and click link to scene. Then change display type back to view layer. Note: you will now have all the object in a collection and their parent child relation will be kept. You will also still have the collection instance. So you can make changes to the object and re-unlink the collection or you can just delete the instance.
If you are linking your assets then to access your linked data you just select the object(Collection link) and click Object menu, then Library override, then make. This only allows you to select the objects you won't be able to transform(move/rotate/scale) them. Select the objects you want to transform(usually the main parent object, but you will want to select any child parts that are animated or transformed) then repeat object->Library override->make. Then you will be able to transform your objects.
My brain...is smoking...
...so, I watched a handful of Kent's lessons in CUBICITY | Creating and Utilizing Asset Libraries with Blender, so I got you on the bit about marking an entire collection as an asset, but I'm not clear on the difference between a collection and a group as you've described here; I think maybe it isn't clicking because I have such limited experience working with them, and if I come back to this post after I've leveled up it may make sense.
For the time being, it seems like the path to victory here is going to be marking an entire collection as an asset and then instancing the collection as needed. The question I have about taking this route then is whether or not modifiers persist assetization? For example, if we modeled our object using a mirror modifier to save us some work, would we have to apply it before marking the object as an asset, or will those data types persist the operation and instantiate along with new collection instances?
edit:
...so that you have an idea of what it is I am trying to do here...
I am trying to develop the fundamental skill set to work with assets in Blender, while I attend the CORE | Fundamentals of 3D Mesh Modeling in Blender course.
I would like to create a mock asset library that contains all of the models I am producing throughout the course; i.e. I don't expect to master asset libraries at this time, but it seems like a great idea to incorporate learning the asset browser into the scope of these fundamental courses, since there are so many different exercises to be completed and you generate quite a few different models along the way.
If done properly, I would like to instance all of the models I've produced into a single blend file for a final render upon course completion, but we will see how it goes.
Yes modifiers carry over even if you make instance real, because it creates new object containers as linked duplicates. Basically anything at data level carries over. It's object level(Like parenting) that doesn't survive making instance real, because it's a new object. Side note: An instanced collection is the collection's equivalent of an object's Linked Duplicate(Alt+D). Linked Duplicates is covered in the Blender basics course around the 2 min mark: https://cgcookie.com/lessons/duplicating-joining-and-instancing
As for Groups(In my terminology), This is just a collection that isn't seen in the outliner in normal view layer display. Technically speaking it's just a collection that isn't linked to the scene. Other then not being linked/seen, it is the same thing as a collection.
Also you can add collection instance thru Shift+a->Instance Collection->Select your collection. Also part of the Blender Basics course see around 11 min mark: https://cgcookie.com/lessons/visibility-and-collections-aa836f8f02ed5dfa
I'm familiar with linked duplicates; they introduce that pretty early here, which is useful.
What's the use-case for defining a collection that isn't linked to the scene and isn't an asset (a Group)?
This is mainly left over from before the 2.80 redesign of the user interface back when we had layer and groups. The groups where used primarily for linking assets.
The 3 ways that I've used it for is selection control and collection instancing. So by it not being linked to the scene it keeps the outliner clean.
1. Selection control lets me select an object then shift+g->collection->then select collection to select everything in that collection. Since I only use those for selecting I don't need those collection listed in the outliner.
2. For instancing: I will unlink the original collection so that people won't accidently select the object and transform them, because then it transforms that object for all the instances. Side note: Yes you could just disable that collection in view layer(The check box in the outliner next to the collection name.), but Sometimes people check it, because it was there. When you're working by yourself you usually won't have that problem.
3. This is pretty niche. So if you want to skip this then skip it. On the n-panel under the view tab there is a collections panel. You can show and hide collections thru this panel. I use the Local Collections. Local collections when checked only hide/show(Eye icon) collections in that 3D Viewport and doesn't change the show/hide setting of collections in the outliner. You can also have different collections hidden/showing in different 3D Viewports. Which is handy in some animation situations. Like a control panel for a rig that doesn't follow the Root or a sub Root bone. This panel only shows collections that are Linked to the scene and enabled for that view layer. I only recently learned that I could just disable it in the view layer. Also for the hotkeys people like me you can access this thru the numbers at the top of the keyboard. 1-9 and 0 are the first 10 collection(this isolates the collection) Use shift with the number to toggle show/hide. Then use Alt with the numbers for collection 11 thru 20. Again to toggle use shift+Alt+ the number. for 21+ you will need to go thru the panel or the outliner.
You're a crafty one, aren't you, Dwayne?
I'll try to keep some of these tricks in mind, but Blender as a suite is pretty intimidating; I think I am doing well, but it hasn't been without challenges so far, and I'm just getting started, so I have to continue chipping away for now, at least until I get these fundamentals cemented and free up some of my brain RAM for new information.
I'll be able to refer to this post when these questions pop up again.
How does Blender resolve naming conflicts within the asset browser? i.e., let's say you have a primary asset library and you're working in an isolated .blend file and you've modeled a chair that you've been duplicating about your scene. It's the only unique chair model in your scene, so you give it a generic name; "OBJ_Chair" and mark it as an asset.
Three months go by and you're working on a new project in an independent .blend file and you've modeled a new chair you think you want to use again, but since it is also the only chair in this scene, it never crossed your mind to give it a clever name, and you just follow you're general convention and also name it "OBJ_Chair". What happens if you mark this as an asset whilst an existing asset shares that name?
Does Blender just append a suffix like in the outliner? i.e., ".001"
If the assets are in 2 different blend files then the name stays the same. If you have them in the same blend file blender will rename it with the sufix .001, but you will see this when you go to create it as an asset.
Now if you're talking about when you add them to a scene from the asset browser then the first one will be the name and then each one after that will get the suffix at object level. At the data level it depends on your asset library settings. By default it's append shared data which means it will use the data same data. If the data name is the same, but they are different assets then a suffix will be added. I don't know if I explained that well. Basically if you keep adding the first chair then the data name will stay the same and all the chair objects will share the same data(Linked duplicate), but the object names will have suffix. When you add the other chair it will add the .001 to the data and that will be shared for each time it's added and each object's name will keep raising the suffix count.
That makes perfect sense to me, and that aligns well with how Blender resolves naming conflicts. Perfect, thank you Dwayne!