Center mode de AR Session
Center mode é um conceito central do Unity AR. Ele determina qual objeto a session seleciona como ponto de referência, ou center object, para todo o AR tracking durante runtime, e quais objetos na session podem se mover livremente. Com o conteúdo a seguir, você entenderá os conceitos básicos de center mode e seu impacto no comportamento de movimento dos objetos na scene.
Antes de começar
- Entenda os conceitos básicos, composição e workflow de session por meio de Introdução a AR Session.
- Entenda o papel da camera em AR scenes por meio de Camera, e como session controla as propriedades da camera para garantir a experiência AR correta.
- Entenda os conceitos básicos, composição e lifecycle de XR Origin por meio de XR Origin.
- Entenda os conceitos básicos, states e lifecycle de target por meio de Target.
Center object e center mode
Em uma session, uma ou mais funções AR diferentes podem ser executadas ao mesmo tempo. Essas funções AR podem fazer tracking de objetos diferentes, e também podem usar motion tracking ao mesmo tempo para rastrear a posição e orientação do próprio dispositivo.
Para garantir que o comportamento de movimento dos objetos na scene corresponda ao esperado, session precisa selecionar um ponto de referência como centro de todo o AR tracking. A representação desse ponto de referência na Unity scene é o center object (CenterObject). Center mode (CenterMode) é a regra que determina qual objeto é esse center object durante o runtime de session.
O centro de uma session pode ser um dos seguintes objetos:
- Um target sendo rastreado
- XR Origin
- Camera
Center mode determina qual objeto session seleciona como center object e se esse objeto pode se mover livremente. Objetos além desse, incluindo camera, XR Origin e target não centrais, são controlados por session e se movem usando o center object como ponto de referência.
No Unity, uma session oferece suporte aos quatro modos de centro a seguir:
| Nome | Ilustração | Descrição |
|---|---|---|
| FirstTarget SpecificTarget |
![]() |
Usa um target como centro, e esse target pode se mover livremente. Entre eles,
|
| SessionOrigin | ![]() |
Usa XR Origin como centro, e XR Origin pode se mover livremente. A camera e os target na session são controlados pela session e se movem tendo o XR Origin central como ponto de referência. |
| Camera | ![]() |
Usa a camera como centro, e a camera pode se mover livremente. XR Origin e os target na session são controlados pela session e se movem tendo a camera central como ponto de referência. |
Nas ilustrações há três objetos: a esfera azul representa XR Origin, o cone azul representa a camera, e a imagem amarela representa o target. Em diferentes modos de centro, a session escolhe objetos diferentes como objeto central. As figuras mostram o sistema de coordenadas local do objeto correspondente.
Dica
Se você tem experiência com AR Foundation, pode notar que não existe um conceito semelhante no AR Foundation. Na verdade, o comportamento do AR Foundation é consistente com o modo de centro SessionOrigin.
Em uma session, a relação de movimento relativo entre target e camera é controlada pela session atual. A relação de movimento relativo entre XR Origin e camera é controlada pela session atual ou por um framework de terceiros, como AR Foundation. A existência dos modos de centro garante que, em diferentes ambientes de execução, a session possa controlar corretamente o comportamento de movimento dos objetos na cena.
Por exemplo, se AR Foundation ou um SDK de headset baseado em Unity XR controla a relação de movimento relativo entre XR Origin e camera, XR Origin, pelo design do framework Unity XR, pode ser movido sob controle da session, enquanto camera não pode. Nesse caso, a session limita o modo de centro a FirstTarget, SpecificTarget ou SessionOrigin. Assim, para a session, o centro será XR Origin ou algum target, enquanto para o framework Unity XR o centro continua sendo XR Origin, e todo o sistema pode funcionar perfeitamente.
Aviso
No Unity AR, qualquer objeto que exista no sistema de coordenadas do mundo do Unity e cujo transform não seja ajustado de acordo com o componente session pode não ser exibido corretamente. Como a session ajusta a posição e a orientação de outros objetos na cena com base na posição e orientação do objeto central, se houver objetos não controlados pela session, sua posição e orientação podem não ser consistentes com as calculadas pela session, causando comportamento inesperado.
Por exemplo, se um modelo de panda for colocado no sistema de coordenadas do mundo, a posição e a orientação desse modelo de panda podem não ter relação correspondente com nenhum objeto no mundo real, parecendo flutuar no ar ou se mover aleatoriamente.
A prática correta é sempre colocar o conteúdo a ser exibido sob algum nó target, ou sob o nó XR Origin se o conteúdo precisar acompanhar o movimento de XR Origin. Assim, a posição e a orientação do conteúdo serão ajustadas de acordo com o resultado calculado pela session, garantindo que o conteúdo seja sobreposto corretamente ao mundo real.
É possível alinhar manualmente o conteúdo com a posição e a orientação de um target ou de XR Origin, mas isso deve ser feito no momento correto. Consulte escolher um modo de centro adequado.
Modos de centro válidos
Nem todos os modos de centro são válidos em qualquer situação. A session decide quais modos de centro são válidos de acordo com o ambiente de execução atual e o frame source selecionado, garantindo que possa controlar corretamente o comportamento de movimento dos objetos na cena. A propriedade ARSession.AvailableCenterMode pode ser usada para obter a lista de modos de centro válidos da session atual.
De acordo com o frame source finalmente selecionado, os modos de centro válidos da session têm os seguintes casos:
| frame source | camera controlada | tem dados de movimento | tem design de origin | modos de centro válidos |
|---|---|---|---|---|
|
Sim | Não | - |
|
|
Sim | Sim | Sim |
camera não éum nó filho de XR Origin |
|
Não | Sim | Sim |
|
|
Não | Sim | Sim |
|
|
Não | Sim | Não |
|
Exceto ao usar FramePlayer, os modos de centro válidos são determinados quando a session é montada. Ao usar FramePlayer, os modos de centro válidos são determinados dinamicamente durante a execução da session, a cada saída de dados de frame, de acordo com a presença de informações de movimento nos dados.
Características de diferentes center modes
A seguir, usaremos uma série de vídeos de exemplo para mostrar o comportamento de movimento dos objetos em diferentes center modes.
O conteúdo do vídeo é o seguinte:
No mundo real, há dois tipos diferentes de trackable objects:
- Um é uma árvore de Natal, que fica parada. Ela é rastreada pela função sparse spatial map.
- O outro é uma folha de papel A4, na qual uma imagem foi impressa previamente. Ela pode se mover. Ela é rastreada pela função image tracking.
Ao gravar o vídeo, o observer, o telefone, começa pelo lado traseiro direito da árvore de Natal e se move ao redor dela. O papel A4 balança para a esquerda e para a direita na frente do observer.
Para facilitar a observação, adicionamos alguns markers a diferentes objetos na scene.
- Árvore de Natal: quando está em estado de tracking, uma nuvem de pontos azul brilhante é sobreposta no espaço que ela ocupa. Esses markers desaparecem quando o tracking é perdido.
- Papel A4: quando está em estado de tracking, um panda é sobreposto logo acima dele. A view
Gametambém exibe uma imagem exatamente igual ao conteúdo e tamanho do papel A4. Esses markers desaparecem quando o tracking é perdido.- XR Origin: uma esfera azul é colocada em sua posição
- Camera: um cone azul é colocado em sua posição, e o eixo principal do cone é consistente com a direção de visão da camera.
Esses vídeos foram gravados no modo Play do Unity editor usando simulated runtime data. O lado esquerdo do vídeo é a view Scene, e o lado direito é a view Game. O conteúdo da view Game é igual ao que o usuário vê no telefone no mundo real.
Center modes FirstTarget e SpecificTarget
Os modos center FirstTarget e SpecificTarget usam um determinado target como objeto central. Nesses dois modos, exceto pelo target central, a camera, XR Origin e outros objetos target na session são controlados pela session e se movem tomando o target central como ponto de referência.
Alguns targets podem se mover no mundo real, como o papel A4 no vídeo.
No vídeo acima, o objeto central é o papel A4 rastreado por image tracking. É possível ver que, como não há operação externa, o papel A4 (panda) permanece parado, enquanto a camera (cone azul), XR Origin (esfera azul) e a árvore de Natal (point cloud azul claro) estão se movendo.
Alguns targets ficam parados no mundo real, como a árvore de Natal no vídeo.
No vídeo acima, o objeto central é a árvore de Natal rastreada por sparse spatial map. É possível ver que, como não há operação externa, a árvore de Natal (point cloud azul claro) permanece parada, enquanto a camera (cone azul) e o papel A4 (panda) estão se movendo. XR Origin (esfera azul) também não se move, mas isso ocorre porque ele está parado em relação à árvore de Natal.
Nesses dois modos, o target central usado como ponto de referência pode se mover livremente. Nesse momento, a camera, XR Origin e outros target na session se movem junto com ele, e seu transform não pode ser controlado externamente.
No vídeo acima, o objeto central é o papel A4 rastreado por image tracking. É possível ver que, como movemos manualmente o papel A4 (panda), a camera (cone azul), XR Origin (esfera azul) e a árvore de Natal (point cloud azul claro) se moveram juntos. Observe que o conteúdo exibido na view
Gamenão muda nesse momento, porque a posição e a orientação da camera em relação ao papel A4 e a outros objetos não mudam.
A diferença entre os modos FirstTarget e SpecificTarget é que durante runtime o target central pode mudar, mas o método de seleção do centro é diferente quando essa mudança ocorre. Para explicar isso, precisamos considerar o processo de tracking bem-sucedido e perda de tracking.
Quando o objeto central em uma session muda, ARSession.CenterObject sempre reflete o objeto central atual, mas ARSession.CenterMode não muda.
Mudanças de center no center mode FirstTarget
No modo de centro FirstTarget, a session sempre usa o primeiro target rastreado como centro. Se o tracking desse target for perdido, a session selecionará novamente o centro. Quando a session estiver rastreando ou passar a rastrear outro target, esse outro target será selecionado como o novo objeto central.
A nova seleção do centro ocorre nos seguintes casos:
Nenhum
targetestá em estado de tracking no frame atual
Nesse momento, se o modo SessionOrigin for válido, a session regride para o modo SessionOrigin e selecionaXR Origincomo objeto central; caso contrário, a session regride para o modo Camera e selecionacameracomo objeto central.Há um
targetem estado de tracking no frame atual, e no frame anterior nenhumtargetestava em estado de tracking
Nesse momento, a session seleciona um dos objetostargetrastreados como objeto central.Há um
targetem estado de tracking no frame atual, e otargetcentral do frame anterior perdeu o tracking no frame atual
Nesse momento, a session seleciona um dos objetostargetrastreados como o novo objeto central.
No vídeo acima, o objeto central inicial é a folha A4 rastreada pela função image tracking. É possível ver que, quando o tracking da folha A4 (panda) é perdido, a session seleciona novamente o objeto central. Nesse momento, a árvore de Natal (point cloud azul-claro brilhante) se torna o novo objeto central. No fim do vídeo, a folha A4 volta a ser rastreada, mas não se torna o objeto central, porque a árvore de Natal já é o objeto central.
Mudanças de centro no modo de centro SpecificTarget
No modo de centro SpecificTarget, a session sempre usa o target especificado como centro. Se o tracking desse target for perdido, a session selecionará novamente o centro, mas não selecionará outro target como novo objeto central. Quando a session voltar a rastrear esse target especificado, ele ainda será selecionado como objeto central.
A nova seleção do centro ocorre nos seguintes casos:
O
targetespecificado não é rastreado no frame atual
Nesse momento, se o modo SessionOrigin for válido, a session regride para o modo SessionOrigin e selecionaXR Origincomo objeto central; caso contrário, a session regride para o modo Camera e selecionacameracomo objeto central.O
targetespecificado está em estado de tracking no frame atual, e otargetespecificado não era rastreado no frame anterior
Nesse momento, a session seleciona otargetespecificado como objeto central.
No vídeo acima, o objeto central é especificado como a folha A4 rastreada pela função image tracking. É possível ver que, quando o tracking da folha A4 (panda) é perdido, a session não seleciona outro
targetcomo novo objeto central. Nesse momento, a árvore de Natal (point cloud azul-claro brilhante) não se torna o objeto central. No fim do vídeo, a folha A4 volta a ser rastreada e volta a ser o objeto central.
Modo de centro SessionOrigin
O modo de centro SessionOrigin usa XR Origin como objeto central. Nesse modo, a camera e o target na session são controlados pela session e se movem tendo o XR Origin central como ponto de referência.
No vídeo acima, o objeto central é XR Origin. É possível ver que, como não há operação externa, XR Origin (esfera azul) permanece parado, enquanto a camera (cone azul) e a folha A4 (panda) se movem. A árvore de Natal (point cloud azul-claro brilhante) também não se move, mas isso ocorre porque ela está parada em relação a XR Origin.
Nesse modo, o XR Origin central usado como ponto de referência pode se mover livremente. Nesse momento, a camera e o target na session se movem junto com ele, e seus transforms não podem ser controlados externamente.
No vídeo acima, o objeto central é XR Origin. É possível ver que, como movemos manualmente XR Origin (esfera azul), a camera (cone azul), a árvore de Natal (point cloud azul-claro brilhante) e a folha A4 (panda) se moveram junto com ele. Observe que o conteúdo exibido na view
Gamenão muda nesse momento, porque a posição e a orientação da camera em relação a XR Origin e aos outros objetos não mudaram.
No modo SessionOrigin, XR Origin deve ser válido, portanto o objeto central não muda nesse modo.
Modo de centro Camera
O modo de centro camera usa camera como objeto central. Nesse modo, XR Origin e target na session são controlados pela session e se movem tendo a camera central como ponto de referência.
No vídeo acima, o objeto central é a camera. É possível ver que, como não há operação externa, a camera (cone azul) permanece parada, enquanto XR Origin (esfera azul), a árvore de Natal (point cloud azul-claro brilhante) e a folha A4 (panda) se movem.
Nesse modo, a camera central usada como ponto de referência pode se mover livremente. Nesse momento, XR Origin e target na session se movem junto com ela, e seus transforms não podem ser controlados externamente.
No vídeo acima, o objeto central é a camera. É possível ver que, como movemos manualmente a camera (cone azul), XR Origin (esfera azul), a árvore de Natal (point cloud azul-claro brilhante) e a folha A4 (panda) se moveram junto com ela. Observe que o conteúdo exibido na view
Gamenão muda nesse momento, porque a posição e a orientação da camera em relação a XR Origin e aos outros objetos não mudaram.
No modo Camera, camera deve ser válida, portanto o objeto central não muda nesse modo.


