Udostępnij za pośrednictwem


Rozwiązywanie problemów

Na tej stronie wymieniono typowe problemy zakłócające usługę Azure Remote Rendering i sposoby ich rozwiązywania.

Klient nie może nawiązać połączenia z serwerem

Upewnij się, że zapory (na urządzeniu, wewnątrz routerów itp.) nie blokują portów wymienionych w wymaganiach systemowych.

Nie można załadować modelu

Podczas ładowania modelu (na przykład za pośrednictwem przykładu aparatu Unity) konfiguracja obiektu blob jest poprawna, prawdopodobnie magazyn obiektów blob nie jest prawidłowo połączony. Prawidłowe łączenie zostało wyjaśnione w rozdziale łączenie konta magazynu. Po poprawnym połączeniu może upłynąć do 30 minut, aż zmiany zostaną wprowadzone.

Czasami podczas łączenia konta magazynu nie ma na liście konta usługi Remote Rendering. Aby rozwiązać ten problem, przejdź do konta usługi ARR w witrynie Azure Portal i wybierz pozycję Tożsamość w grupie Ustawienia po lewej stronie. Upewnij się, że wartość Stan jest ustawiona na Włączone. Debuger ramki aparatu Unity

Nie można załadować modelu za pomocą tokenu SAS

Jeśli aplikacja kliencka nie może załadować modelu z magazynu za pośrednictwem prawidłowego tokenu SAS, może to być spowodowane przez poziom dostępu do sieci publicznej skonfigurowany w magazynie obiektów blob. Ładowanie modelu ARR z tokenu SAS działa tylko wtedy, gdy został skonfigurowany z opcją "Włączone ze wszystkich sieci": Zrzut ekranu przedstawiający ustawienia witryny Azure Portal dotyczące poziomu dostępu do sieci publicznej w magazynie obiektów blob.

Jeśli ograniczenie do prywatnych punktów końcowych jest wymagane, konto magazynu musi być połączone , a model musi zostać załadowany za pośrednictwem ścieżki kodu bez sygnatury dostępu współdzielonego zgodnie z opisem w tym miejscu.

Błąd "Disconnected: VideoFormatNotAvailable"

Sprawdź, czy procesor GPU obsługuje dekodowanie wideo sprzętu. Zobacz Development PC (Komputer deweloperzy).

Jeśli pracujesz na laptopie z dwoma procesorami GPU, możliwe, że procesor GPU, na którym działasz, domyślnie nie zapewnia sprzętowej funkcji dekodowania wideo. Jeśli tak, spróbuj wymusić użycie innego procesora GPU przez aplikację. Zmiana używanego procesora GPU jest często możliwa w ustawieniach sterownika procesora GPU.

Pobieranie stanu sesji/konwersji kończy się niepowodzeniem

Wysyłanie poleceń interfejsu API REST zbyt często powoduje, że serwer może ostatecznie ograniczyć przepustowość i zwrócić błąd. Kod stanu HTTP w przypadku ograniczania przepustowości to 429 ("zbyt wiele żądań"). W zasadzie kciuk powinno wystąpić opóźnienie 5–10 sekund między kolejnymi wywołaniami.

Należy pamiętać, że ten limit dotyczy nie tylko wywołań interfejsu API REST bezpośrednio, ale także ich odpowiedników języka C#/C++, takich jak Session.GetPropertiesAsync, Session.RenewAsynclub Frontend.GetAssetConversionStatusAsync. Niektóre funkcje zwracają również informacje, gdy są zapisywane w celu ponawiania próby. Na przykład RenderingSessionPropertiesResult.MinimumRetryDelay określa liczbę sekund oczekiwania przed podjęciem kolejnej próby sprawdzenia. Jeśli jest dostępna, użycie takiej zwracanej wartości jest najlepsze, ponieważ pozwala wykonywać kontrole tak często, jak to możliwe, bez ograniczania.

Jeśli występuje ograniczanie przepustowości po stronie serwera, zmień kod, aby wykonywać wywołania rzadziej. Serwer zresetuje stan ograniczania co minutę, więc można bezpiecznie ponownie uruchomić kod po minucie.

Koder koder H265 jest niedostępny

Istnieją dwa powody, dla których serwer może odmówić nawiązania połączenia z powodu błędu codec not available .

Koder koder-dekoder H265 nie jest zainstalowany:

