Models are part of Roblox Library. Models are known as the container objects. It means that they hold the objects and group objects together. These kinds of thing are best used to hold collections of BasePart and have the number of functions that extend the functionality.
Furthermore, models allow every developer to group selections of BasePart together. It is at their most basic level. This one is particularly useful when you build the environments in Roblox Studio as it can be mean that the grouped parts are able to be moved and rotated together. When no storing collections of BasePart, it is better for the developers to use Folder object, as theu will not benefit from the additional functionality Models provide.
In order to access several of the extended functionality Models provide, the thing called Model.PrimaryPart property has to be set. This property itself points to the BasePart within the Model that is to be used when you are moving, otherwise manipulating the model.
There are the wide range of applications of Models, including being used for Roblox Player Characters.aside from that, they also have the number of unique behaviours which are important to keep in mind when using them:
1. When the Humanoid and the Part known as Head are parented under the model, the name tag GUI will show up with the name of the model.
2. If the position of the Part on the Y axis hits the Workspace.FallenPartsDestroyHeight value and this one counted as the last object inside of the Model, the Model will to be destroyed as well.
This following is about the properties of Models. In the properties, there is BasePart Primary Part. This one points to the primary part of the Model. It is the BasePart that is used as the basis when positioning the model using the Model:MoveTo and Model:SetPrimaryPartCFrame functions.
Aside from properties, there are also some functions. First, void BreakJoints. This one will break the connections between BasePArts, including the surface connections with any adjacent parts, WeldConstraint and all Weld and the other JoinInstance. Second, Vector GetExtentsSize. This one will return the size of the smallest bounding box that contains all of the BasePart in the Model, aligned with the Model.PrimaryPart of it is set. Third, Cframe GetPrimaryPartCFrame. This onw ill return the CFrame of the Model’s Model.PrimaryPart.
Apparently, this function will throw the error if there is no primary part for the Model. Fourth, void MakeJoints. This one goes through all BasePart in the Model. If there is any side of the part has the SurfaceType that is able to make the joint, it will create the joint with any adjacent parts. Fifth, void MoveTo (Vector3 position). This one will move the Model.PrimaryPart to the given position. If there is the primary part that has not been specified, then the root part of the model will be used. Sixth, void SetPRimaryPartCFrame (Cframe cframe). This one will set the BasePart.Cframe of the Model’s Model.PrimaryPart.every part in the model will also be moved and will maintain the orientation and offset respective to the Model.PrimaryPart.