Assets in Spreadsheet
A virtual factory model, including the 3D scene, can be defined in terms of assets by taking advantage of a spreadsheet organized in two sheets:
- "Context": definition of context setup.
- "Assets": detailed definition of assets that are included (or not) in the scene. Assets not included in the scene are models/templates that are referenced or could be later instantiated in the scene.
The template (updated on 27/04/2021) can be downloaded. It is recommended not to delete rows in the "Assets" sheet.
The data defined in the spreadsheet can be exported as a JSON file by copying the content of cell B1 in sheet "Context".
The Context sheet contains the following properties (all required):
- "UnitOfMeasureScale": The default unit of measurement scale for distances (e.g. 0.01 stands for centimeter, whereas 1 stands for meter)
- "Zup": is a boolean parameter specifying the convention for the 3-D Cartesian coordinate system. The parameter is set to true if Z-axis is the vertical axis pointing up from the ground (i.e. Zup convention), or set to false if the Y-axis is the vertical axis pointing up from the ground (i.e. Yup convention). In both cases the right-handed system convention is assumed.
- "RepoPath": Path of the repository where the 3D models can be found. RepoPath can be defined as absolute or as relative to the application path. The file path of 3D models is defined relatively to RepoPath (e.g. '/repository/', 'https://example.com/datarepository/').
The Assets sheet contains items characterized by the following fields in columns:
- "id": unique identifier of the asset [required]
- “inScene”: equal to 1 if the asset is included in the scene, 0 otherwise [required]
- "descr": textual static description of the asset [optional]
- "model": ID of the model of the asset (if existing), e.g. the model of a machine tool that is described in a catalog. In turn, the model can have a model. Please refer to the Object Typing pattern.
- "file": file path of the 2D/3D model representation, as relative to the RepoPath [optional]. The file can be available on a local or remote file system (see example), as any online repository accessible via HTTPS (see example). The “file” property can be used also as a reference to a specific component inside the hierarchy of a 3D model by adding a hashtag and the ID of the component to the file path (e.g. #componentID'). For instance, the “file” property will have the value "FileName.glb#nodeId" if it refers to a node with unique ID "nodeId" inside a GLTF file named "FileName.glb".
- "unit": Unit of measure to interpret a 3D representation (e.g. 0.01 stands for centimeter, whereas 1 stands for meter) [required if “file” is defined]
- "position": The Position of the asset in terms of x, y, z values. If missing, the default value is [0.0,0.0,0.0] or the value of the corresponding node in a GLTF hierarchy, if available.
- "rotation": The rotation of the asset as Euler angles YXZ defined in radians. If missing, the default value is the rotation of the corresponding node in a GLTF hierarchy (if available), otherwise [0.0,0.0,0.0].
- "placementRelTo": ID of the asset with respect to which the placement (position and rotation) is defined in relative terms. This means that a rototranslation must be applied with respect to the placement of the asset identified by the value of placementRelTo. This relation happens between nodes directly connected in a scene graph. For instance, the placement of a pallet can be defined as relative to the placement of a conveyor.
- "parentObject": ID of the asset that is decomposed (it may be empty or missing) when an aggregated asset is represented. If a parentObject is defined, then placementRelTo is defined as equal to parentObject. However, if a placementRelTo value is defined, then it is not necessarily also the parentObject. For instance, machine components decompose a workstation, whereas a pallet doesn't decompose a conveyor.
In addition, the following optional fields can be used to further characterize the scene in terms of relations and properties.
- "connectedTo": list of assets ID that are connected downstream to the asset. The list may be empty or missing [optional]
- “assignmentTo": list of assignments to other assets. The list may be empty or missing [optional]
- “successors": successor of a task [optional]
- “taskTime": execution time of a task [optional]
- “bufferCap": buffer capacity [optional]
- “TTF": time to failure (for devices like machines) in terms of probability distribution and value [optional]
- “TTR": time to repair (for devices like machines) in terms of probability distribution and value [optional]
- “duration": duration of a production plan [optional]
- “quantity": quantity to be produced in a production plan [optional]
Examples of a scene with assets instantiated in a spreadsheet are available together with the corresponding to the JSON files for simple cases, an assembled product, and a workstation.