Najpierw pamiętaj, aby zainstalować Rozszerzenia wideo HEVC, jak wspomniano w sekcji Oprogramowanie wymagań systemowych.

Jeśli nadal występują problemy, upewnij się, że karta graficzna obsługuje funkcję H265 i masz zainstalowany najnowszy sterownik graficzny. Zobacz sekcję Development PC (Komputery deweloperskie) wymagań systemowych dotyczących informacji specyficznych dla dostawcy.

Koder kodu jest zainstalowany, ale nie można go użyć:

Przyczyną tego problemu jest nieprawidłowe ustawienie zabezpieczeń w bibliotekach DLL. Ten problem nie manifestuje się podczas próby obejrzenia filmów wideo zakodowanych za pomocą algorytmu H265. Ponowne zainstalowanie kodera kodera nie rozwiązuje problemu. Zamiast tego wykonaj następujące czynności:

  1. Otwórz program PowerShell z uprawnieniami administratora i uruchom polecenie

    Get-AppxPackage -Name Microsoft.HEVCVideoExtension*
    

    (Zwróć uwagę, że element "*" jest spowodowany tym, że w przypadku niektórych wersji instalacyjnych pakietu nazwa jest HEVCVideoExtensions w przeciwieństwie do HEVCVideoExtensionnazwy ). To polecenie powinno wyświetlić koder InstallLocation koder, podobny do następującego:

    InstallLocation   : C:\Program Files\WindowsApps\Microsoft.HEVCVideoExtension_1.0.23254.0_x64__5wasdgertewe
    
  2. Otwórz ten folder w Eksploratorze Windows

  3. Powinien istnieć podfolder x86 i x64 . Kliknij prawym przyciskiem myszy jeden z folderów i wybierz polecenie Właściwości

    1. Wybierz kartę Zabezpieczenia i wybierz przycisk Ustawienia zaawansowane
    2. Wybierz pozycję Zmień dla właściciela
    3. Wpisz Administratorzy w polu tekstowym
    4. Wybierz pozycję Sprawdź nazwy i ok
  4. Powtórz powyższe kroki dla innego folderu

  5. Powtórz również powyższe kroki dla każdego pliku DLL wewnątrz obu folderów. W sumie powinny istnieć cztery biblioteki DLL.

Aby sprawdzić, czy ustawienia są teraz poprawne, wykonaj następujące kroki dla każdej z czterech bibliotek DLL:

  1. Wybierz pozycję Edytuj zabezpieczenia > właściwości >
  2. Przejrzyj listę wszystkich grup/użytkowników i upewnij się, że każdy z nich ma ustawiony prawa Odczyt i wykonaj (znacznik wyboru w kolumnie zezwalania musi być zaznaczony)

Niska jakość wideo

Jakość wideo może zostać naruszona przez jakość sieci lub brak kodu wideo H265.

Wideo nagrane za pomocą narzędzia MRC nie odzwierciedla jakości środowiska na żywo

Wideo można nagrać na urządzeniu HoloLens za pomocą funkcji Mixed Reality Capture (MRC). Jednak wynikowy film ma gorszą jakość niż środowisko na żywo z dwóch powodów:

  • Szybkość klatek wideo jest ograniczona do 30 Hz, a nie 60 Hz.
  • Obrazy wideo nie przechodzą przez krok przetwarzania ponownego projektu na późnym etapie, więc film wydaje się być bardziej posiekany.

Oba są nieodłącznymi ograniczeniami techniki rejestrowania.

Czarny ekran po pomyślnym załadowaniu modelu

Jeśli masz połączenie ze środowiskiem uruchomieniowym renderowania i załadowano model pomyślnie, ale zobaczysz później tylko czarny ekran, może to mieć kilka odrębnych przyczyn.

Zalecamy przetestowanie następujących czynności przed przeprowadzeniem bardziej szczegółowej analizy:

  • Czy koder codec H265 jest zainstalowany? Chociaż powinien istnieć powrót do kodera H264, widzieliśmy przypadki, w których ten rezerwowy nie działał prawidłowo. Zobacz wymagania systemowe dotyczące instalowania najnowszego sterownika graficznego.
  • W przypadku korzystania z projektu aparatu Unity zamknij środowisko Unity, usuń bibliotekę tymczasową i foldery obj w katalogu projektu i ponownie załaduj/skompiluj projekt. W niektórych przypadkach buforowane dane spowodowały, że próbka nie działała prawidłowo z oczywistego powodu.

