This topic provides useful information, tips, best practices, and methods for working with the Container feature.
Container Definitions
A container definition is a MAXC file that stores the content of the container. You can use a definition file in either of
two ways:
- Stores the changes you make to the content.
- References content into a container in your scene.
When you save a container in your scene, you save a Local Definition. If others reference your content, then their Source
Definition is the same as your Local Definition. If they make changes to your content, they save those changes to a unique
Local Definition of their own. The exception is Edit in Place, which saves changes back to the Source Definition, overwriting
it.
You can open a definition file to troubleshoot its contents the same way you would a regular MAX scene file: Simply rename
the container file's MAXC extension to MAX.
Locked Definitions
When the same local definition is shared by multiple containers, you can access only one of the containers at a time. When
the status is Locked, this means that this container's definition is being accessed elsewhere. This can occur when:
- The container allows editing in place, but someone is currently editing it.
- The container has been copied and one of the copies is open.
- The same 3ds Max scene file is open elsewhere, and the same container is open.
As long as a local definition exists, when the container is open or edited, a temporary file is created to identify the status
to others who try to access it. This file is deleted when you exit Edit In Place mode or close the container. However, if
you exit or reset 3ds Max while editing in place, this lock file might remain, causing the container to be inaccessible subsequently. To restore accessibility,
open the folder in which the container file resides and delete the file with the same name as the container file, appended
with .lock. For example, if the container file is named dining_room.maxc, the lock file would be named dining_room.maxc.lock.
To avoid conflicts, make it a practice to close a container when you are ready for it to be accessible locally by another
user.
Tips and Best Practices
- Because containers can be inherited by others, who can add them to their own scenes, be sure to package all relevant dependencies
for the content in the container. If you do not, the relationships with objects outside of the container will be severed upon
Update, Close, or Unload.
For example, if a sphere’s motion influences deformation of a cylinder with the Linked XForm modifier, you might place the
cylinder and any related objects inside one container, and then place that container and the sphere inside a second container.
- If you plan to share a container with others, make sure you are all using the same system units.
- You cannot instance containers. You can clone containers, and the cloned containers will be closed because the original container has locked the definition. To inherit changes made to whichever copy is currently open, turn onAuto Update When Closed
If you clone a saved or closed container, you cannot undo the action.
- A container is the parent of its contents, so, by default, any transforms you apply to the container affect all objects inside
it.
To transform a container without affecting its contents, select an open container and, on the Hierarchy panel Adjust Transform rollout, turn on Dont Affect Children. This setting applies only when the Hierarchy panel is active.
- You can create parent/child relationships among objects inside a container, but all content is a descendant of the container.
The following rules apply to working with object hierarchies within containers:
Similarly, if you link an object outside a container as parent of an object inside a container, the latter is removed from
the container without prompting. However, if you link an object outside a container as a child of an object inside a container, you’re prompted to add the former to the container.
- You cannot add XRef objects or objects with XRef materials or controllers in a container. Instead, you can inherit a container that contains
objects that you might otherwise use as XRefs, and add that to another container.
- Before placing an animated rig in a container, make sure no objects in the rig are hidden or frozen and that the container
is centered at the origin (X=0, Y=0, Z=0). When adding rigs to a container, be sure to include all dependencies as well.
NoteBiped and CAT systems are always local when inherited. This means they update only in closed containers, and do not support
unlocking specific attributes.
- Inheriting a container works much like merging assets into the scene. For instance, if the content uses a bitmap, the map will not be found if the path has changed, or
the new path is not defined in External Files.
In such cases, you can use the Missing Map Files dialog that opens to locate the files.
Procedures
To create a container:
- On the Create panel, click (Helpers).
- On the Object Type rollout, click Container.
- Click and drag in a viewport to create the container helper object.
- Right-click to end the object creation.
When first created, the container is open, and thus is editable.
To create a container from selected objects:
After selecting objects to place in a container, do one of the following:
A container is added to the scene with the selected objects placed inside.
To add objects to a container:
Do one of the following:
- In a viewport, select an open container to add objects to, then on the Modify panel Local Content rollout, click Add. Use the Add Container Node dialog that opens to highlight the objects to add, and click
Add.
- In a viewport, select the objects you want to add to the container, then from the Tools menu, choose Containers Local Content Add Selected To Container. Use the Select Container To Add To dialog that opens to select an open container to add the objects
to.
- Open a Container Explorer, Scene Explorer, or Container Toolbar, select the objects to add, and on the toolbar, click (Add Selected To Container). Use the Select Container To Add To dialog to highlight the container, and click Add.
The added objects remain visible in the viewports, but when the container is closed they are removed from the scene and referenced
from the container’s MAXC file.
To remove objects from a container:
Do one of the following:
- Select an open container from which to remove objects. (You cannot select objects in closed containers.) On the Modify panel
Local Content rollout, click Remove. Highlight objects to remove in the Remove Container Node dialog list and then click
Remove.
- Select the objects to remove, then from the Tools menu, choose Containers Local Content Remove Selected From Container.
- Open a Container Explorer or Scene Explorer, highlight the objects to remove, and on the toolbar click (Remove Selected From Container).
The objects are removed from the container and added to the scene.
To identify which container an object belongs to:
- Select the object in a scene whose container you want to identify.
- From the Tools menu, choose Containers Select Contents Container.
The object’s container is selected in the scene.
NoteIn the case of nested containers, the object’s immediate parent container is selected.
To close and save a container:
- Do one of the following:
- Select the container to close and then on the Modify panel Manage Container rollout, click Close.
- Select the container to close and then from the Tools menu, choose Containers Close Container.
- Open a Container Explorer, Scene Explorer, or Container Toolbar, highlight the container to close, and on the toolbar click (Close Container).
- If this is the first time you are closing the container, you’re prompted to save it first. Use the Container Definition File
dialog to specify the location and file name, then click Save.
The Container helper changes from an open to closed state. After you close the container, it can be edited by someone else.
Objects in closed containers are removed from the scene but remain visible. They are now referenced by the scene from the
saved container’s file. Closing containers can be an effective way to improve scene performance.
To save a container:
Do one of the following:
- Select the container to save, then on the Modify panel Local Content rollout, click Save or Save As.
- Select the container to save, then choose Tools menu Containers Local Content Save Container.
- Open a Container Explorer, Scene Explorer, or Container Toolbar, select the container to save, and on the toolbar click (Save Container).
If this is the first time you are saving the container, a file dialog prompts you for the name and location of the MAXC file
to save.
To reload a container:
Do one of the following:
To update a container:
Only containers with inherited content can be updated. To update an inherited container, do one of the following:
- In a viewport, select the container to update, then on the Modify panel Local Content rollout, click Update.
- In a viewport, select the container to update, then from the Tools menu, choose Containers Update.
- Open a Container Explorer, Scene Explorer, or Container Toolbar, select the container to update, and on the toolbar click (Update).
This updates the container to its most recently saved version.
To inherit a container:
This procedure shows how to bring a container into a scene as a new entity. Alternatively, you can inherit a container into
an existing container; see the following procedure.
- Do one of the following:
- On the Inherit Container dialog, navigate to the MAXC file of the container to inherit in your scene.
- Click Open.
If the author of the container has provided edit permission and you click Edit In Place, you can edit its contents.
To inherit the contents of a saved container into an existing container:
- In a viewport, select the container to receive the inherited contents, then on the Modify panel Manage Container rollout, click Inherit Content.
- Use the Inherit Content dialog to navigate to the MAXC file of the container whose objects and display properties you want
to inherit.
- Click Open.
Any contents in the current container are deleted and replaced with the contents of the container you chose to inherit.
If the author of the container has provided permission and you click Edit In Place, you can edit its contents.
To edit an inherited container:
You can edit an inherited container only if the author has provided edit permission.
If edit permission has been granted, do one of the following:
To allow edits to a container:
- Select an open container.
- On the Modify panel Rules rollout, choose Only Edit In Place, Only Add New Objects, or Anything Unlocked (and set attributes to lock), then save
the container. For explanations of these options, see Rules rollout.
- Close the container.
The container file can now be edited by someone else. Anyone who subsequently references the container will inherit the changes.
To change inherited content to local content:
Inherited content is referenced into the scene from the container file, so that changing that content also changes the file.
You can de-reference the content, thus making it unique, by following this procedure.
Do one of the following:
- Select the closed container in your scene whose referenced contents you want to make unique, then on the Modify panel Manage Container rollout, click Make All Content Unique.
- In a viewport, select the closed container in your scene whose referenced contents you want to make unique, then from the
Tools menu, choose Containers Make All Content Unique.
- Open a Container Explorer, Scene Explorer, or Container Toolbar, select the closed container in your scene whose referenced contents you want to make unique, and on the toolbar click (Make All Content Unique).
The container status changes from Closed to Open and all its contents are loaded into the scene. The contents are no longer
referenced from the MAXC file; any changes you now make to the container contents are done locally.
To merge a container into your scene:
Select a closed container that is inheriting contents from an externally referenced source container and do one of the following:
- On the Modify panel Inherited Content rollout, click Merge Source Definition.
- On the Tools menu, choose Containers Inherited Content Merge Container Source.
- Open a Container Explorer, Scene Explorer, or Container Toolbar and on the toolbar click (Merge Container Source).
The container is loaded with the most recent version of the source container and changes from closed to open. The container
is now local and any changes you make to the container no longer affect the source.
To override content display settings:
Select the container whose object display properties you want to override and do one of the following:
To delete a container:
- In a viewport or Explorer, select the container to delete.
- Press Delete or choose Edit menu Delete.
When you delete a container, its content is deleted as well.