Skip to content

Commit a4ab8d1

Browse files
authored
Merge pull request #196845 from TimShererWithAquent/t596438e
Edits to improve SEO and usability
2 parents 979e81f + 0f3723c commit a4ab8d1

File tree

5 files changed

+105
-94
lines changed

5 files changed

+105
-94
lines changed

articles/remote-rendering/concepts/object-bounds.md

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,26 @@
11
---
22
title: Object bounds
3-
description: Explains how spatial object bounds can be queried
3+
description: Learn how spatial object bounds can be queried. Object bounds represent the volume that an entity and its children occupy.
44
author: florianborn71
55
ms.author: flborn
66
ms.date: 02/03/2020
77
ms.topic: conceptual
8-
ms.custom: devx-track-csharp
8+
ms.custom:
9+
- devx-track-csharp
10+
- kr2b-contr-experiment
911
---
1012

1113
# Object bounds
1214

13-
Object bounds represent the volume that an [entity](entities.md) and its children occupy. In Azure Remote Rendering, object bounds are always given as *axis aligned bounding boxes* (AABB). Object bounds can be either in *local space* or in *world space*. Either way, they are always axis-aligned, which means the extents and volume may differ between the local and world space representation.
15+
Object bounds represent the volume that an [entity](entities.md) and its children occupy. In Azure Remote Rendering, object bounds are always given as *axis aligned bounding boxes* (AABB). Object bounds can be either in *local space* or in *world space*. Either way, they're always axis-aligned, which means the extents and volume may differ between the local and world space representation.
1416

1517
## Querying object bounds
1618

17-
The local axis aligned bounding box of a [mesh](meshes.md) can be queried directly from the mesh resource. These bounds can be transformed into the local space or world space of an entity using the entity's transform.
19+
The local axis aligned bounding box of a mesh can be queried directly from the mesh resource. These bounds can be transformed into the local space or world space of an entity using the entity's transform. For more information, see [Meshes](meshes.md).
1820

19-
It's possible to compute the bounds of an entire object hierarchy this way, but that requires to traverse the hierarchy, query the bounds for each mesh, and combine them manually. This operation is both tedious and inefficient.
21+
It's possible to compute the bounds of an entire object hierarchy this way. That approach requires traversing the hierarchy, querying the bounds for each mesh, and combining them manually. This operation is both tedious and inefficient.
2022

21-
A better way is to call `QueryLocalBoundsAsync` or `QueryWorldBoundsAsync` on an entity. The computation is then offloaded to the server and returned with minimal delay.
23+
A better way is to call `QueryLocalBoundsAsync` or `QueryWorldBoundsAsync` on an entity. This approach offloads computation to the server and returns with minimal delay.
2224

2325
```cs
2426
public async void GetBounds(Entity entity)

articles/remote-rendering/how-tos/conversion/override-materials.md

Lines changed: 22 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,26 @@
11
---
22
title: Override materials during model conversion
3-
description: Explains the material overriding workflow at conversion time
3+
description: Learn about the material overriding workflow at conversion time. Material settings in the source model define the PBR materials used by the renderer.
44
author: florianborn71
55
ms.author: flborn
66
ms.date: 02/13/2020
77
ms.topic: how-to
8+
ms.custom: kr2b-contr-experiment
89
---
910

1011
# Override materials during model conversion
1112

12-
The material settings in the source model are used to define the [PBR materials](../../overview/features/pbr-materials.md) used by the renderer.
13-
Sometimes the [default conversion](../../reference/material-mapping.md) doesn't give the desired results and you need to make changes.
13+
The material settings in the source model define the [PBR materials](../../overview/features/pbr-materials.md) used by the renderer.
14+
Sometimes the default conversion doesn't give the desired results and you need to make changes. For more information, see [Material mapping for model formats](../../reference/material-mapping.md).
15+
1416
When a model is converted for use in Azure Remote Rendering, you can provide a material override file to customize how material conversion is done on a per-material basis.
15-
If a file called `<modelName>.MaterialOverrides.json` is found in the input container beside the input model `<modelName>.<ext>`, then it will be used as the material override file.
17+
If a file called *\<modelName>.MaterialOverrides.json* is found in the input container with the input model *\<modelName>.\<ext>*, it's used as the material override file.
1618

1719
## The override file used during conversion
1820

19-
As a simple example, let's say that a box model has a single material, called "Default".
20-
Additionally, let's say its albedo color needs to be adjusted for use in ARR.
21-
In this case, a `box.MaterialOverrides.json` file can be created as follows:
21+
As a simple example, take a box model that has a single material, called `Default`.
22+
Its albedo color needs to be adjusted for use in Remote Rendering.
23+
In this case, a *box.MaterialOverrides.json* file can be created as follows:
2224

2325
```json
2426
[
@@ -34,12 +36,12 @@ In this case, a `box.MaterialOverrides.json` file can be created as follows:
3436
]
3537
```
3638

37-
The `box.MaterialOverrides.json` file is placed in the input container beside `box.fbx`, which tells the conversion service to apply the new settings.
39+
The *box.MaterialOverrides.json* file is placed in the input container with *box.fbx*, which tells the conversion service to apply the new settings.
3840

3941
### Color materials
4042

41-
The [color material](../../overview/features/color-materials.md) model describes a constantly shaded surface that is independent of lighting.
42-
Color materials are useful for assets made by Photogrammetry algorithms, for example.
43+
The color material model describes a constantly shaded surface that is independent of lighting.
44+
Color materials are useful for assets made by Photogrammetry algorithms, for example. For more information, see [Color materials](../../overview/features/color-materials.md).
4345
In material override files, a material can be declared to be a color material by setting `unlit` to `true`.
4446

4547
```json
@@ -57,9 +59,9 @@ In material override files, a material can be declared to be a color material by
5759