Jeśli te dwa kroki nie pomogły, należy sprawdzić, czy ramki wideo są odbierane przez klienta, czy nie. Te zapytania można wykonywać programowo zgodnie z wyjaśnieniem w rozdziale Zapytania dotyczące wydajności po stronie serwera. Element FrameStatistics struct ma element członkowski, który wskazuje, ile ramek wideo zostało odebranych. Jeśli ta liczba jest większa niż 0 i zwiększa się wraz z upływem czasu, klient otrzymuje rzeczywiste klatki wideo z serwera. W związku z tym musi to być problem po stronie klienta.

Skalowanie wartości w ustawieniach konwersji nie jest stosowane do modelu

Jeśli model zostanie wyświetlony w sekcji Prezentacja lub Szybki start z niezmienionym skalowaniem, choć skalowanie jest stosowane w ramach parametrów geometrycznych ustawień konwersji, prawdopodobnie wynika to z wbudowanej funkcji automatycznego skalowania przykładu. Oznacza to, że próbka skaluje model w celu najlepszego dopasowania do frustum widoku, niezależnie od skalowania danych wejściowych.

W przypadku pokazu skalowanie automatyczne można wyłączyć, określając MaxSize zero w sekcji modelu Transform w pliku models.xml. Takie podejście oparte na danych wymaga, aby model był ładowany przez kod XML w pierwszej kolejności, ponieważ we wszystkich innych przypadkach MaxSize wartości domyślne to 1 miernik. Istnieje również MinSize właściwość, która domyślnie wynosi 0,5 miernika, powodując skalowanie wszystkich mniejszych modeli w górę. Aby uzyskać więcej informacji na temat sposobów ładowania modeli w pokazie, zobacz rozdział Dodawanie zasobów modelu 3D do pokazu ARR w dokumentacji pokazu .

Typowe problemy po stronie klienta

Model przekracza limity wybranej maszyny wirtualnej, w szczególności maksymalną liczbę elementów pierwotnych:

Zobacz określone limity rozmiaru serwera.

Model nie znajduje się wewnątrz frustum aparatu:

W wielu przypadkach model jest poprawnie wyświetlany, ale znajduje się poza frustum aparatu. Typowym powodem jest to, że model został wyeksportowany z daleko-środkowym przestawem, więc jest przycięty przez daleko przycinającą płaszczyznę aparatu. Ułatwia ona programowe wykonywanie zapytań względem pola ograniczenia modelu i wizualizowanie pola za pomocą aparatu Unity jako pola liniowego lub drukowania jego wartości w dzienniku debugowania.

Ponadto proces konwersji generuje wyjściowy plik json wraz z przekonwertowanym modelem. Aby debugować problemy z pozycjonowaniem modelu, warto przyjrzeć się wpisowi boundingBox w sekcji outputStatistics:

{
    ...
    "outputStatistics": {
        ...
        "boundingBox": {
            "min": [
                -43.52,
                -61.775,
                -79.6416
            ],
            "max": [
                43.52,
                61.775,
                79.6416
            ]
        }
    }
}

Pole ograniczenia jest opisane jako położenie min i max w przestrzeni 3D, w metrach. Współrzędna 1000,0 oznacza, że jest to 1 kilometr od źródła.

Mogą wystąpić dwa problemy z tym polem ograniczenia, które prowadzą do niewidocznej geometrii:

  • Skrzynka może być daleko od środka, więc obiekt jest całkowicie obcięty z powodu dalekiego wycinku płaszczyzny. Wartości boundingBox w tym przypadku będą wyglądać następująco: min = [-2000, -5,-5], max = [-1990, 5,5], używając dużego przesunięcia na osi x jako przykładu tutaj. Aby rozwiązać ten typ problemu, włącz recenterToOrigin opcję w konfiguracji konwersji modelu.
  • Pudełko można wyśrodkować, ale być rzędami wielkości zbyt dużych. Oznacza to, że choć aparat zaczyna się w środku modelu, jego geometria jest obcięta we wszystkich kierunkach. Typowe boundingBox wartości w tym przypadku wyglądają następująco: min = [-1000,-1000,-1000], max = [1000,1000,1000]. Przyczyną tego typu problemu jest zwykle niezgodność skali jednostki. Aby zrekompensować, określ wartość skalowania podczas konwersji lub oznacz model źródłowy prawidłowymi jednostkami. Skalowanie można również zastosować do węzła głównego podczas ładowania modelu w czasie wykonywania.

