Mappage spatialSpatial mapping

Mappage spatial fournit une représentation détaillée des surfaces du monde réel dans l’environnement autour de la HoloLens, ce qui permet aux développeurs de créer une expérience de réalité mixte convaincante.Spatial mapping provides a detailed representation of real-world surfaces in the environment around the HoloLens, allowing developers to create a convincing mixed reality experience. En fusionnant le monde réel avec le monde virtuel, une application peut faire hologrammes semblent réel.By merging the real world with the virtual world, an application can make holograms seem real. Applications peuvent également plus naturellement aligner avec les attentes des utilisateurs en fournissant des interactions et des comportements réalistes familiers.Applications can also more naturally align with user expectations by providing familiar real-world behaviors and interactions.


Prise en charge des appareilsDevice support

FonctionnalitéFeature HoloLens (1er gen)HoloLens (1st gen)HoloLens 2HoloLens 2 Casques IMMERSIFSImmersive headsets
Mappage spatialSpatial mapping ✔️✔️ ✔️✔️

Vue d’ensemble conceptuelleConceptual overview

Les surfaces qui couvrent une salle de maillageMesh surfaces covering a room
Un exemple d’une maille de mappage spatial couvrant une salleAn example of a spatial mapping mesh covering a room

Les deux types d’objet principal utilisés pour le mappage spatial sont l’Observateur Spatial' aire et la « Surface spatiale ».The two primary object types used for spatial mapping are the 'Spatial Surface Observer' and the 'Spatial Surface'.

L’application fournit l’Observateur de Surface spatiale avec un ou plusieurs volumes englobants, pour définir les régions d’espace dans lequel l’application souhaite recevoir des données de mappage spatial.The application provides the Spatial Surface Observer with one or more bounding volumes, to define the regions of space in which the application wishes to receive spatial mapping data. Pour chacun de ces volumes, mappage spatial fournira à l’application avec un ensemble de Surfaces spatiale.For each of these volumes, spatial mapping will provide the application with a set of Spatial Surfaces.

Ces volumes peuvent être STATIONNAIRES (dans un emplacement fixe en ce qui concerne le monde réel), ou elles peuvent être attachées à la HoloLens (ils déplacent, mais ne tournent pas, avec la HoloLens lorsqu’elles circulent dans l’environnement).These volumes may be stationary (in a fixed location with respect to the real world) or they may be attached to the HoloLens (they move, but do not rotate, with the HoloLens as it moves through the environment). Chaque surface spatiale décrit surfaces réels dans un petit volume d’espace, représenté sous la forme d’un maillage de triangles attaché à un monde-verrouillé système de coordonnées spatial.Each spatial surface describes real-world surfaces in a small volume of space, represented as a triangle mesh attached to a world-locked spatial coordinate system.

Comme le HoloLens rassemble des nouvelles données sur l’environnement, et lorsque des modifications à l’environnement sont, les surfaces spatiales apparaîtra, disparaissent et le modifier.As the HoloLens gathers new data about the environment, and as changes to the environment occur, spatial surfaces will appear, disappear and change.

Scénarios d’utilisation courantsCommon usage scenarios

Illustrations de scénarios d’utilisation courants de mappage Spatial : Positionnement, Occlusion, physique et la Navigation

Sélection électivePlacement

Mappage spatial fournit aux applications la possibilité de présenter des formes naturelles et familière d’interaction à l’utilisateur ; ce qui pourrait être plus naturel que celle de placer votre téléphone vers le bas sur le support ?Spatial mapping provides applications with the opportunity to present natural and familiar forms of interaction to the user; what could be more natural than placing your phone down on the desk?

Limiter le placement de hologrammes (ou plus généralement, une sélection des emplacements spatiaux) de reposer sur des surfaces fournit un mappage naturel à partir de 3D (point dans l’espace) en 2D (point sur la surface).Constraining the placement of holograms (or more generally, any selection of spatial locations) to lie on surfaces provides a natural mapping from 3D (point in space) to 2D (point on surface). Cela réduit la quantité d’informations de l’utilisateur doit fournir à l’application et permet ainsi des interactions de l’utilisateur plus rapide, plus facile et plus précis.This reduces the amount of information the user needs to provide to the application and thus makes the user's interactions faster, easier and more precise. Cela est particulièrement vrai, car « distance » n’est pas quelque chose que nous avons l’habitude de communication physiquement à d’autres personnes ou aux ordinateurs.This is particularly true because 'distance away' is not something that we are used to physically communicating to other people or to computers. Lorsque nous indiquons avec notre doigt, nous spécifions une direction, mais pas une distance.When we point with our finger, we are specifying a direction but not a distance.

