# ProjectedMesh Objects {{% tagged "internal" %}} // CALLOUT This object is not available when the Scenery Editor is in [World Hub Mode](../../the-scenery-editor/#worldhub). {{% /tagged %}} A **projected mesh** object is an object element that is used as part of an airport to add detail to terrain. A projected mesh takes a scenery object, but - instead of drawing it in 3D - the mesh will be projected on the ground and rendered in 2D. {{< image-center src="images/2_DevMode/scenery_editor/Objects/projectedmesh/projmesh_obj_3_example.png" alt="An Example Of A Projected Mesh" >}} If several meshes are drawn on top of each other, they *must have different priorities*. The lowest priority is rendered first and higher priorities are rendered over it. By default, they are drawn below every other object in the airport, although this behavior can be changed with the **Draw Before** option in the **Properties**. {{< callout context="note" title="NOTE" icon="outline/bulb" >}} User created models with translation/rotation/scaling applied to them on export from the chosen 3D editor will not have these transforms applied when added into the game as a projected mesh. If you require these transforms, you need to either use the scenery editor {{< link "../menus/the-view-menu/#gizmo" >}}Gizmo{{< /link >}} to do the transform - in which case the model should be exported without any transforms - or carefully make all the transformation to the model before exporting in the 3D editor. {{< /callout >}} When you select this object type you will be presented with a list of different scenery object elements listed in the [Objects](../../menus/the-view-menu/#objects) window: {{< image-center src="images/2_DevMode/scenery_editor/Objects/projectedmesh/projmesh_obj_1_list.png" alt="Different Scenery Object Elements Listed In The Objects Window" >}} The exact number and kind of elements listed will depend on the version of Microsoft Flight Simulator 2024 that you are running as well as what packages you have installed and whether you have added any custom [ModelLib](../../../project-editor/asset-types/#modellib) packages. To place a Projected Mesh object element in the scene you can click the {{< button "Add" />}} button, and then use the Translate [Gizmo](../../menus/the-view-menu/#gizmo) to position the object where you want, or you can enable `One-Click Placing` and simply click in the world to place it. You may also use the Rotation [Gizmo](../../menus/the-view-menu/#gizmo) to change the angle the element is shown at, as well as the Scale [Gizmo](../../menus/the-view-menu/#gizmo) to change its size. By default, Projected Mesh objects require one or more [Airport Objects](../airport-objects/) to be present in the scene, and will be added to an airport group in [The Scenery Editor](../../the-scenery-editor/). If no airport is present and you still require a Projected Mesh, then you should check the box labelled **Independent Object** before adding it to the scene. {{< callout context="caution" title="IMPORTANT!" icon="outline/alert-triangle" >}} If a default airport Projected Mesh is placed too far away from the airport (ie: outside the airport {{< link "airport-objects/#object-test-radius" >}}Object Test Radius{{< /link >}} then it will not be rendered. {{< /callout >}} Once you place a Projected Mesh in the scene, the Scenery Editor will show a Projected Mesh group with a single child that is the mesh that was just placed (if the projected mesh is *independent* then the group will be created in the scenery root, otherwise it will be created within the airport group). Both the group and the mesh object have **properties** that can be set, explained below. Note that after placing the object you may get a warning in the Scenery Editor contents list: {{< image-center src="images/2_DevMode/scenery_editor/Objects/projectedmesh/projmesh_obj_2_warning.png" alt="Projected Mesh Warnings In The Scenery Editor" >}} If you mouse over the element in the list you'll get a tooltip that shows exactly what the issue is: {{< image-center src="images/2_DevMode/scenery_editor/Objects/projectedmesh/projmesh_obj_2_warning2.png" alt="ProjectedMesh Tooltip Warning Message" >}} These warnings will not make the package invalid, but they are things you should be aware of as they may affect the way the object is finally rendered. To avoid these issues your custom meshes should be exported *without translation, rotation or scale,* and only materials that contain these textures (in any combination) should be used: - albedo - metal roughness AO - normal map - detail color - detail normal - detail metal rough AO {{< callout context="note" title="NOTE" icon="outline/bulb" >}} When they are present, metal and AO components are not used. {{< /callout >}} {{< callout context="caution" title="IMPORTANT!" icon="outline/alert-triangle" >}} When being rendered, projected meshes are baked into the terrain textures. This helps reduce the polycount and permits the element to be terraformed. However, it also means that the texture quality won't be any greater than the resolution of the terrain textures themselves. In general, this resolution is around 4mm/pixel at the equator, with the best/highest resolution terrain textures reserved for higher LODs so we have a better quality for airports. For users, they will experience the best resolution possible setting the "Terrain level of detail" option to its maximum value. {{< /callout >}} ### Projected Mesh (Group) Properties Projected Mesh groups have the following [Properties](../../menus/the-view-menu/#properties) which can be edited (regardless of whether they are within an airport or independent): {{< image-center src="images/2_DevMode/scenery_editor/Objects/projectedmesh/projmesh_obj_4_groupprops.png" alt="The Group Properties Window For A Projected Mesh" >}} - ##### Name This is the name of the projected mesh object element as defined from its file. - ##### Display Name This is the name of the projected mesh group as it will be displayed in the [The Scenery Contents List](../../the-scenery-editor/#the-scenery-contents-list). This can be edited and is helpful for identifying elements when you have a lot of items in the content list. - ##### Lat / Lon / Alt The latitude, longitude, and altitude of the projected mesh object. - ##### Priority This option sets the **render priority** for the projected mesh object. The default render priority is 0, which for most cases is fine. However, if you have overlapping meshes and want one to render over another one, then you will need to change this value clicking the {{< button "+" />}} or {{< button "-" />}} buttons to raise or lower the priority value. Higher priority values will render *over* lower priorities, for example, a mesh with priority 1 will render over one with priority 0, which in turn will render over one with priority -1. Note that **the engine cannot guarantee the render order for meshes with the *same* priority**, so if you need something to always render over or under something else, you need to set this value. - ##### Draw Before This option permits you to place meshes into the render hierarchy so that they are drawn under or over different elements. When you click this option, you will be shown a list of object elements which are shown in the order they are rendered. When you pick one, the projected mesh will be rendered *over* the previous object types, and *under* the subsequent types. For example, if you select MARKINGS, then the projected mesh will be rendered over Aprons, Taxiways and Runways, but under Markings, Runway Markings and Marking Text. - ##### Surface Type This option permits you to select from a list of default surface types that can be applied to the projected mesh. These surface types **will have no visual effect on the projected mesh** and are used for internal simulation calculations to choose correct VFX and audio. You should always try and choose a surface type that is appropriate for the visuals of the mesh. - ##### Ground Merging When checked, this option will merge the terrain textures with the material textures that are used for the projected mesh. Mouse over the image below to see the difference: {{< image-hover src="images/2_DevMode/scenery_editor/Objects/projectedmesh/projmesh_obj_5_merge1.png" hover="images/2_DevMode/scenery_editor/Objects/projectedmesh/projmesh_obj_5_merge2.png" alt="Ground Merging Enabled / Disabled" >}} #### Notes On Snow Coverage It is worth noting that snow coverage for a projected mesh is dealt with automatically by the simulation and will depend on the following factors: - **colour**: the darker areas of the combined ground / projected mesh will have less snow cover. - **material**: the following materials will further reduce the snow cover if used on the projected mesh - asphalt, cement, paint. - **roads**: if there is a road over the ground where the projected mesh has been added, then that too will have reduced snow cover. ### Projected Mesh Properties Projected mesh objects have the following [Properties](../../menus/the-view-menu/#properties) which can be edited: {{< image-center src="images/2_DevMode/scenery_editor/Objects/projectedmesh/projmesh_obj_6_objprops.png" alt="The Properties Window For A Projected Mesh" >}} Note that projected mesh objects will be shown automatically as invisible, locked, and unable to be edited in [The Scenery Contents List](../../the-scenery-editor/#the-scenery-contents-list): This is because, while editing the scenery, the actual object is used to create the projected mesh, but this object is *not* required by the final package as the mesh will be baked into the {{< glossterm >}}gltf{{< /glossterm >}} file. So, you edit the projected mesh *group*, not the object it contains that creates the mesh. - ##### Name This is the name of the projected mesh object element as defined from its file. - ##### Display Name This is the name of the projected mesh object element as it will be displayed in the [The Scenery Contents List](../../the-scenery-editor/#the-scenery-contents-list). This can be edited and is helpful for identifying elements when you have a lot of items in the content list. - ##### Assign Instance ID Clicking this button will create a {{< glossterm >}}guid{{< /glossterm >}}-formatted **Instance ID** unique to the instance of the projected mesh element placed within the simulation. This is distinct to the GUID value (explained below), as the GUID will be shared by all elements of the same object, while the instance ID will be unique to each instance of that object. - ##### GUID This shows the unique {{< glossterm >}}guid{{< /glossterm >}} for the projected mesh element. This ID value is for the base object element itself, and will be shared with all instances of the element that are placed in the world. Use the {{< button "Assign Instance ID" />}} button if you require a unique GUID for a specific instance of the object element, and you click the {{< button "Copy" />}} button to get a copy of the GUID if required. - ##### Package This shows the name of the package that the currently selected projected mesh object element comes from. - ##### Model Info This section will only be available if the object is using a model from the current package being edited. Expanding this section will show the following: {{< image-center src="images/2_DevMode/scenery_editor/Objects/scenery/scenery_obj_8_modelinfo.png" alt="Model Info Details In The Properties" >}} - **LODs**: If the `model.xml` has any LODs defined, they will be shown here along with their MinSize value. You cannot add or remove LOD settings here, but you can change their MinSize values, which will be saved to the XML when you save the package. - **Tags**: From this section you can assign specific *tags* to the model. These are used in the [Objects](../../menus/the-view-menu/#objects) window as another type of filter to help find the objects you wish to use. To add a tag, click the {{< button "Add tag" />}} button, and you can remove a tag using the {{< button "X" />}} button.