5860
### Ignore specific texture maps
5961

60-
Sometimes you might want the conversion process to ignore specific texture maps. This might be the case when your model was generated by a tool that generates special maps not understood correctly by the renderer. For example, an "OpacityMap" that is used to define something other than opacity, or a model where the "NormalMap" is stored as "BumpMap". (In the latter case you want to ignore "NormalMap", which will cause the converter to use "BumpMap" as "NormalMap".)
62+
Sometimes you might want the conversion process to ignore specific texture maps. This situation might happen when your model was generated by a tool that generates special maps not understood by the renderer. For example, an "OpacityMap" might be used to define something other than opacity, or the "NormalMap" is stored as "BumpMap". In the latter case you want to ignore "NormalMap", which causes the converter to use "BumpMap" as "NormalMap".
6163

62-
The principle is simple. Just add a property called `ignoreTextureMaps` and add any texture map you want to ignore:
64+
Add a property called `ignoreTextureMaps` and add any texture map you want to ignore:
6365

6466
```json
6567
[
@@ -70,15 +72,15 @@ The principle is simple. Just add a property called `ignoreTextureMaps` and add
7072
]
7173
```
7274

73-
For the full list of texture maps you can ignore, see the JSON schema below.
75+
For the full list of texture maps you can ignore, see the [JSON schema](#json-schema).
7476

7577
### Applying the same overrides to multiple materials
7678

7779
By default, an entry in the material overrides file applies when its name matches the material name exactly.
78-
Since it's quite common that the same override should apply to multiple materials, you can optionally provide a regular expression as the entry name.
80+
Since it's common that the same override should apply to multiple materials, you can optionally provide a regular expression as the entry name.
7981
The field `nameMatching` has a default value `exact`, but it can be set to `regex` to state that the entry should apply to every matching material.
80-
The syntax used is the same as that used for JavaScript.
81-
The following example shows an override which applies to materials with names like "Material2", "Material01" and "Material999".
82+
The syntax used is the same syntax used for JavaScript.
83+
The following example shows an override that applies to materials with names like `Material2`, `Material01` and `Material999`.
8284

8385
```json
8486
[
@@ -95,17 +97,17 @@ The following example shows an override which applies to materials with names li
9597
]
9698
```
9799

98-
At most one entry in a material override file applies to a single material.
99-
If there is an exact match (i.e. `nameMatching` is absent or equals `exact`) for the material name, then that entry is chosen.
100+
At most, one entry in a material override file applies to a single material.
101+
If there's an exact match (that is, `nameMatching` is absent or equals `exact`) for the material name, then that entry is chosen.
100102
Otherwise, the first regex entry in the file that matches the material name is chosen.
101103

102104
### Getting information about which entries applied
103105

104-
The [info file](get-information.md#information-about-a-converted-model-the-info-file) written to the output container carries information about the number of overrides provided, and the number of materials that were overridden.
106+
The info file written to the output container carries information about the number of overrides provided, and the number of materials that were overridden. For more information, see [Information about a converted model](get-information.md#information-about-a-converted-model-the-info-file).
105107

106108
## JSON schema
107109

108-
The full JSON schema for materials files is given here. With the exception of `unlit` and `ignoreTextureMaps`, the properties available are a subset of the properties described in the sections on the [color material](../../overview/features/color-materials.md) and [PBR material](../../overview/features/pbr-materials.md) models.
110+
The full JSON schema for materials files is given here. Except for `unlit` and `ignoreTextureMaps`, the properties available are a subset of the properties described in the sections on the [color material](../../overview/features/color-materials.md) and [PBR material](../../overview/features/pbr-materials.md) models.
109111

110112
```json
111113
{

articles/remote-rendering/overview/features/z-fighting-mitigation.md

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,26 @@
11
---
22
title: Z-fighting mitigation
3-
description: Describes techniques to mitigate z-fighting artifacts
3+
description: Learn about techniques to mitigate z-fighting artifacts that occur when surfaces overlap and it isn't clear which one should be rendered on top.
44
author: florianborn71
55
ms.author: flborn
66
ms.date: 02/06/2020
7-
ms.topic: article
8-
ms.custom: devx-track-csharp
7+
ms.topic: how-to
8+
ms.custom:
9+
- devx-track-csharp
10+
- kr2b-contr-experiment
911
---
1012

1113
# Z-fighting mitigation
1214

13-
When two surfaces overlap, it is not clear which one should be rendered on top of the other. The result even varies per pixel, resulting in camera view-dependent artifacts. Consequently, when the camera or the mesh moves, these patterns flicker noticeably. This artifact is called *z-fighting*. For AR and VR applications, the problem is intensified because head-mounted devices naturally always move. To prevent viewer discomfort z-fighting mitigation functionality is available in Azure Remote Rendering.
15+
When two surfaces overlap, it isn't clear which one should be rendered on top of the other. The result even varies per pixel, resulting in camera view-dependent artifacts. When the camera or the mesh moves, these patterns flicker noticeably. This artifact is called *z-fighting*. For augmented reality and virtual reality applications, the problem is intensified because head-mounted devices naturally always move. To prevent viewer discomfort, Azure Remote Rendering offers z-fighting mitigation functionality.
1416

1517
## Z-fighting mitigation modes
1618

1719
|Situation | Result |
1820
|---------------------------------|:-------------------------------------|
19-
|Regular z-fighting |![No deterministic precedence between red and green quads](./media/zfighting-0.png)|
20-
|Z-fighting mitigation enabled |![Red quad has precedence](./media/zfighting-1.png)|
21-
|Checkerboard highlighting enabled|![Red and green quad toggle preference in checkerboard pattern](./media/zfighting-2.png)|
21+
|Regular z-fighting |![Screenshot shows no deterministic precedence between red and green quads.](./media/zfighting-0.png)|
22+
|Z-fighting mitigation enabled |![Screenshot displays the red quad precedence with a solid red rectangle.](./media/zfighting-1.png)|
23+
|Checkerboard highlighting enabled|![Screenshot shows red and green quad toggle preference with a checkerboard pattern rectangle.](./media/zfighting-2.png)|
2224

2325
The following code enables z-fighting mitigation:
2426

@@ -55,16 +57,16 @@ void EnableZFightingMitigation(ApiHandle<RenderingSession> session, bool highlig
5557
5658
Z-fighting happens mainly for two reasons:
5759
58-
1. when surfaces are very far away from the camera, the precision of their depth values degrades and the values become indistinguishable
59-
1. when surfaces in a mesh physically overlap
60+
* When surfaces are very far away from the camera, the precision of their depth values degrades and the values become indistinguishable
61+
* When surfaces in a mesh physically overlap
6062
61-
The first problem can always happen and is difficult to eliminate. If this happens in your application, make sure that the ratio of the *near plane* distance to the *far plane* distance is as low as practical. For example, a near plane at distance 0.01 and far plane at distance 1000 will create this problem much earlier, than having the near plane at 0.1 and the far plane at distance 20.
63+
The first problem can always happen and is difficult to eliminate. If this situation happens in your application, make sure that the ratio of the *near plane* distance to the *far plane* distance is as low as practical. For example, a near plane at distance 0.01 and far plane at distance 1000 creates this problem much earlier than having the near plane at 0.1 and the far plane at distance 20.
6264
63-
The second problem is an indicator for badly authored content. In the real world, two objects can't be in the same place at the same time. Depending on the application, users might want to know whether overlapping surfaces exist and where they are. For example, a CAD scene of a building that is the basis for a real world construction, shouldn't contain physically impossible surface intersections. To allow for visual inspection, the highlighting mode is available, which displays potential z-fighting as an animated checkerboard pattern.
65+
The second problem is an indication of badly authored content. In the real world, two objects can't be in the same place at the same time. Depending on the application, users might want to know whether overlapping surfaces exist and where they are. For example, a CAD scene of a building that is the basis for a real world construction, shouldn't contain physically impossible surface intersections. To allow for visual inspection, the highlighting mode is available, which displays potential z-fighting as an animated checkerboard pattern.
6466
6567
## Limitations
6668
67-
The provided z-fighting mitigation is a best effort. There is no guarantee that it removes all z-fighting. Also it will automatically prefer one surface over another. Thus when you have surfaces that are too close to each other, it might happen that the "wrong" surface ends up on top. A common problem case is when text and other decals are applied to a surface. With z-fighting mitigation enabled these details could easily just vanish.
69+
The provided z-fighting mitigation is a best effort. There's no guarantee that it removes all z-fighting. Also, mitigation prefers one surface over another. When you have surfaces that are too close to each other, the "wrong" surface ends up on top. A common problem case is when text and other decals are applied to a surface. With z-fighting mitigation enabled, these details could easily just vanish.
6870
6971
## Performance considerations
7072

0 commit comments

Comments
 (0)