Un inconvénient important ici est que lorsqu’une application déduit la distance à partir de la direction (par exemple en effectuant un raycast le long de la direction du regard de l’utilisateur pour rechercher le plus proche surface spatiale), il doit produire des résultats dont l’utilisateur est en mesure de manière fiable.An important caveat here is that when an application infers distance from direction (for example by performing a raycast along the user's gaze direction to find the nearest spatial surface), this must yield results that the user is able to reliably predict. Sinon, l’utilisateur va perdre leur logique de contrôle, et cela peut rapidement devenir frustrante.Otherwise, the user will lose their sense of control and this can quickly become frustrating. Une méthode qui permet cela consiste à effectuer plusieurs raycasts au lieu d’un.One method that helps with this is to perform multiple raycasts instead of just one. Les résultats d’agrégation doivent être plus lisse et plus prévisible, moins susceptibles d’influencer dans les résultats temporaires « valeurs hors norme » (comme peut être dû à des rayons en passant par les failles minuscules ou en appuyant sur petits extraits de la géométrie de l’utilisateur ne connaît pas).The aggregate results should be smoother and more predictable, less susceptible to influence from transient 'outlier' results (as can be caused by rays passing through tiny holes or hitting small bits of geometry that the user is not aware of). Agrégation ou lissage peut également être effectué au fil du temps ; par exemple, vous pouvez limiter la vitesse maximale à laquelle un hologramme peut varier dans la distance à partir de l’utilisateur.Aggregation or smoothing can also be performed over time; for example you can limit the maximum speed at which a hologram can vary in distance from the user. Limitation simplement la valeur de distance minimale et maximale peut également aider, donc l’hologramme en cours de déplacement ne pas soudainement voler absent dans la distance ou un plantage en face de l’utilisateur.Simply limiting the minimum and maximum distance value can also help, so the hologram being moved does not suddenly fly away into the distance or come crashing back into the user's face.

Applications permet également la forme et la direction des surfaces guide hologramme placement.Applications can also use the shape and direction of surfaces to guide hologram placement. Une chaise HOLOGRAPHIQUE ne doit pas pénétrer à travers les murs et doit se trouvent vidage avec la valeur plancher même si elle est légèrement inégale.A holographic chair should not penetrate through walls and should sit flush with the floor even if it is slightly uneven. Ce type de fonctionnalité serait probablement reposent sur l’utilisation de collisions de physique plutôt que simplement raycasts, autres soucis similaires cependant seront applique.This kind of functionality would likely rely upon the use of physics collisions rather than just raycasts, however similar concerns will apply. Si l’hologramme placée a plusieurs polygones petits qui se borner out, comme les jambes sur une chaise, il peut être judicieux d’étendre la représentation physique de ces polygones à quelque chose de plus larges et plus lisse afin qu’ils soient plus en mesure de faire disparaître sur des surfaces spatiales sans avec SnagIt.If the hologram being placed has many small polygons that stick out, like the legs on a chair, it may make sense to expand the physics representation of those polygons to something wider and smoother so that they are more able to slide over spatial surfaces without snagging.

À son extrême, l’entrée d’utilisateur peut être simplifiée suite entièrement et surfaces spatiales peuvent être utilisées pour effectuer la sélection élective hologramme entièrement automatique.At its extreme, user input can be simplified away entirely and spatial surfaces can be used to perform entirely automatic hologram placement. Par exemple, l’application peut placer un commutateur de lumière holographique de quelque part sur le mur de l’utilisateur appuie sur.For example, the application could place a holographic light-switch somewhere on the wall for the user to press. La même restriction sur la prévisibilité applique doublement ici ; Si l’utilisateur s’attend à contrôler hologramme placement, mais l’application ne place pas de toujours hologrammes où qu’elles attendent (si le commutateur de lumière apparaît dans un endroit que l’utilisateur ne peut pas atteindre), ce sera une expérience frustrante.The same caveat about predictability applies doubly here; if the user expects control over hologram placement, but the application does not always place holograms where they expect (if the light-switch appears somewhere that the user cannot reach), then this will be a frustrating experience. Il peut en fait être pire effectuer la sélection élective automatique nécessitant une correction de l’utilisateur du temps, aux simplement oblige l’utilisateur à procèdent toujours à une sélection élective elles-mêmes. Étant donné que la sélection élective automatique réussie est attendu, correction manuelle semble un fardeau !It can actually be worse to perform automatic placement that requires user correction some of the time, than to just require the user to always perform placement themselves; because successful automatic placement is expected, manual correction feels like a burden!

Notez également que la capacité d’une application pour utiliser des surfaces spatiales pour sélection élective dépend fortement de l’application analyse expérience.Note also that the ability of an application to use spatial surfaces for placement depends heavily on the application's scanning experience. Si une surface n’a pas été analysée, il ne peut pas être utilisé pour la sélection élective.If a surface has not been scanned, then it cannot be used for placement. C’est à l’application pour être plus clair à l’utilisateur, afin qu’ils peuvent contribuer à analyser des nouvelles surfaces ou sélectionnez un nouvel emplacement.It is up to the application to make this clear to the user, so that they can either help scan new surfaces or select a new location.

Des commentaires visuels à l’utilisateur sont d’une importance primordiale pendant la sélection élective.Visual feedback to the user is of paramount importance during placement. L’utilisateur a besoin de savoir où l’hologramme est par rapport à la surface le plus proche avec mise à la terre des effets.The user needs to know where the hologram is in relation to the nearest surface with grounding effects. Ils doivent comprendre pourquoi le déplacement de leur hologramme est actuellement limité (par exemple, en raison d’un conflit avec un autre à proximité de la surface).They should understand why the movement of their hologram is being constrained (for example, due to collision with another nearby surface). Si elles ne peuvent pas placer un hologramme dans l’emplacement actuel, puis retour visuel doit indiquer clairement pourquoi ne pas.If they cannot place a hologram in the current location, then visual feedback should make it clear why not. Par exemple, si l’utilisateur tente de placer un canapé HOLOGRAPHIQUE bloqué moitié sur la prise murale, puis les parties du canapé qui sont trouvent derrière le mur doivent pulsate dans une couleur en colère.For example, if the user is trying to place a holographic couch stuck half-way into the wall, then the portions of the couch that are behind the wall should pulsate in an angry color. Ou, à l’inverse, si l’application ne peut pas trouver une surface spatiale dans un emplacement où l’utilisateur peut voir une surface du monde réel, puis l’application doit indiquer cela clairement.Or conversely, if the application cannot find a spatial surface in a location where the user can see a real-world surface, then the application should make this clear. L’absence d’évident d’un effet de la masse dans cette zone peut atteindre ce but.The obvious absence of a grounding effect in this area may achieve this purpose.

OcclusionOcclusion

Une des principales utilisations des surfaces de mappage spatial doit simplement occlude hologrammes.One of the primary uses of spatial mapping surfaces is simply to occlude holograms. Ce comportement simple a un impact important sur le réalisme perçu de hologrammes, vous aider à créer une idée viscérale qui vraiment occupent le même espace physique que l’utilisateur.This simple behavior has a huge impact on the perceived realism of holograms, helping to create a visceral sense that really inhabit the same physical space as the user.

OCCLUSION fournit également des informations à l’utilisateur. Quand un hologramme semble être bloqués par une surface du monde réel, il offre des indications visuelles supplémentaires quant à l’emplacement spatial de ce hologramme dans le monde.Occlusion also provides information to the user; when a hologram appears to be occluded by a real-world surface, this provides additional visual feedback as to the spatial location of that hologram in the world. À l’inverse, occlusion peut également utilement masquer plus d’informations à partir de l’utilisateur ; hologrammes OCCLUSION derrière les murs peut réduire l’encombrement visuel d’une manière intuitive.Conversely, occlusion can also usefully hide information from the user; occluding holograms behind walls can reduce visual clutter in an intuitive way. Pour masquer ou afficher un hologramme, l’utilisateur doit simplement déplacer leur tête.To hide or reveal a hologram, the user merely has to move their head.

OCCLUSION peut également servir d’amorcer des attentes en relation avec une interface utilisateur naturelle en fonction des interactions physiques familiers ; Si un hologramme est bloqué par une surface, c’est parce que cette surface est solide, par conséquent, l’utilisateur doit attendre que l’hologramme sera entrent en collision avec celui de surface et pas simplement passer au travers.Occlusion can also be used to prime expectations for a natural user interface based upon familiar physical interactions; if a hologram is occluded by a surface it is because that surface is solid, so the user should expect that the hologram will collide with that surface and not simply pass through it.

Parfois, occlusion d’hologrammes n’est pas souhaitable.Sometimes, occlusion of holograms is undesirable. Si un utilisateur doit être en mesure d’interagir avec un hologramme, ils doivent être en mesure de voir, même s’il se trouve derrière une surface du monde réel.If a user needs to be able to interact with a hologram, then they need to be able to see it - even if it is behind a real-world surface. Dans ce cas, il est généralement judicieux rendu tel un hologramme différemment lorsqu’il est bloqué (par exemple, en réduisant sa luminosité).In such cases, it usually makes sense to render such a hologram differently when it is occluded (for example, by reducing its brightness). De cette façon, l’utilisateur sera en mesure de localiser visuellement l’hologramme, mais ils seront toujours conscients qu’il se trouve derrière de quelque chose.This way, the user will be able to visually locate the hologram, but they will still be aware that it is behind something.

PhysiquePhysics

L’utilisation de simulation physique est une autre manière que le mappage spatial peut être utilisé pour renforcer la présence de hologrammes dans un espace physique de l’utilisateur.The use of physics simulation is another way in which spatial mapping can be used to reinforce the presence of holograms in the user's physical space. Lorsque mon balle en caoutchouc HOLOGRAPHIQUE désactiver mon bureau se déroule dans la pratique, rebondit sur le sol et disparaît sous le canapé, il peut être difficile pour moi de croire qu’il n’est pas vraiment ce.When my holographic rubber ball rolls realistically off my desk, bounces across the floor and disappears under the couch, it might be hard for me to believe that it's not really there.

Simulation physique offre également la possibilité pour une application d’utiliser des interactions de physique naturelles et familière.Physics simulation also provides the opportunity for an application to use natural and familiar physics-based interactions. Déplacement de HOLOGRAPHIQUE meuble autour de l’étage seront probablement plus facile pour l’utilisateur si mobilier réagit comme si elle ont été décalée sur le sol avec l’inertie appropriée et des frictions.Moving a piece of holographic furniture around on the floor will likely be easier for the user if the furniture responds as if it were sliding across the floor with the appropriate inertia and friction.

Pour générer des comportements physiques réalistes, vous aurez probablement besoin d’effectuer certaines mesh traitement telles que de combler les lacunes, suppression flottante délirante et lissage approximatif des surfaces.In order to generate realistic physical behaviors, you will likely need to perform some mesh processing such as filling holes, removing floating hallucinations and smoothing rough surfaces.

Vous devez également prendre en compte comment votre application analyse expérience influence son simulation physique.You will also need to consider how your application's scanning experience influences its physics simulation. Tout d’abord, manquant surfaces n’entre en conflit avec n’importe quoi : que se passe-t-il lorsque la balle en caoutchouc génère le couloir et la fin du monde connu ?Firstly, missing surfaces won't collide with anything; what happens when the rubber ball rolls off down the corridor and off the end of the known world? Deuxièmement, vous devez décider si vous continuez à répondre aux modifications de l’environnement au fil du temps.Secondly, you need to decide whether you will continue to respond to changes in the environment over time. Dans certains cas, vous souhaitez répondre aussi rapidement que possible ; par exemple si l’utilisateur est à l’aide de portes et meubles comme barricades déplaçable dans défense contre un tempest de flèches Roman entrants.In some cases, you will want to respond as quickly as possible; say if the user is using doors and furniture as movable barricades in defense against a tempest of incoming Roman arrows. Dans d’autres cas cependant, vous souhaiterez ignorer les nouvelles mises à jour ; pilotent votre voiture de sport HOLOGRAPHIQUE autour de l’ovale sur votre plancher soudainement ne peut-être donc amusant si votre chien décide de se trouvent au milieu de la piste.In other cases though, you may want to ignore new updates; driving your holographic sports car around the racetrack on your floor may suddenly not be so fun if your dog decides to sit in the middle of the track.

Applications peuvent utiliser les données de mappage spatial pour accorder HOLOGRAPHIQUE caractères (ou les agents) permet de naviguer le monde réel dans la même façon une personne réelle.Applications can use spatial mapping data to grant holographic characters (or agents) the ability to navigate the real world in the same way a real person would. Cela peut aider à renforcer la présence de caractères HOLOGRAPHIQUE en les limitant au même jeu de comportements de naturels et familiers que celles de l’utilisateur et de ses amis.This can help reinforce the presence of holographic characters by restricting them to the same set of natural, familiar behaviors as those of the user and their friends.

Fonctionnalités de navigation peut être utiles aux utilisateurs également.Navigation capabilities could be useful to users as well. Une fois qu’une carte de navigation a été créée dans une zone donnée, il peut être partagé pour fournir des directions HOLOGRAPHIQUE pour les nouveaux utilisateurs êtes pas familiarisés avec cet emplacement.Once a navigation map has been built in a given area, it could be shared to provide holographic directions for new users unfamiliar with that location. Cette carte peut être conçue pour aider à maintenir le passage » « échange de données, ou pour éviter des accidents dans des emplacements dangereux tels que les sites de construction.This map could be designed to help keep pedestrian 'traffic' flowing smoothly, or to avoid accidents in dangerous locations like construction sites.

Principaux défis techniques liés à l’implémentation des fonctionnalités de navigation sera la détection fiable des surfaces opérationnel (l’homme allure tables !) et sans perte de données adaptation aux modifications de l’environnement (l’homme ne guide les portes fermés !).The key technical challenges involved in implementing navigation functionality will be reliable detection of walkable surfaces (humans don't walk on tables!) and graceful adaptation to changes in the environment (humans don't walk through closed doors!). La maille peut nécessiter certaines traitement avant qu’il soit utilisable pour la planification de chemin d’accès et la navigation par un caractère virtuel.The mesh may require some processing before it is usable for path-planning and navigation by a virtual character. Lissage du maillage et de suppression délirante peuvent aider à éviter les caractères devient bloqués.Smoothing the mesh and removing hallucinations may help avoid characters becoming stuck. Vous pouvez également simplifier considérablement la maille afin d’accélérer son chemin d’accès-planification et les calculs de navigation.You may also wish to drastically simplify the mesh in order to speed up your character's path-planning and navigation calculations. Ces défis ont reçu beaucoup d’attention dans le développement de la technologie de jeu vidéo, et constitue une mine de littérature de recherche disponibles sur ces sujets.These challenges have received a great deal of attention in the development of videogame technology, and there is a wealth of available research literature on these topics.

Notez que la fonctionnalité intégrée de NavMesh dans Unity ne peut pas être utilisée avec des surfaces de mappage spatial.Note that the built-in NavMesh functionality in Unity cannot be used with spatial mapping surfaces. Il s’agit, car les surfaces de mappage spatial ne sont pas connues avant l’application démarre, tandis que les fichiers de données NavMesh doivent être générés à partir de ressources source avance.This is because spatial mapping surfaces are not known until the application starts, whereas NavMesh data files need to be generated from source assets ahead of time. Notez également que, le système de mappage spatial ne fournira pas plus d’informations sur les surfaces de très loin à partir de l’emplacement actuel de l’utilisateur.Also note that, the spatial mapping system will not provide information about surfaces very far away from the user's current location. Par conséquent, l’application doit « n’oubliez pas' surfaces lui-même s’il doit générer une carte d’une zone de très grande taille.So the application must 'remember' surfaces itself if it is to build a map of a very large area.

visualisationVisualization

La plupart du temps, il est approprié pour les surfaces spatiales soit invisible ; Pour réduire l’encombrement visuel et de laisser le réel world parler d’elles-mêmes.Most of the time it is appropriate for spatial surfaces to be invisible; to minimize visual clutter and let the real world speak for itself. Toutefois, il est parfois utile de visualiser les surfaces de mappage spatial directement, en dépit du fait que leurs équivalents du monde réel sont déjà visibles.However, sometimes it is useful to visualize spatial mapping surfaces directly, despite the fact that their real-world counterparts are already visible.

Par exemple, lorsque l’utilisateur tente de placer un hologramme sur une surface (en plaçant un fichier CAB HOLOGRAPHIQUE sur un mur, par exemple) il peut être utile de « d’arrière-plan » l’hologramme en effectuant un cast d’un cliché instantané sur la surface.For example, when the user is trying to place a hologram onto a surface (placing a holographic cabinet on the wall, say) it can be useful to 'ground' the hologram by casting a shadow onto the surface. Cela donne à l’utilisateur beaucoup plus claire de la proximité physique exacte entre la hologramme et la surface.This gives the user a much clearer sense of the exact physical proximity between the hologram and the surface. Il s’agit également un exemple de la plus pratique visuellement « aperçu » une modification avant que l’utilisateur valide lui.This is also an example of the more general practice of visually 'previewing' a change before the user commits to it.

En visualisant les surfaces, l’application peut partager avec l’utilisateur sa compréhension de l’environnement.By visualizing surfaces, the application can share with the user its understanding of the environment. Par exemple, un jeu de plateau HOLOGRAPHIQUE peut visualiser les surfaces horizontales qu’il a identifié comme « tables », pour que l’utilisateur sache où ils vont interagir.For example, a holographic board game could visualize the horizontal surfaces that it has identified as 'tables', so the user knows where they should go to interact.

Visualisation des surfaces peut être un moyen utile pour afficher l’utilisateur à proximité des espaces qui sont masquées.Visualizing surfaces can be a useful way to show the user nearby spaces that are hidden from view. Cela peut fournir un moyen simple de donner à l’utilisateur d’accéder à leur cuisine (et tous ses hologrammes de relation contenant-contenus) à partir de leur salon.This could provide a simple way to give the user access to their kitchen (and all of its contained holograms) from their living room.

Les panneaux d’aire de conception fournies par le mappage spatial ne peuvent pas être particulièrement « nettoyage ».The surface meshes provided by spatial mapping may not be particularly 'clean'. Par conséquent, il est important de les visualiser de façon appropriée.Thus it is important to visualize them appropriately. Calculs d’éclairage traditionnel peuvent Surligner les erreurs dans les normales de surface d’une manière visuellement gênant, tandis que les textures de « nettoyage » projetés sur la surface peuvent vous aider à lui donner une apparence plus propre.Traditional lighting calculations may highlight errors in surface normals in a visually distracting manner, whilst 'clean' textures projected onto the surface may help to give it a tidier appearance. Il est également possible d’effectuer mesh traitement pour améliorer les propriétés de la maille, avant que les surfaces sont rendus.It is also possible to perform mesh processing to improve mesh properties, before the surfaces are rendered.

À l’aide de l’aire de conception observateurUsing The Surface Observer

Le point de départ pour le mappage spatial est l’aire de conception observateur.The starting point for spatial mapping is the surface observer. Flux de programme est comme suit :Program flow is as follows:

  • Créer un objet de l’aire de conception observateurCreate a surface observer object
    • Fournir un ou plusieurs volumes spatiales, pour définir les régions d’intérêt dans lequel l’application souhaite recevoir des données de mappage spatial.Provide one or more spatial volumes, to define the regions of interest in which the application wishes to receive spatial mapping data. Un volume spatial est simplement une forme définissant une zone d’espace, par exemple une sphère ou une zone.A spatial volume is simply a shape defining a region of space, such as a sphere or a box.
    • Utiliser un volume spatial avec un système de coordonnées spatial world-verrouillé pour identifier une région fixe du monde physique.Use a spatial volume with a world-locked spatial coordinate system to identify a fixed region of the physical world.
    • Utilisez un volume spatial, mis à jour avec chaque image avec un verrouillage de corps spatial système de coordonnées, pour identifier une région d’espace qui déplace (mais ne pivote pas) avec l’utilisateur.Use a spatial volume, updated each frame with a body-locked spatial coordinate system, to identify a region of space that moves (but does not rotate) with the user.
    • Ces volumes spatiales peuvent être modifiées ultérieurement à tout moment, en tant que l’état de l’application ou l’utilisateur change.These spatial volumes may be changed later at any time, as the status of the application or the user changes.
  • Utiliser l’interrogation ou notification à récupérer des informations sur les surfaces spatialesUse polling or notification to retrieve information about spatial surfaces
    • Vous pouvez 'interroger' l’aire de conception observateur pour l’état de surface spatiale à tout moment.You may 'poll' the surface observer for spatial surface status at any time. Vous pouvez également vous pouvez enregistrer pour ' surfaces' événement modifié l’aire de conception observateur, notifie l’application lorsque les surfaces spatiales ont changé.Alternatively, you may register for the surface observer's 'surfaces changed' event, which will notify the application when spatial surfaces have changed.
    • Pour un volume dynamique spatiaux, tels que le frustum vue, ou un volume verrouillé de corps, les applications devront interroge les modifications de chaque trame en affectant à la région d’intérêt et obtention de l’ensemble actuel des surfaces spatiales.For a dynamic spatial volume, such as the view frustum, or a body-locked volume, applications will need to poll for changes each frame by setting the region of interest and then obtaining the current set of spatial surfaces.
    • Pour un volume statique, par exemple un cube verrouillé de monde couvrant une salle unique, les applications peuvent enregistrer pour l’événement « surfaces modifié » être averti lorsque des surfaces spatiales à l’intérieur de ce volume a peut-être changé.For a static volume, such as a world-locked cube covering a single room, applications may register for the 'surfaces changed' event to be notified when spatial surfaces inside that volume may have changed.
  • Modifications des surfaces de processusProcess surfaces changes
    • Itérer au sein de l’ensemble fourni des surfaces spatiales.Iterate the provided set of spatial surfaces.
    • Classer les surfaces spatiales comme ajouté, modifié ou supprimé.Classify spatial surfaces as added, changed or removed.
    • Pour chaque surface spatiale ajouté ou modifié, le cas échéant, soumettre une demande asynchrone pour recevoir des mises à jour de maillage représentant l’état actuel de l’aire au niveau de détail souhaité.For each added or changed spatial surface, if appropriate submit an asynchronous request to receive updated mesh representing the surface's current state at the desired level of detail.
  • Traiter la demande asynchrone maille (plus de détails dans les sections suivantes).Process the asynchronous mesh request (more details in following sections).

La mise en cache de maillageMesh Caching

Surfaces spatiales sont représentées par des maillages de triangle dense.Spatial surfaces are represented by dense triangle meshes. Stockage, de rendu et le traitement de ces panneaux peuvent consommer des ressources de calcul et de stockage importantes.Storing, rendering and processing these meshes can consume significant computational and storage resources. Par conséquent, chaque application doit adopter une maille de la mise en cache de schéma appropriée à ses besoins, afin de réduire les ressources utilisées pour le stockage et traitement de la maille.As such, each application should adopt a mesh caching scheme appropriate to its needs, in order to minimize the resources used for mesh processing and storage. Ce schéma doit déterminer des maillages à conserver et à ignorer, ainsi que quand mettre à jour de la maille de chaque surface spatiale.This scheme should determine which meshes to retain and which to discard, as well as when to update the mesh for each spatial surface.

La plupart des considérations abordées ici informe directement comment votre application doit être proche de la mise en cache d’une maille.Many of the considerations discussed there will directly inform how your application should approach mesh caching. Vous devez envisager comment l’utilisateur parcourt l’environnement, les surfaces sont nécessaires, lorsque les différentes surfaces seront arrêtées et lorsque les modifications dans l’environnement doivent être capturées.You should consider how the user moves through the environment, which surfaces are needed, when different surfaces will be observed and when changes in the environment should be captured.

Lors de l’interprétation de l’événement 'surfaces modifié' fourni par l’aire de conception observateur, la maille base logique de la mise en cache est la suivante :When interpreting the 'surfaces changed' event provided by the surface observer, the basic mesh caching logic is as follows:

  • Si l’application voit un ID de surface spatial qui n’a pas vu avant, il doit le traiter comme une surface spatiale.If the application sees a spatial surface ID that it has not seen before, it should treat this as a new spatial surface.
  • Si l’application voit une surface spatiale avec un ID connu, mais avec une nouvelle heure de mise à jour, il doit traiter ceci comme une surface spatiale mis à jour.If the application sees a spatial surface with a known ID but with a new update time, it should treat this as an updated spatial surface.
  • Si l’application ne détecte plus une surface spatiale avec un ID connu, il doit le traiter comme une surface spatiale supprimée.If the application no longer sees a spatial surface with a known ID, it should treat this as a removed spatial surface.

C’est à chaque application à puis choisissez les options suivantes :It is up to each application to then make the following choices:

  • Pour les nouvelles surfaces spatiales, maille doit être demandée ?For new spatial surfaces, should mesh be requested?
    • En règle générale maille doit être demandée immédiatement pour les nouvelles surfaces spatiales, qui peuvent fournir de nouvelles informations utiles à l’utilisateur.Generally mesh should be requested immediately for new spatial surfaces, which may provide useful new information to the user.
    • Toutefois, les nouvelles surfaces spatiales près et devant l’utilisateur doivent être prioritaires et leur maille doit être demandée tout d’abord.However, new spatial surfaces near and in front of the user should be given priority and their mesh should be requested first.
    • Si le nouveau maillage n’est pas nécessaire, si par exemple l’application a définitivement ou temporairement « figée » son modèle de l’environnement, puis il ne doit pas être demandée.If the new mesh is not needed, if for example the application has permanently or temporarily 'frozen' its model of the environment, then it should not be requested.
  • Pour les surfaces spatiales mis à jour, maille doit être demandée ?For updated spatial surfaces, should mesh be requested?
    • Mise à jour de surfaces spatiales près et devant l’utilisateur doivent être prioritaires et leur maille doit être demandée tout d’abord.Updated spatial surfaces near and in front of the user should be given priority and their mesh should be requested first.
    • Il peut également être appropriée donner une priorité plus élevée aux surfaces de nouveau qu’à la mise à jour de surfaces, en particulier au cours de l’expérience d’analyse.It may also be appropriate to give higher priority to new surfaces than to updated surfaces, especially during the scanning experience.
    • Pour limiter les coûts de traitement, les applications peuvent souhaiter limiter la fréquence à laquelle ils traitent les mises à jour aux surfaces spatiales.To limit processing costs, applications may wish to throttle the rate at which they process updates to spatial surfaces.
    • Il peut être possible de déduire que les modifications apportées à une surface spatiale sont mineures, par exemple si les limites de la surface sont petits, auquel cas la mise à jour ne peut pas être suffisamment important pour les processus.It may be possible to infer that changes to a spatial surface are minor, for example if the bounds of the surface are small, in which case the update may not be important enough to process.
    • Mises à jour aux surfaces spatiales en dehors de la zone d’intérêt de l’utilisateur en cours peuvent être ignorés entièrement, bien que dans ce cas, il peut être plus efficace pour modifier les volumes englobants spatiales en cours d’utilisation par l’aire de conception observateur.Updates to spatial surfaces outside the current region of interest of the user may be ignored entirely, though in this case it may be more efficient to modify the spatial bounding volumes in use by the surface observer.
  • Pour les surfaces spatiales supprimés, maille doit être supprimé ?For removed spatial surfaces, should mesh be discarded?
    • En règle générale maille doit être ignoré en immédiatement pour les surfaces spatiales supprimés, afin que les occlusion hologramme reste correcte.Generally mesh should be discarded immediately for removed spatial surfaces, so that hologram occlusion remains correct.
    • Toutefois, si l’application a des raisons de croire qu’une surface spatiale s’affiche à nouveau peu de temps (peut-être en fonction de la conception de l’expérience utilisateur), il peut être plus efficace pour être conservé que to ignorer son maillage et le recréer ultérieurement.However, if the application has reason to believe that a spatial surface will reappear shortly (perhaps based upon the design of the user experience), then it may be more efficient to retain it than to discard its mesh and recreate it again later.
    • Si un modèle à grande échelle de l’environnement utilisateur est créée à l’application puis elle pas souhaitera peut-être ignorer les mailles du tout.If the application is building a large-scale model of the user's environment then it may not wish to discard any meshes at all. Il sera toujours besoin de limiter l’utilisation des ressources, éventuellement en mailles de mise en attente sur le disque comme surfaces spatiales disparaissent.It will still need to limit resource usage though, possibly by spooling meshes to disk as spatial surfaces disappear.
    • Notez que certains événements relativement rares lors de la génération de surface spatiale peuvent entraîner des surfaces spatiales à remplacer par les nouvelles surfaces spatiales dans un emplacement similaire, mais avec des ID différents.Note that some relatively rare events during spatial surface generation can cause spatial surfaces to be replaced by new spatial surfaces in a similar location but with different IDs. Par conséquent, les applications que vous choisissez de ne pas ignorer une surface supprimée votre attention pas à la fin de plusieurs hautement overlapped spatial surface maillages couvrant le même emplacement.Consequently, applications that choose not to discard a removed surface should take care not to end up with multiple highly-overlapped spatial surface meshes covering the same location.
  • Maillage doit être ignoré pour d’autres surfaces spatiales ?Should mesh be discarded for any other spatial surfaces?
    • Même lorsqu’il existe une surface spatiale, si elle n’est plus utile de l’expérience utilisateur puis, il doit être ignoré.Even while a spatial surface exists, if it is no longer useful to the user's experience then it should be discarded. Par exemple, si l’application 'remplace' la salle de l’autre côté d’une porte ouverte par un autre espace virtuel puis les surfaces spatiales dans cet espace n’est plus important.For example, if the application 'replaces' the room on the other side of a doorway with an alternate virtual space then the spatial surfaces in that room no longer matter.

Voici une stratégie exemple maille mise en cache, à l’aide des hystérésis spatiales et temporelles :Here is an example mesh caching strategy, using spatial and temporal hysteresis:

  • Considérez une application qui souhaite utiliser un volume spatial en forme frustum d’intérêt qui suit le regard de l’utilisateur car elles observer cet onglet et Parcourir.Consider an application that wishes to use a frustum-shaped spatial volume of interest that follows the user's gaze as they look around and walk around.
  • Une surface spatiale peut-être disparaître temporairement de ce volume simplement parce que l’utilisateur recherche la surface ou étapes supplémentaires depuis celle-ci... à l’examen ou se rapproche de nouveau un peu plus tard.A spatial surface may disappear temporarily from this volume simply because the user looks away from the surface or steps further away from it... only to look back or moves closer again a moment later. Dans ce cas, en supprimant et en recréer la maille pour cette aire représente beaucoup de traitement redondant.In this case, discarding and re-creating the mesh for this surface represents a lot of redundant processing.
  • Pour réduire le nombre de modifications traitées, l’application utilise deux observateurs surfaces spatiales, un contenu dans l’autre.To reduce the number of changes processed, the application uses two spatial surface observers, one contained within the other. Le plus grand volume est sphérique et suit l’utilisateur tardivement ; Il déplace uniquement lorsque cela est nécessaire pour vous assurer que son centre se trouve dans 2.0 mètres de l’utilisateur.The larger volume is spherical and follows the user 'lazily'; it only moves when necessary to ensure that its centre is within 2.0 metres of the user.
  • Les mailles surfaces spatiales nouveaux et mis à jour sont toujours traitées à partir de l’Observateur surface interne le plus petit, mais les mailles sont mis en cache jusqu'à ce qu’elles disparaissent de l’Observateur de surface externe plus grande.New and updated spatial surface meshes are always processed from the smaller inner surface observer, but meshes are cached until they disappear from the larger outer surface observer. Cela permet à l’application éviter le traitement de nombreuses modifications redondantes due au déplacement des utilisateurs locaux.This allows the application to avoid processing many redundant changes due to local user movement.
  • Dans la mesure où une surface spatiale peut également disparaître temporairement en raison de suivi de la perte, l’application diffère également rejet surfaces spatiales supprimés au cours de suivi de la perte.Since a spatial surface may also disappear temporarily due to tracking loss, the application also defers discarding removed spatial surfaces during tracking loss.
  • En général, une application doit évaluer le compromis entre la mise à jour réduit le traitement et l’utilisation accrue de la mémoire afin de déterminer sa stratégie de mise en cache idéale.In general, an application should evaluate the tradeoff between reduced update processing and increased memory usage to determine its ideal caching strategy.

RenduRendering

Il existe trois méthodes principales dans lequel les mailles de mappage spatial ont tendance à être utilisée pour le rendu :There are three primary ways in which spatial mapping meshes tend to be used for rendering:

  • Pour la visualisation de l’aire de conceptionFor surface visualization
    • Il est souvent utile de visualiser les surfaces spatiales directement.It is often useful to visualize spatial surfaces directly. Par exemple, 'shadows de conversion' à partir d’objets sur les surfaces spatiales peuvent fournir visuelles utiles à l’utilisateur pendant qu’ils sont mise hologrammes sur les surfaces.For example, casting 'shadows' from objects onto spatial surfaces can provide helpful visual feedback to the user while they are placing holograms on surfaces.
    • Une chose à l’esprit est que mailles spatiales sont différents pour le genre de mailles un artiste 3D peut créer.One thing to bear in mind is that spatial meshes are different to the kind of meshes that a 3D artist might create. La topologie de triangle ne sera pas aussi « propre » que topologie créés par l’homme et la maille subira des diverses erreurs.The triangle topology will not be as 'clean' as human-created topology, and the mesh will suffer from various errors.
    • Pour créer une esthétique visual agréable, vous pouvez souhaiter donc effectuer certaines mesh traitement, par exemple pour les trous de remplissage ou de normales de surface lisses.In order to create a pleasing visual aesthetic, you may thus want to perform some mesh processing, for example to fill holes or smooth surface normals. Vous pouvez également utiliser un nuanceur à textures conçues par l’artiste de projet sur votre maillage au lieu de la visualisation directement la topologie de maille et normales.You may also wish to use a shader to project artist-designed textures onto your mesh instead of directly visualizing mesh topology and normals.
  • D’occlusion hologrammes derrière les surfaces du monde réelFor occluding holograms behind real-world surfaces
    • Surfaces spatiaux peuvent être rendus dans un test de profondeur qui affecte uniquement le tampon de profondeur et n’affecte pas les cibles de rendu de couleur.Spatial surfaces can be rendered in a depth-only pass which only affects the depth buffer and does not affect color render targets.
    • Cela prépare la mémoire tampon de profondeur pour occlude restitué par la suite les hologrammes derrière les surfaces spatiales.This primes the depth buffer to occlude subsequently-rendered holograms behind spatial surfaces. Occlusion précise de hologrammes améliore le sens que hologrammes existent réellement dans l’espace physique de l’utilisateur.Accurate occlusion of holograms enhances the sense that holograms really exist within the user's physical space.
    • Pour activer le rendu de profondeur uniquement, mettre à jour votre état de fusion pour définir le RenderTargetWriteMask à zéro pour la couleur de toutes les cibles de rendu.To enable depth-only rendering, update your blend state to set the RenderTargetWriteMask to zero for all color render targets.
  • Pour modifier l’apparence de hologrammes bloqués par les surfaces du monde réelFor modifying the appearance of holograms occluded by real-world surfaces
    • Géométrie normalement rendu est masqué quand il est bloqué.Normally rendered geometry is hidden when it is occluded. Pour cela en définissant la fonction de profondeur dans votre état du stencil de profondeur à « inférieur ou égal », ce qui entraîne la géométrie à être visible que s’il est plus en détail à l’appareil photo que tous les rendus précédemment géométrie.This is achieved by setting the depth function in your depth-stencil state to "less than or equal", which causes geometry to be visible only where it is closer to the camera than all previously rendered geometry.
    • Toutefois, il peut être utile de conserver certains géométrie visible même quand il est bloqué et modifier son apparence lorsque bloqués comme un moyen de fournir des commentaires visuels à l’utilisateur.However, it may be useful to keep certain geometry visible even when it is occluded, and to modify its appearance when occluded as a way of providing visual feedback to the user. Par exemple, cela permet à l’application afficher l’utilisateur de l’emplacement d’un objet tout en rendant plus clair que se trouve derrière une surface du monde réel.For example, this allows the application to show the user the location of an object whilst making it clear that is behind a real-world surface.
    • Pour ce faire, afficher la géométrie une deuxième fois avec un nuanceur de différentes qui crée l’apparence souhaitée « bouché ».To achieve this, render the geometry a second time with a different shader that creates the desired 'occluded' appearance. Avant le rendu de la géométrie pour la deuxième fois, apporter deux modifications à votre état du stencil de profondeur.Before rendering the geometry for the second time, make two changes to your depth-stencil state. Tout d’abord, la valeur est la fonction de profondeur « supérieur ou égal à » afin que la géométrie sera visible uniquement lorsqu’il est plus à partir de l’appareil photo à toute la géométrie précédemment rendue.First, set the depth function to "greater than or equal" so that the geometry will be visible only where it is further from the camera than all previously rendered geometry. Ensuite, définissez le DepthWriteMask à zéro, afin que la mémoire tampon de profondeur ne sera pas modifié (le tampon de profondeur doit continuer représenter la profondeur de la géométrie le plus proche à l’appareil photo).Second, set the DepthWriteMask to zero, so that the depth buffer will not be modified (the depth buffer should continue to represent the depth of the geometry closest to the camera).

Performances est une préoccupation importante lors du rendu des mailles de mappage spatial.Performance is an important concern when rendering spatial mapping meshes. Voici quelques techniques de performances de rendu spécifiques au rendu des mailles de mappage spatial :Here are some rendering performance techniques specific to rendering spatial mapping meshes:

  • Ajuster la densité de triangleAdjust triangle density
    • Lors de la surface spatiale demandeur maille à partir de votre aire de conception observateur, demander la densité la plus basse des maillages de triangle est suffisante pour vos besoins.When requesting spatial surface meshes from your surface observer, request the lowest density of triangle meshes that will suffice for your needs.
    • Il peut être judicieux pour faire varier la densité de triangle sur une base de la surface en surface, en fonction de la distance de la surface de l’utilisateur et sa pertinence dans l’expérience utilisateur.It may make sense to vary triangle density on a surface by surface basis, depending on the surface's distance from the user, and its relevance to the user experience.
    • Nombres de triangle réduire permet de réduire l’utilisation de mémoire et les coûts de traitement de vertex sur le GPU, bien que cela n’affectera pas les coûts de traitement de pixels.Reducing triangle counts will reduce memory usage and vertex processing costs on the GPU, though it will not affect pixel processing costs.
  • Effectue l’élimination de frustumPerform frustum culling
    • Élimination de frustum ignore les objets de dessin qui ne sont pas visibles, car elles sont en dehors de la frustum affichage actuel.Frustum culling skips drawing objects that cannot be seen because they are outside the current display frustum. Cela réduit les coûts de traitement CPU et GPU.This reduces both CPU and GPU processing costs.
    • Dans la mesure où l’élimination est effectuée sur une base par maille et surfaces spatiaux peuvent être volumineux, avec rupture chaque maillage de surface spatiale en segments plus petits peut entraîner l’élimination plus efficace (où moins triangles hors écran sont rendus).Since culling is performed on a per-mesh basis and spatial surfaces can be large, breaking each spatial surface mesh into smaller chunks may result in more efficient culling (in that fewer offscreen triangles are rendered). Il existe un compromis, toutefois ; les mailles plus que vous avez, les appels de dessin plus que vous devez vous, ce qui peuvent augmenter les coûts de processeur.There is a tradeoff, however; the more meshes you have, the more draw calls you must make, which can increase CPU costs. Dans un cas extrême, le frustum élimination de calculs eux-mêmes peut même avoir un coût UC mesurable.In an extreme case, the frustum culling calculations themselves could even have a measurable CPU cost.
  • Ajuster l’ordre de renduAdjust rendering order
    • Surfaces spatiales ont tendance à être volumineuses, car ils représentent un environnement de l’utilisateur qui les entoure.Spatial surfaces tend to be large, because they represent the user's entire environment surrounding them. Les coûts sur le GPU de traitement de pixels peut être élevée, en particulier dans les cas où il existe plusieurs couches de géométrie visible (y compris les surfaces spatiales et autres hologrammes).Pixel processing costs on the GPU can thus be high, especially in cases where there is more than one layer of visible geometry (including both spatial surfaces and other holograms). Dans ce cas, la couche plus proche de l’utilisateur sera être OCCLUSION des couches plus tout de suite, afin de n’importe quel GPU temps ces couches plus éloignées de rendu est gaspillée.In this case, the layer nearest to the user will be occluding any layers further away, so any GPU time spent rendering those more distant layers is wasted.
    • Pour réduire ce travail redondant sur le GPU, il est utile de surfaces opaques s’affichent dans l’ordre de l’avant vers l’arrière (ceux qui sont plus en détail tout d’abord, plus éloignées de celles de la dernière).To reduce this redundant work on the GPU, it helps to render opaque surfaces in front-to-back order (closer ones first, more distant ones last). Par « opaque » nous entendons les surfaces pour lequel le DepthWriteMask est défini sur 1 dans votre état du stencil de profondeur.By 'opaque' we mean surfaces for which the DepthWriteMask is set to one in your depth-stencil state. Lorsque les surfaces le plus proche sont restitués, ils seront amorcer le tampon de profondeur afin que les surfaces plus longues sont efficacement ignorés par le processeur de pixels sur le GPU.When the nearest surfaces are rendered, they will prime the depth buffer so that more distant surfaces are efficiently skipped by the pixel processor on the GPU.

Traitement de maillageMesh Processing

Une application peut souhaiter effectuer diverses opérations sur des mailles surfaces spatiales en fonction de ses besoins.An application may want to perform various operations on spatial surface meshes to suit its needs. Les données d’index et de sommet fournies avec chaque maillage de surface spatiale utilisent la même disposition familier comme le mémoires tampons de vertex et d’index qui sont utilisés pour le rendu des maillages de triangle dans le rendu moderne toutes les API.The index and vertex data provided with each spatial surface mesh uses the same familiar layout as the vertex and index buffers that are used for rendering triangle meshes in all modern rendering APIs. Toutefois, les faits clés à connaître est que les triangles mappage spatial ont un front-dans le sens horaire ordre d’enroulement.However, one key fact to be aware of is that spatial mapping triangles have a front-clockwise winding order. Chaque triangle est représenté par trois index de vertex dans la mémoire tampon d’index de la maille et ces index identifiera les vertex du triangle dans un dans le sens horaire ordre, le triangle est affiché dans le front côté.Each triangle is represented by three vertex indices in the mesh's index buffer and these indices will identify the triangle's vertices in a clockwise order, when the triangle is viewed from the front side. Début côté (ou de l’extérieur) des maillages de surface spatiales correspond évidemment à la face avant (visible) des surfaces du monde réel.The front side (or outside) of spatial surface meshes corresponds as you would expect to the front (visible) side of real world surfaces.

Les applications doivent réaliser uniquement simplification de maille si la densité de triangle plus grossière fournie par l’aire de conception observateur est toujours insuffisamment grossier, ce travail calculs est onéreux et déjà en cours d’exécution par le runtime pour générer les différents fourni des niveaux de détail.Applications should only perform mesh simplification if the coarsest triangle density provided by the surface observer is still insufficiently coarse - this work is computationally expensive and already being performed by the runtime to generate the various provided levels of detail.

Étant donné que chaque aire de conception observateur puisse fournir plusieurs surfaces spatiales non connectés, certaines applications souhaiterez peut-être ajuster ces données spatiales surface maillages contre chaque glissière autre, puis à leur ensemble.Because each surface observer can provide multiple unconnected spatial surfaces, some applications may wish to clip these spatial surface meshes against each other, then zipper them together. En règle générale, l’étape de découpage est nécessaire, comme les plus proches des maillages de surface spatiales souvent se chevauchent légèrement.In general, the clipping step is required, as nearby spatial surface meshes often overlap slightly.

Raycasting et CollisionRaycasting and Collision

Dans l’ordre pour un API physique (tel que Havok) pour fournir une application avec des fonctionnalités raycasting et de collision pour les surfaces spatiales, l’application doit fournir la surface spatiale maillages à l’API physique.In order for a physics API (such as Havok) to provide an application with raycasting and collision functionality for spatial surfaces, the application must provide spatial surface meshes to the physics API. Les mailles souvent utilisées pour physique ont les propriétés suivantes :Meshes used for physics often have the following properties:

  • Elles contiennent uniquement de petits nombres de triangles.They contain only small numbers of triangles. Opérations de physique sont plus intensifs que les opérations de rendu.Physics operations are more computationally intensive than rendering operations.
  • Ils sont « eau étroite ».They are 'water-tight'. Surfaces destinées à être solid ne doivent pas avoir de petits trous dans mêmes trous trop petits pour être visible peuvent entraîner des problèmes.Surfaces intended to be solid should not have small holes in them; even holes too small to be visible can cause problems.
  • Ils sont convertis en balles convexes.They are converted into convex hulls. Convexe ont plusieurs polygones issues et sont libres de trous, et ils sont beaucoup plus de calculs efficaces pour traiter que les maillages de triangle brutes.Convex hulls have few polygons and are free of holes, and they are much more computationally efficient to process than raw triangle meshes.

Lorsque raycasts performantes par rapport à surfaces spatiales, n’oubliez pas que ces surfaces sont souvent complexes, formes encombrés complètes des détails peu confuses - simples comme votre bureau !When performing raycasts against spatial surfaces, bear in mind that these surfaces are often complex, cluttered shapes full of messy little details - just like your desk! Cela signifie qu’un seul raycast est souvent insuffisant pour vous donner suffisamment d’informations sur la forme de la surface et la forme de l’espace vide de proximité.This means that a single raycast is often insufficient to give you enough information about the shape of the surface and the shape of the empty space near it. Il est donc généralement une bonne idée pour effectuer de nombreuses raycasts au sein d’une petite zone et à utiliser les résultats d’agrégation pour dériver une compréhension plus fiable de la surface.It is thus usually a good idea to perform many raycasts within a small area and to use the aggregate results to derive a more reliable understanding of the surface. Par exemple, à l’aide de la moyenne des 10 raycasts guide hologramme placement sur une aire de produira un résultat beaucoup plus lisse et moins instable qui utilise simplement un raycast unique.For example, using the average of 10 raycasts to guide hologram placement on a surface will yield a far smoother and less 'jittery' result that using just a single raycast.

Toutefois, n’oubliez pas que chaque raycast peut avoir un coût élevé de calcul.However, bear in mind that each raycast can have a high computational cost. Par conséquent, en fonction de votre scénario d’utilisation vous devez compenser le coût de calcul de raycasts supplémentaires (effectuée chaque trame) sur le coût de calcul mesh traitement lisse et de supprimer des trous dans les surfaces spatial ( effectuée lorsque les mailles spatiales sont mis à jour).Thus depending on your usage scenario you should trade off the computational cost of additional raycasts (performed every frame) against the computational cost of mesh processing to smooth and remove holes in spatial surfaces (performed when spatial meshes are updated).

Résolution des problèmesTroubleshooting

  • Dans l’ordre pour les panneaux de surface d’exposition être correctement orienté, chaque GameObject doit être active avant d’être envoyé à la SurfaceObeserver d’avoir son maillage construit.In order for the surface meshes to be orientated correctly, each GameObject needs to be active before it is sent to the SurfaceObeserver to have its mesh constructed. Sinon, les panneaux seront afficheront dans votre espace mais paysage en bizarres angles.Otherwise, the meshes will show up in your space but rotated at weird angles.
  • Le GameObject qui exécute le script qui communique avec le SurfaceObserver doit être définie à l’origine.The GameObject that runs the script that communicates with the SurfaceObserver needs to be set to the origin. Sinon, tous les GameObjects que vous créez et envoyez à la SurfaceObserver pour avoir leurs mailles construits comporte un décalage égal au décalage de l’objet de jeu de Parent.Otherwise, all of GameObjects that you create and send to the SurfaceObserver to have their meshes constructed will have an offset equal to the offset of the Parent Game Object. Cela peut rendre votre mailles affichent plusieurs mètres ce qui le rend très difficile de déboguer ce qui se passait.This can make your meshes show up several meters away which makes it very hard to debug what is going on.

Voir aussiSee also