You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: articles/remote-rendering/concepts/object-bounds.md
+8-6Lines changed: 8 additions & 6 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,24 +1,26 @@
1
1
---
2
2
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.
4
4
author: florianborn71
5
5
ms.author: flborn
6
6
ms.date: 02/03/2020
7
7
ms.topic: conceptual
8
-
ms.custom: devx-track-csharp
8
+
ms.custom:
9
+
- devx-track-csharp
10
+
- kr2b-contr-experiment
9
11
---
10
12
11
13
# Object bounds
12
14
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.
14
16
15
17
## Querying object bounds
16
18
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).
18
20
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.
20
22
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.
Copy file name to clipboardExpand all lines: articles/remote-rendering/how-tos/conversion/override-materials.md
+22-20Lines changed: 22 additions & 20 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,24 +1,26 @@
1
1
---
2
2
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.
4
4
author: florianborn71
5
5
ms.author: flborn
6
6
ms.date: 02/13/2020
7
7
ms.topic: how-to
8
+
ms.custom: kr2b-contr-experiment
8
9
---
9
10
10
11
# Override materials during model conversion
11
12
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
+
14
16
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.
16
18
17
19
## The override file used during conversion
18
20
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:
22
24
23
25
```json
24
26
[
@@ -34,12 +36,12 @@ In this case, a `box.MaterialOverrides.json` file can be created as follows:
34
36
]
35
37
```
36
38
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.
38
40
39
41
### Color materials
40
42
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).
43
45
In material override files, a material can be declared to be a color material by setting `unlit` to `true`.
44
46
45
47
```json
@@ -57,9 +59,9 @@ In material override files, a material can be declared to be a color material by
57
59
58
60
### Ignore specific texture maps
59
61
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".
61
63
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:
63
65
64
66
```json
65
67
[
@@ -70,15 +72,15 @@ The principle is simple. Just add a property called `ignoreTextureMaps` and add
70
72
]
71
73
```
72
74
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).
74
76
75
77
### Applying the same overrides to multiple materials
76
78
77
79
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.
79
81
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`.
82
84
83
85
```json
84
86
[
@@ -95,17 +97,17 @@ The following example shows an override which applies to materials with names li
95
97
]
96
98
```
97
99
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.
100
102
Otherwise, the first regex entry in the file that matches the material name is chosen.
101
103
102
104
### Getting information about which entries applied
103
105
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).
105
107
106
108
## JSON schema
107
109
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.
Copy file name to clipboardExpand all lines: articles/remote-rendering/overview/features/z-fighting-mitigation.md
+14-12Lines changed: 14 additions & 12 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,24 +1,26 @@
1
1
---
2
2
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.
4
4
author: florianborn71
5
5
ms.author: flborn
6
6
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
9
11
---
10
12
11
13
# Z-fighting mitigation
12
14
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 discomfortz-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.
|Regular z-fighting ||
20
-
|Z-fighting mitigation enabled ||
21
-
|Checkerboard highlighting enabled||
21
+
|Regular z-fighting ||
22
+
|Z-fighting mitigation enabled ||
23
+
|Checkerboard highlighting enabled||
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
60
62
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.
62
64
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.
64
66
65
67
## Limitations
66
68
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.
0 commit comments