Potok renderowania aparatu Unity nie zawiera punktów zaczepienia renderowania:

Usługa Azure Remote Rendering jest podłączana do potoku renderowania aparatu Unity w celu wykonania kompozycji ramki za pomocą wideo i wykonania ponownego projektu. Aby sprawdzić, czy te haki istnieją, otwórz menu Window > Analysis > Frame debugger. Włącz tę funkcję i upewnij się, że w potoku HolographicRemotingCallbackPass znajdują się dwa wpisy:

Potok renderowania aparatu Unity

Aby rozwiązać ten problem, upewnij się, że jest używany zasób HybridRenderingPipeline : Zrzut ekranu przedstawiający okno dialogowe przeglądarki zasobów aparatu Unity i ustawień projektu. Zasób HybridRenderingPipeline został wyróżniony w przeglądarce elementów zawartości. Strzałka wskazuje z elementu zawartości do pola UniversalRenderPipelineAsset w ustawieniach projektu.

.. jak opisano bardziej szczegółowo w potokach renderowania aparatu Unity.

Wzorzec tablicy kontrolnej jest renderowany po załadowaniu modelu

Jeśli renderowany obraz wygląda następująco: Zrzut ekranu przedstawia siatkę czarnych i białych kwadratów z menu Narzędzia.

następnie renderer osiąga limity wielokątów dla standardowego rozmiaru konfiguracji. Aby rozwiązać ten problem, przełącz się na rozmiar konfiguracji w warstwie Premium lub zmniejsz liczbę widocznych wielokątów.

Renderowany obraz w aucie Unity jest do góry nogami

Pamiętaj, aby postępować zgodnie z samouczkiem dotyczącym aparatu Unity: wyświetlanie dokładnie modeli zdalnych. Obraz do góry nogami wskazuje, że aparat Unity jest wymagany do utworzenia obiektu docelowego renderowania poza ekranem. To zachowanie nie jest obecnie obsługiwane i tworzy ogromny wpływ na wydajność urządzenia HoloLens 2.

Przyczyną tego problemu może być MSAA, HDR lub włączenie przetwarzania końcowego. Upewnij się, że profil o niskiej jakości został wybrany i ustawiony jako domyślny w aproszcie Unity. Aby to zrobić, przejdź do pozycji Edytuj > ustawienia projektu... > Jakość.

W przypadku korzystania z wtyczki OpenXR w środowisku Unity 2020 istnieją wersje urP (uniwersalny potok renderowania), które tworzą ten dodatkowy obiekt docelowy renderowania poza ekranem niezależnie od włączenia przetwarzania końcowego. Dlatego ważne jest ręczne uaktualnienie wersji urP do co najmniej 10.5.1 (lub nowszej). Ten proces uaktualniania został opisany w wymaganiach systemowych.

Kod aparatu Unity korzystający z interfejsu API renderowania zdalnego nie kompiluje

Używanie debugowania podczas kompilowania dla edytora aparatu Unity

Przełącz typ kompilacji rozwiązania Aparatu Unity na Debugowanie. Podczas testowania ARR w edytorze aparatu Unity definiowanie UNITY_EDITOR jest dostępne tylko w kompilacjach "Debugowanie". To ustawienie nie jest powiązane z typem kompilacji używanym dla wdrożonych aplikacji, w którym należy preferować kompilacje "Wydanie".

Błędy kompilacji podczas kompilowania przykładów aparatu Unity dla urządzenia HoloLens 2

