Class ARSession
- Espaço de nomes
- easyar
- Assembly
- EasyAR.Sense.dll
Controla a sessão AR na cenaMonoBehaviour.Uma sessão contém um conjunto de componentes montados em umARAssembly e controla o fluxo de dados em todo o ciclo de vida.Este componente é o ponto de entrada para AR.Não é permitido ter múltiplas instâncias ativas ao mesmo tempo.
Todas as funcionalidades dos componentes EasyAR só podem ser usadas apósStartSession().
A transform relativa entreCamera e alguns componentes AR é controlada pela sessão.Um objeto é denominadoCenterObject,ele permanece imóvel na cena,enquanto outros objetos se movem em relação a esteCenterObject.Este objeto é selecionado com base no valor deCenterMode.Consulte a descrição deARSession.ARCenterMode para obter mais detalhes.
[DefaultExecutionOrder(-2147483648)]
[DisallowMultipleComponent]
[RequireComponent(typeof(EasyARController), typeof(DiagnosticsController))]
[RequireComponent(typeof(FrameRecorder), typeof(FramePlayer), typeof(CameraImageRenderer))]
public class ARSession : MonoBehaviour
- Herança
-
ARSession
Campos
AutoStart
Inicia a sessão automaticamente emMonoBehaviour.Start.Se definido como false,você precisa chamar manualmenteStartSession() para iniciar a sessão.
[SerializeField]
[HideInInspector]
public bool AutoStart
CenterMode
Modo de centro AR.Pode ser modificado a qualquer momento,com efeito imediato.Se o modo especificado não estiver disponível,ele será automaticamente alterado para um modo disponível.
[SerializeField]
[HideInInspector]
public ARSession.ARCenterMode CenterMode
HorizontalFlip
Modo de renderização espelhado horizontalmente.Pode ser modificado a qualquer momento,com efeito imediato.Disponível apenas quando rastreamento de imagem ou objeto é usado.
[SerializeField]
[HideInInspector]
public ARSession.FlipOptions HorizontalFlip
Propriedades
AssembleOptions
Opções de montagem da sessão,devem ser definidas antes deAssemble()(se não chamado anteriormente,StartSession() chamará implicitamente).
public AssembleOptions AssembleOptions { get; }
Assembly
Montagem dos componentes AR.
public ARAssembly Assembly { get; }
AvailableCenterMode
Modos de centro disponíveis para a sessão atual.
public IReadOnlyList<ARSession.ARCenterMode> AvailableCenterMode { get; }
CenterObject
O objeto central usado por esta sessão no quadro atual.
Este objeto representa um objeto ou seu pai que não se move no espaço Unity.Pode serOrigin,Camera ou um `target`. `Target` pode ser um objeto contendoTargetController ouBlockRootController.Ao usar mapas espaciais esparsos ou EasyAR Mega,o centro realGameObject é o objeto de mapa ou bloco localizado especificamente sob o nó raiz,CenterObject é o pai deste objeto.Consulte a descrição deARSession.ARCenterMode para obter mais detalhes.
public GameObject CenterObject { get; }
Diagnostics
Componente de diagnóstico da sessão.
public DiagnosticsController Diagnostics { get; }
Origin
Origem da sessão quando qualquer funcionalidade de rastreamento de movimento estiver em execução.
Será selecionada automaticamente da cena;se não existir,será criada pelo EasyAR ou por uma extensão de fonte de quadro de terceiros.Ao usar uma fonte de quadro integrada,se o XROrigin do framework Unity XR existir,ele será selecionado.Se o pacote AR Foundation não existir,apenas um XR Origin com estrutura padrão será selecionado.
public GameObject Origin { get; }
Report
Relatório da sessão.Torna-se disponível para visualização após a montagem ser concluída e é atualizado quando o estado da sessão muda.Usado para visualizar detalhes como corrupção da sessão ou disponibilidade de componentes.
public SessionReport Report { get; }
SpecificTargetCenter
Objeto central especificado manualmente.QuandoCenterMode ==SpecificTarget,CenterObject será definido como este objeto.Pode ser modificado a qualquer momento,com efeito imediato.
O objeto deve conter um componenteTargetController ouBlockRootController.
public GameObject SpecificTargetCenter { get; set; }
State
Estado atual da sessão.
public ARSession.SessionState State { get; }
TrackingStatus
Estado do rastreamento de movimento quando qualquer funcionalidade de rastreamento de movimento estiver em execução.
public Optional<MotionTrackingStatus> TrackingStatus { get; }
enabled
Ativa/desativa a saída durante a execução da sessão.No estado desativado,a sessão não produz saída,a imagem da câmera (se controlada pelo EasyAR) e os transform de todos os objetos da sessão não são atualizados.
public bool enabled { get; set; }
Métodos
Assemble()
Monta a sessão usandoAssembleOptions.Se chamado,será chamado automaticamente emStartSession().
public IEnumerator Assemble()
ImageCoordinatesFromScreenCoordinates(Vector2)
Transforma do sistema de coordenadas da tela ([0, 1]^2) para o sistema de coordenadas da imagem ([0, 1]^2).pointInView precisa ser normalizado para [0, 1]^2.Não disponível em dispositivos head-mounted.
public Optional<Vector2> ImageCoordinatesFromScreenCoordinates(Vector2 pointInView)
Parâmetros
pointInView
StartSession()
Inicia a sessão.SeAutoStart for true,será chamado automaticamente emMonoBehaviour.Start.
public void StartSession()
StopSession(bool)
Interrompe a sessão iniciada.Todas as atualizações de transform e renderização de imagem pararão.Você pode optar por manter a última imagem no quadro ao parar,mas só funciona quando o EasyAR controla a renderização da imagem(ineficaz para AR Foundation e dispositivos head-mounted,etc.).
public void StopSession(bool keepLastFrame)
Parâmetros
keepLastFrame
Eventos
AssembleUpdate
Evento de atualização doAssemble()da sessão.Este evento é acionado 1-2 vezes durante umAssemble()(se não chamado anteriormente,StartSession() chamará implicitamente).A primeira ocorre quando o Assemble é concluído.Se a atualização da lista de dispositivos estiver concluída no momento da conclusão do Assemble,não haverá uma segunda chamada;caso contrário,a segunda ocorrerá quando a atualização da lista de dispositivos for concluída.
public event Action<SessionReport.AvailabilityReport> AssembleUpdate
InputFrameUpdate
Evento de atualização do quadro de entrada,acionado apenas quando oInputFrame exibido pela sessão muda.Dispositivos head-mounted não recebem este evento,e se existir uma imagem de transparência,sua renderização é feita pelo dispositivo.
public event Action<InputFrame> InputFrameUpdate
PostSessionUpdate
Evento de conclusão da atualização da sessão,com frequência igual à deMonoBehaviour.Update(em dispositivos head-mounted,requer que o autor da extensão implemente corretamente).Quando este evento é acionado,todas as mudanças de transform controladas pelo EasyAR dentro desse quadro foram concluídas.
public event Action PostSessionUpdate
StateChanged
Evento de alteração doStateda sessão.
public event Action<ARSession.SessionState> StateChanged