Podczas próby skompilowania przykładów aparatu Unity (szybki start, ShowCaseApp, ... ) dla urządzenia HoloLens 2 widzieliśmy fałszywe błędy. Program Visual Studio skarży się, że nie jest w stanie skopiować niektórych plików, choć są tam. Jeśli wystąpi ten problem:

  • Usuń wszystkie tymczasowe pliki aparatu Unity z projektu i spróbuj ponownie. Oznacza to, że zamknij aparat Unity, usuń bibliotekę tymczasową i foldery obj w katalogu projektu i ponownie załaduj/skompiluj projekt.
  • Upewnij się, że projekty znajdują się w katalogu na dysku z dość krótką ścieżką, ponieważ krok kopiowania czasami wydaje się napotkać problemy z długimi nazwami plików.
  • Jeśli to nie pomoże, może to być, że ms Sense zakłóca krok kopiowania. Aby skonfigurować wyjątek, uruchom to polecenie rejestru z wiersza polecenia (wymaga uprawnień administratora):
    reg.exe ADD "HKLM\SOFTWARE\Policies\Microsoft\Windows Advanced Threat Protection" /v groupIds /t REG_SZ /d "Unity"
    

Kompilacje arm64 dla projektów aparatu Unity kończą się niepowodzeniem, ponieważ brakuje AudioPluginMsHRTF.dll

Element AudioPluginMsHRTF.dll for Arm64 został dodany do pakietu Windows Mixed Reality (com.unity.xr.windowsmr.metro) w wersji 3.0.1. Upewnij się, że masz zainstalowaną wersję 3.0.1 lub nowszą za pośrednictwem Menedżer pakietów aparatu Unity. Na pasku menu aparatu Unity przejdź do pozycji Okno > Menedżer pakietów i poszukaj pakietu Windows Mixed Reality.

Wtyczka aparatu Unity Cinemachine nie działa w trybie zdalnego pozowania

W trybie zdalnego pozy kod powiązania ARR Unity niejawnie tworzy aparat proxy, który wykonuje rzeczywiste renderowanie. W tym przypadku maska uculling kamery głównej jest ustawiona na 0 ("nic"), aby skutecznie wyłączyć renderowanie dla niego. Jednak niektóre wtyczki innych firm (na przykład Cinemachine), które napędzają aparat, mogą polegać na co najmniej niektórych bitach warstwy.

W tym celu kod powiązania umożliwia programowe zmienianie maski bitów warstwy dla głównego aparatu. W szczególności wymagane są następujące kroki:

  1. Utwórz nową warstwę w środowisku Unity, która nie jest używana do renderowania żadnej lokalnej geometrii sceny. W tym przykładzie załóżmy, że warstwa nosi nazwę "Cam".
  2. Przekaż tę maskę bitów do ARR, więc ARR ustawia ją na głównym aparacie:
    RemoteManagerUnity.CameraCullingMask = LayerMask.GetMask("Cam");
    
  3. Cinemachine Skonfiguruj właściwości tak, aby korzystały z tej nowej warstwy:Zrzut ekranu przedstawiający panel inspektora aparatu Unity dla ustawień aparatu w usłudze Cinemachine.

Ten problem nie ma wpływu na tryb lokalny, ponieważ w tym przypadku powiązanie ARR nie przekierowuje renderowania do wewnętrznej kamery serwera proxy.

Natywna aplikacja oparta na języku C++ nie kompiluje

Błąd "Nie znaleziono biblioteki" dla aplikacji platformy UWP lub biblioteki DLL

Wewnątrz pakietu NuGet języka C++ znajduje się microsoft.azure.remoterendering.Cpp.targets plik definiujący, który z odmiany binarnej ma być używany. Aby zidentyfikować UWPelement , warunki w pliku są sprawdzane pod kątem ApplicationType == 'Windows Store'. Dlatego należy upewnić się, że ten typ jest ustawiony w projekcie. Powinno to mieć zastosowanie podczas tworzenia aplikacji platformy uniwersalnej systemu Windows lub biblioteki DLL za pomocą kreatora projektu programu Visual Studio.

Niestabilne hologramy

W przypadku, gdy renderowane obiekty wydają się być przenoszone wraz z ruchami głowy, mogą wystąpić problemy z reprojektowaniem późnego etapu (LSR). Zapoznaj się z sekcją dotyczącą ponownego projektowania późnego etapu, aby uzyskać wskazówki dotyczące podejścia do takiej sytuacji.

Innym powodem niestabilnych hologramów (wobbling, warping, jittering lub skokowych hologramów) może być słaba łączność sieciowa, w szczególności niewystarczająca przepustowość sieci lub zbyt duże opóźnienie. Dobrym wskaźnikiem jakości połączenia sieciowego jest wartość ServiceStatistics.VideoFramesReusedstatystyk wydajności . Ponownie użyte ramki wskazują sytuacje, w których stara ramka wideo musi być ponownie użyta po stronie klienta, ponieważ nie była dostępna nowa ramka wideo — na przykład z powodu utraty pakietów lub różnic w opóźnieniu sieci. Jeśli ServiceStatistics.VideoFramesReused wartość jest często większa niż zero, oznacza to problem z siecią.

Inną wartością do przyjrzenia się jest ServiceStatistics.LatencyPoseToReceiveAvg. Powinno to być stale poniżej 100 ms. Wyświetlanie wyższych wartości może wskazywać, że masz połączenie z centrum danych, które jest za daleko.

Aby uzyskać listę potencjalnych środków zaradczych, zobacz wytyczne dotyczące łączności sieciowej.

Zawartość lokalna (UI, ...) na urządzeniu HoloLens 2 renderuje się z znacznie większymi artefaktami zniekształceń niż bez protokołu ARR

Ten artefakt jest spowodowany ustawieniem domyślnym, które wymienia lokalną jakość projekcji zawartości na potrzeby wydajności środowiska uruchomieniowego. Zapoznaj się z rozdziałem dotyczącym trybów ponownego projektowania, aby zobaczyć, jak można zmienić tryb projekcji, aby zawartość lokalna została renderowana na tym samym poziomie jakości ponownego projektu, co bez ARR.

Walka Z

Podczas gdy ARR oferuje funkcje ograniczania ryzyka walki z, z-fighting może nadal pojawić się na scenie. Ten przewodnik ma na celu rozwiązanie tych pozostałych problemów.

Użyj następującego przepływu pracy, aby rozwiązać problem z walki:

  1. Przetestuj scenę przy użyciu domyślnych ustawień ARR (ograniczenie ryzyka walki z)

  2. Wyłączanie ograniczania ryzyka walki z za pośrednictwem interfejsu API

  3. Zmień kamerę w pobliżu i dalekiej płaszczyzny na bliższy zakres

  4. Rozwiązywanie problemów ze sceną za pośrednictwem następnej sekcji

Badanie pozostałych walk z

Jeśli powyższe kroki zostały wyczerpane, a pozostałe walki z są niedopuszczalne, należy zbadać podstawową przyczynę walki z. Jak wspomniano na stronie funkcji ograniczania ryzyka walki z, istnieją dwa główne powody walki z: utrata dokładności głębokości na dalekim końcu zakresu głębokości i powierzchnie, które przecinają się podczas bycia gruboplanowym. Utrata dokładności głębokości jest matematyczną ostatecznością i może być ograniczana tylko przez wykonanie kroku 3 powyżej. Powierzchnie współpłatne wskazują na wadę zasobu źródłowego i są lepiej naprawione w danych źródłowych.

ARR ma funkcję określania, czy powierzchnie mogą z-walki: wyróżnianie tablicy kontrolnej. Możesz również określić wizualnie, co powoduje walkę z. Poniższa pierwsza animacja przedstawia przykład utraty dokładności głębokości w odległości, a drugi przedstawia przykład prawie coplanarnych powierzchni:

Animacja przedstawia przykład utraty dokładności głębokości w odległości. Animacja przedstawia przykład prawie gruboplanowych powierzchni.

Porównaj te przykłady z walkami, aby określić główną przyczynę lub opcjonalnie wykonać ten przepływ pracy krok po kroku:

  1. Umieść aparat nad powierzchniami walki z, aby spojrzeć bezpośrednio na powierzchnię.
  2. Powoli przesuwa kamerę do tyłu, z dala od powierzchni.
  3. Jeśli walka z jest widoczna przez cały czas, powierzchnie są idealnie coplanar.
  4. Jeśli walka z jest widoczna przez większość czasu, powierzchnie są prawie coplanar.
  5. Jeśli walka z jest widoczna tylko z daleka, przyczyną jest brak dokładności głębokości.

Powierzchnie współpłatne mogą mieć wiele różnych przyczyn:

  • Obiekt został zduplikowany przez aplikację eksportu z powodu błędu lub różnych metod przepływu pracy.

    Sprawdź te problemy z odpowiednią obsługą aplikacji i aplikacji.

  • Powierzchnie są zduplikowane i przerzucane, aby pojawiać się dwukrotnie w rendererach, które używają powłoki przedniej lub tylnej twarzy.

    Importowanie za pośrednictwem konwersji modelu określa wartość po stronie podmiotu zabezpieczeń modelu. Wartość podwójna jest zakładana jako domyślna. Powierzchnia jest renderowana jako cienka ściana z fizycznie poprawnym oświetleniem z obu stron. Jednostronność może być sugerowana przez flagi w zasobie źródłowym lub jawnie wymuszone podczas konwersji modelu. Ponadto, ale opcjonalnie, tryb jednostronny można ustawić na "normalny".

  • Obiekty przecinają się w zasobach źródłowych.

    Obiekty przekształcone w sposób, w jaki niektóre ich powierzchnie nakładają się również na z-walki. Przekształcanie części drzewa sceny w zaimportowanej scenie w usłudze ARR może również spowodować ten problem.

  • Powierzchnie są celowo tworzone do dotyku, takich jak kalki lub tekst na ścianach.

Artefakty graficzne korzystające z renderowania stereo wieloprzepustowego w natywnych aplikacjach języka C++

W niektórych przypadkach niestandardowe natywne aplikacje języka C++ korzystające z wieloprzepustowego trybu renderowania stereo dla zawartości lokalnej (renderowanie do lewej i prawej strony w osobnych przejściach) po wywołaniu elementu BlitRemoteFrame może wyzwolić usterkę sterownika. Usterka powoduje niedeterministyczne usterki rasteryzacji, powodując przypadkowe zniknięcie poszczególnych trójkątów lub części trójkątów zawartości lokalnej. Ze względu na wydajność zaleca się renderowanie zawartości lokalnej przy użyciu bardziej nowoczesnej techniki renderowania stereo z jedną passą, na przykład przy użyciu SV_RenderTargetArrayIndex.

Błędy pobierania pliku konwersji

Usługa konwersji może napotkać błędy podczas pobierania plików z magazynu obiektów blob z powodu ograniczeń systemu plików. Poniżej wymieniono konkretne przypadki awarii. Szczegółowe informacje na temat ograniczeń systemu plików systemu Windows można znaleźć w dokumentacji nazewnictwa plików, ścieżek i przestrzeni nazw .

Zderzająca się ścieżka i nazwa pliku

W magazynie obiektów blob można utworzyć plik i folder o dokładnie takiej samej nazwie jak wpisy równorzędne. System plików systemu Windows nie zezwala na to. W związku z tym usługa emituje w tym przypadku błąd pobierania.

Długość ścieżki

Istnieją limity długości ścieżki nałożone przez system Windows i usługę. Ścieżki plików i nazwy plików w magazynie obiektów blob nie mogą przekraczać 178 znaków. Na przykład z wartością blobPrefix models/Assets, która ma 13 znaków:

models/Assets/<any file or folder path greater than 164 characters will fail the conversion>

Usługa konwersji pobiera wszystkie pliki określone w obiekcie blobPrefix, a nie tylko pliki używane w konwersji. Pliki/folder powodujące problemy mogą być mniej oczywiste w tych przypadkach, dlatego ważne jest, aby sprawdzić wszystkie elementy zawarte na koncie magazynu w obszarze blobPrefix. Zobacz przykładowe dane wejściowe poniżej, aby dowiedzieć się, co zostanie pobrane.

{
  "settings": {
    "inputLocation": {
      "storageContainerUri": "https://contosostorage01.blob.core.windows.net/arrInput",
      "blobPrefix": "models/Assets",
      "relativeInputAssetPath": "myAsset.fbx"
      ...
    }
  }
}
models
├───Assets
│   │   myAsset.fbx                 <- Asset
│   │
│   └───Textures
│   |       myTexture.png           <- Used in conversion
│   |
|   └───MyFiles
|          myOtherFile.txt          <- File also downloaded under blobPrefix      
|           
└───OtherFiles
        myReallyLongFileName.txt    <- Ignores files not under blobPrefix             

Urządzenie HoloLens2 "Take a Picture" (MRC) nie wyświetla żadnej zawartości lokalnej ani zdalnej

Ten problem zwykle występuje, jeśli projekt jest aktualizowany z programu WMR do biblioteki OpenXR, a projekt uzyskiwał dostęp do ustawień Klasy HolographicViewConfiguration (Windows.Graphics.Holographic). Ten interfejs API nie jest obsługiwany w środowisku OpenXR i nie może być dostępny.

Następne kroki