Guia de desenvolvimento do Snapdragon Spaces (13)
-
-
- 6.3.3 Teste de acerto
- 6.3.4 Rastreamento de Imagens
- 6.3.5 Detecção de plano
- 6.3.6 Acesso à estrutura da câmera (experimental)
-
6.3.2.2 Interação de rastreamento manual
Esta seção descreve os diferentes atores e componentes necessários para interagir com o rastreamento manual.
AVISO
A interação de rastreamento manual é usada não apenas na amostra de rastreamento manual, mas em todas as amostras do projeto. Isso permite que os usuários interajam com personagens widget e personagens 3D que podem interagir com rastreamento manual.
6.3.2.2.1 Função de gerenciador de entrada de gestos espaciais
Esta é uma função muito importante a ser usada em interações de rastreamento manual. Para definir o rastreamento manual como modo de entrada, este caractere precisa ser adicionado ao nível. Recomenda-se usar o nó Spawn Actor da classe para gerar este personagem.
Aviso
Certifique-se de verificar se o rastreamento manual está disponível antes de adicionar ou gerar este personagem em um nível.
O ator Control Gesture Input Manager é responsável por ouvir gestos em tempo real e relatar ações com base nesses gestos usando delegados. Ele gera e segura ASpacesHandInteraction
dois participantes da turma, um para cada mão, necessária para realizar a interação. As seções a seguir listam as diferentes variáveis e funções que podem ser acessadas e usadas nesta classe.
6.3.2.2.1.1 Variáveis
FOnSpacesHandPinch OnSpacesHandPinchLeft
EFOnSpacesHandPinch OnSpacesHandPinchRight
: dispara o delegado para notificar o estado do gesto de pinça.FOnSpacesHandOpen OnSpacesHandOpenLeft
eFOnSpacesHandOpen OnSpacesHandOpenRight
: Dispara o delegado para ser notificado sobre o estado do gesto de pinça.FOnSpacesHandGrab OnSpacesHandGrabLeft
ANDFOnSpacesHandGrab OnSpacesHandGrabRight
: Dispara o delegado para notificar o estado do gesto Grab.FOnSpacesHandInteractionStatusUpdated OnSpacesHandInteractionStatusUpdated
: um delegado acionado quando o estado de interação manual é atualizado, ele notifica o estado com um valor booleano.TSubclassOf < ASpacesHandInteraction > HandInteractionClass
:空间手部交互角色
uma subclasse gerada como um caractere de interação manual.FVector LeftRayPositionOffset
eFVector RightRayPositionOffset
: deslocamentos de luz para dois personagens que interagem com as mãos.float RayDistance
: A distância da luz entre os dois personagens que interagem com as mãos.
6.3.2.2.1.2 Funções
ASpacesHandInteraction* GetHandLeftInteraction() const
eASpacesHandInteraction* GetHandRightInteraction() const
: Usado para obter caracteres de interação manual.void SetHandInteractionState(bool active)
: Usada para ativar ou desativar a interação manual, esta função afetará todos os sistemas de interação manual. A interação manual está desativada por padrão.void GetHandInteractionState() const
: Retorna o estado do sistema de interação manual.
DICA
ConsulteBP_HandTrackingControllerComponent
(em SnapdragonSpacesSamples Content > SnapdragonSpaces > Common > Core > Components) para aprender como usar gestos de controle para entrar na função de gerente.
6.3.2.2.2 Caractere de interação espacial das mãos
Spaces Hand Interaction
Os personagens são responsáveis por interagir com os diferentes elementos interativos manuais presentes no nível, como widgets 3D e outros tipos de personagens. Personagens de interação com as mãos espaciais incluem interações com mãos distantes (que realizam raycasts em elementos da cena) e interações com mãos próximas (que são ativadas quando uma mão é tocada em um personagem interativo). Os caracteres de interação espacial da mão serão representados por um raio que começará na mão especificada pelo usuário. Este raio é sempre visível, a menos que seja usada interação próxima. As luzes têm dois modos de interação: ativo (quando o raio atinge qualquer personagem interativo com as mãos na cena) ou inativo. A cor e o comprimento da luz mudarão de acordo com esses dois modos. Para interagir com a IU, use a interação remota e gestos de pinça.
DICA
No projeto de amostra Snapdragon Spaces para Unreal Engine,手势输入管理器
são gerados dois tipos de atores空间手部交互
, um para cada mão, o que significa que手势输入管理器
basta adicioná-los à cena.
As seguintes variáveis e funções podem ser usadas para personalizar o caractere Spatial Hand Interaction.
6.3.2.2.2.1 Variáveis
float LerpFactor
: Ajusta a velocidade de translação e rotação do personagem.float LerpFactor
: Ajusta a velocidade de escala do personagem.floatMinimumScaleFactor
: O fator de escala mínimo que pode ser aplicado ao personagem.float MaximumScaleFactor
: O fator de escala máximo que pode ser aplicado ao personagem.bool bApplyTranslation
: Indica se o caractere deve ser traduzido.bool bApplyRotation
: Indica se o personagem deve ser girado.bool bApplyScale
: Indica se o caractere deve ser dimensionado.FOnSpacesHandInteractableStateChanged OnSpacesHandInteractableStateChanged
: O delegado/despachante que comunica o estado da interação manual por meio do ator, usandoESpacesHandInteractableState
a enumeração para retornar o estado (veja como essa enumeração funciona no exemplo de código abaixo).
UENUM(BlueprintType, Category = "Snapdragon Spaces Hand Interaction")
enum class ESpacesHandInteractableState : uint8
{
Focused = 0,
Grabbed = 1,
UnFocused = 2
};
Um exemplo de uso deste componente está localizado BP_SpacesHandInteractableCube
no Blueprint Actor, na pasta de plug-ins SnapdragonSpacesSamples Content > SnapdragonSpaces > Samples > HandTracking > Placeable > InteractableObjects.
6.3.2.2.3 Componentes de Volume de Captura Espacial
O componente Spaces Snapping Volume é herdado do componente Unreal Engine Box(abre uma nova janela). É usado principalmente para SpacesHandInteraction
ajustar a extremidade do raio de um caractere a uma posição desejada dentro de outro caractere. Isso é especialmente útil para componentes de widget 3D interativos, como botões, caixas de seleção ou controles deslizantes, mas pode ser usado com qualquer tipo de personagem 3D. Este componente pode ser adicionado dentro do personagem e deve ser colocado manualmente onde desejar, por exemplo, em cima de um botão em um widget 3D, conforme imagem abaixo.
Aviso
Ao usar este componente com UI, é importante seguir as seguintes diretrizes:
- A posição e o tamanho da caixa devem corresponder ao formato do componente do widget 3D, caso contrário, poderão aparecer efeitos indesejados, como cintilação ao emitir raios fora do caractere do widget 3D.
- A orientação do eixo X do componente deve corresponder à orientação do componente do widget 3D. Isso é necessário para interagir adequadamente com os componentes do widget.
Para personalizar o comportamento deste componente, diferentes variáveis e funções estão disponíveis.
6.3.2.2.3.1 Variáveis
bool bSnap
: determina se o componente será usado para ajuste. Um cenário possível para usar este componente sem o ajuste ativado é um controle deslizante de widget 3D. Neste caso, não é possível encaixar a extremidade do raio na alça do controle deslizante, mas a visualização do raio na mão é necessária para a experiência do usuário.bool bIsUI
: esta opção deve ser habilitada quando o componente for usado para interação do componente UI do widget 3D. Ele pode ser desativado para uso por qualquer outro participante.bool bIsDisabled
: determina se a colisão de componentes está ativa desde o início. Por padrão, será falso.
6.3.2.2.3.1 Funções
void SetCollisionDisabledState(bool disabled)
: usado para definir o valor de bIsDisabled.void UpdateCollisionStatus(bool active)
: atualize o estado de colisão do componente. Se bIsDisabled for verdadeiro, as colisões serão desabilitadas independentemente dos valores de entrada da função.
6.3.2.2.4 O papel da caixa de interação remota espacial
BP_SpacesDistalInteractionBox
Permite girar e dimensionar os participantes usando interação remota. Para utilizá-lo, ele deve ser adicionado como um componente sub-Ator dentro do Ator para manipulação. Encontrado em SnapdragonSpaces Content > Hand Tracking > Actors BP_SpacesDistalInteractionBox
. BP_PandaInteractable
Para ver um exemplo de como adicionar um BP_SpacesDistalInteractionBox a outro ator, consulte Atores localizados em SnapdragonSpacesSamples Content > Snapdragon Spaces > Samples > HandTracking > Placeable > InteractableObjects . A Caixa de Interação Remota consiste em diferentes Spaces Distal Manipulator Actor
instâncias, cada uma das quais pode ser chamada de "ponto de manipulação". Spaces Distal Manipulator Actor
Existem dois tipos diferentes, nomeadamente Spaces Distal Scale Point
e Spaces Distal Rotation Point
. Dependendo da peça na caixa, o ponto de ação se comportará de maneira diferente. Os pontos de manipulação na borda da caixa servem para alterar a escala do personagem, os demais pontos de manipulação realizarão diferentes rotações e dependendo de sua posição na caixa estarão no plano X, Y ou Z. Use gestos de pinça para interagir com a caixa de interação.
6.3.3 Teste de acerto
6.3.3.1 Exemplo de teste de acerto
Este exemplo demonstra como atingir pontos de teste e aviões encontrados no mundo real. Para obter informações básicas sobre testes de acerto e 跟踪对象 3D
os recursos do nó Wire Tracing do Unreal Engine (foto abaixo), consulte a documentação do Unreal Engine (abre em uma nova janela). Para usar este recurso, ele deve ser habilitado nas configurações do plugin OpenXR em Configurações do projeto > Plugin Snapdragon Spaces. Além disso, 平面检测
o recurso deve estar habilitado para que o teste de acerto funcione corretamente. Para acertos mais precisos, ative a opção Usar detecção de casco convexoAR 会话配置
do recurso Detecção de plano em
6.3.3.1.1 Como funciona o exemplo
Quando a amostra é aberta, o gizmo está sempre na frente do usuário e cada atualização inicia o raycast. Se retornar um resultado de acerto bem-sucedido, o gizmo se moverá para a pose de acerto e será exibido em ciano, amarelo e magenta. Se nenhum acerto for detectado, o gadget se moverá um metro à frente da pose da cabeça e ficará vermelho.
6.3.3.1.2 Gerenciador de hits
A amostra usa BP_HitManager
o ativo Blueprint (encontrado em SnapdragonSpacesSamples Content > SnapdragonSpaces > Samples > HitTesting > Placeable) para lidar com testes de acerto no mapa de amostra. Para ativar e desativar o teste de acerto, Toggle Spaces Feature
o método deve ser usado com o teste de acerto como uma função. Os desenvolvedores têm várias opções para personalizar os raios usados nos testes de acerto:
- Distância Ray Cast : O comprimento do raio.
- GizmoTag :
BP_Pawn
o nome da tag definida no SceneComponent para posicionamento (também chamado de gizmo branco no exemplo). - Distância Gizmo : A distância da pose da cabeça até o objeto colocado.
6.3.4 Rastreamento de Imagens
6.3.4.1 Exemplo de rastreamento de imagem
Este exemplo demonstra como detectar e aumentar objetos de imagem encontrados no mundo real.
Para obter informações básicas sobre como personalizar atualizações de objetos rastreáveis e a funcionalidade dos componentes do Unreal Engine AR Trackable Notify
, consulte a documentação do Unreal Engine (abre uma nova janela). Para usar este recurso, ele deve ser habilitado nas configurações do plugin OpenXR em Configurações do projeto > Plugin Snapdragon Spaces.
6.3.4.1.1 Como funciona o exemplo
Por padrão, quando o exemplo é executado e reconhece uma imagem, ele gera um gizmo no destino físico. Atualmente, o exemplo reconhece apenas uma imagem e exibe sua posição mundial em um painel de IU incluído no mapa.
6.3.4.1.2 Gerenciador de AR de imagem
BP_ImageTrackingManager
O ativo Blueprint (localizado em SnapdragonSpacesSamples Content > SnapdragonSpaces > Samples > ImageTracking > Placeable) lida com BP_Gizmo_AugmentedImage
a criação e destruição de personagens por meio do sistema de eventos. Ele vincula eventos do componente AR Trackable Notify (abre uma nova janela) para reagir às alterações na imagem do AR Trackable. Quando o sistema detecta uma imagem, ele chama eventos de adição/atualização/exclusão de imagem de rastreamento . No exemplo do Blueprint, isso Toggle AR Capture
deve ser definido como ON se a detecção for iniciada e OFF se for parar a detecção de objetos e destruir todas as imagens AR geradas . Pode ser usado como uma alternativa para ativar esse recurso. Além disso, Scene Understanding deve ser definido como o tipo de captura para este nó.Toggle AR Capture
切换空间功能
6.3.4.1.3 Configuração da sessão de AR de imagem
O sistema começa D_SpacesSessionConfig_ImageTracking
a detectar imagens usando o recurso (encontrado em SnapdragonSpacesSamples Content > SnapdragonSpaces > Samples > ImageTracking > Core). Este recurso é SpacesSessionConfig
um recurso de dados derivado da classe.
Um arquivo de configuração de sessão fornece três campos: um para definir o tamanho da imagem, um para especificar o número máximo de imagens simultâneas que devem ser rastreadas e um para fazer referência a imagens candidatas a serem rastreadas.
A criação do rastreador de imagens ocorre em um thread assíncrono para evitar problemas de congelamento quando o número de imagens a serem rastreadas é muito grande. Portanto, às vezes o rastreamento de imagem pode demorar para ser iniciado. Ouça os On Spaces Image Tracking Is Ready
eventos delegados para determinar quando as imagens podem começar a ser rastreadas.
6.3.4.1.4 Imagens candidatas de AR
O Unreal Engine usa um tipo de ativo especializado chamado AR Candidate Image (abre uma nova janela). Cria uma referência à imagem que o sistema XR deve rastrear. Os desenvolvedores podem adicionar quantos quiserem AR 候选图像
e atribuí-los ao AR 会话配置
array indicado em .
Para criar AR 候选图像
, a imagem a ser rastreada deve primeiro ser importada para o projeto da pasta Conteúdo como um ativo de textura. O recurso de textura criado deve definir UserInterface2D (RGBA) nas configurações de compactação, e é recomendado desligar o mapa mip.
DICA
Você pode encontrar as imagens de referência usadas na seção Destinos de imagem para teste
A próxima etapa é criar AR 候选图像
o recurso, e o campo de textura candidato faz referência ao recurso de textura criado. Cada um AR 候选图像
deve ter um identificador exclusivo que pode ser definido no campo de nome amigável . Caso contrário, AR 会话配置
qualquer nome idêntico em candidatos diferentes usados no mesmo causará uma colisão de código hash.
A etapa final é definir as dimensões físicas da imagem em centímetros através dos campos largura/altura . Medições adequadas são críticas para a estimativa correta da pose e posterior colocação do aumento. Estes dados são preenchidos automaticamente levando em consideração a escala da imagem seguindo a orientação definida no campo “Orientação”. Infelizmente, a orientação atual do Unreal Engine está invertida, então os desenvolvedores devem usar paisagem para imagens em retrato e retrato para imagens em paisagem .
O plug-in Snapdragon Spaces pode escolher entre AR 候选图像
diferentes modos de rastreamento se o pai do ativo for uma imagem candidata a AR do Spaces.
- Modo dinâmico : atualiza a posição da imagem rastreada a cada quadro, adequado para alvos móveis e estáticos. Se nenhuma imagem rastreada for encontrada, nenhuma posição ou pose será informada. Usado por padrão.
- Modo adaptativo : Atualize a posição das imagens estáticas periodicamente (aproximadamente a cada 5 quadros) se elas se moverem ligeiramente. Isso atinge um equilíbrio entre o consumo de energia e a precisão das imagens estáticas.
- Modo Still : Bom para rastrear imagens que são conhecidas por estarem estáticas. As imagens rastreadas neste modo são fixadas em posição quando detectadas pela primeira vez e nunca são atualizadas. Isto reduz o consumo de energia e melhora o desempenho, mas se houver algum desvio na imagem rastreada, sua posição não será atualizada.
O modo de rastreamento pode ser alterado enquanto o aplicativo está em execução sem parar ou reiniciar a sessão AR usando os seguintes nós:
- Defina o modo de rastreamento de alvo de imagem por nome amigável.
- Defina o modo de rastreamento de alvo de imagem por imagem candidata.
- Defina o modo de rastreamento de alvos de imagem por nome amigável.
- Defina o modo de rastreamento de alvos de imagem por imagem candidata.
SetImageTrackedModeByID
Obsoleto na versão 0.15.0.
Este exemplo usa D_SpacesARCandidateImage_SpaceTown
o ativo Blueprint (localizado em SnapdragonSpacesSamples Content > SnapdragonSpaces > Samples > ImageTracking > Placeable). Os alvos de imagem são medidos a 26 cm de altura (quando impressos em DIN A4 ou carta US). BP_Gizmo_AugmentedImage
O ativo do blueprint (localizado em SnapdragonSpacesSamples Content > SnapdragonSpaces > Samples > ImageTracking > Placeable) está renderizando um gizmo na parte superior do alvo da imagem física que indica sua orientação quando reconhecido e rastreado.
6.3.5 Detecção de plano
6.3.5.1 Exemplo de detecção de plano
Este exemplo demonstra como visualizar planos de rastreamento encontrados no mundo real. Para obter informações básicas sobre como personalizar atualizações de objetos rastreáveis e a funcionalidade dos componentes do Unreal Engine AR Trackable Notify
, consulte a documentação do Unreal Engine (abre uma nova janela).
6.3.5.1.1 Como funciona o exemplo
Por padrão, quando o exemplo é aberto, ele gera formas simples para os planos detectados. Quando a opção Usar detecção de casco convexo está habilitada, a amostra gera formas complexas usando o casco convexo dos planos detectados.
Wireframes dessas geometrias também podem ser exibidos.
6.3.5.1.2 Gerenciador de AR plano
BP_PlaneARManager
O arquivo Blueprint (localizado em SnapdragonSpacesSamples Content > SnapdragonSpaces > Samples > PlaneDetection > Placeable) centraliza a criação e destruição de planos como operações de geometria aumentada por meio do sistema de eventos. Este Blueprint vincula eventos do componente AR Trackable Notify (abre uma nova janela) para reagir às alterações no AR Trackable Plane. Os seguintes eventos estão relacionados à detecção de avião:
- Adicionar/Atualizar/Remover Planos de Rastreamento : Esses eventos são chamados quando o sistema usa geometria plana simples.
- Adicionar/atualizar/remover geometria rastreada : esses eventos são chamados quando o sistema usa geometria plana complexa.
- Ao contrário de outros casos, diferentes tipos de objetos podem ser registrados como arquivos
UARTrackedGeometry
. Para verificar se é convexo, sua classificação de objeto deve serEARObjectClassification::NotApplicable
. Por favor, useGetObjectClassification
a função para confirmar.
- Ao contrário de outros casos, diferentes tipos de objetos podem ser registrados como arquivos
AVISO
Lembre-se de alterar o estado de ToggleARCapture para reiniciar a detecção, selecione ON quando o comportamento do personagem começar, pare a detecção e OFF quando terminar , para destruir toda a geometria AR gerada.
6.3.5.1.3 Configuração complexa de sessão AR
Quando o usuário habilita a opção Convexo, o sistema começa a usar D_ConvexHullSessionConfig
o recurso (localizado em SnapdragonSpacesSamples Content > SnapdragonSpaces > Samples > PlaneDetection > Core) para detectar planos complexos.
As opções relacionadas à detecção de avião são:
- Use detecção de casco convexo
- detecção de nível
- Detecção de plano vertical
6.3.5.1.4 Configurações de funções
平面检测
As configurações do recurso podem ser encontradas clicando no ícone de engrenagem próximo a um recurso nas configurações do projeto OpenXR .
- Use a compreensão da cena:
- Ativar ou desativar esta configuração produzirá resultados diferentes em termos da forma e do número de planos detectados.
- Ativar esta configuração permitirá
场景理解
a detecção de aviões. Isso utiliza了空间网格划分(实验)
a mesma técnica usada pelas funções.
Diferença entre detecção de plano padrão e detecção de plano baseada em compreensão de cena
medir | Padrões | compreensão da cena |
---|---|---|
Velocidade de detecção e primeira detecção | normal | rápido |
falso positivo | Taxa de falsos positivos muito baixa | propenso a falsos positivos |
Precisão do plano | alto | alto |
Número de aviões | cru | um monte de |
Atualizações e movimentos do avião | Estável, improvável de ser atualizado | Configuração de sessão de AR dinâmica com mais atualizações simples |
filtro de orientação plana | Opções de filtro horizontal e vertical | sem opções de filtro |
teste de acerto | Opera contra aviões conforme esperado | Teste de sucesso em grades |
6.3.6 Acesso à estrutura da câmera (experimental)
6.3.6.1 Exemplo de acesso ao quadro da câmera
AVISO
O recurso de acesso ao quadro da câmera está marcado como experimental porque as otimizações em plug-ins e serviços do Snapdragon Spaces estão atualmente quebrando a compatibilidade com versões anteriores.
Este exemplo demonstra como acessar informações relevantes da câmera, neste caso a imagem e os intrínsecos da câmera, de um dispositivo compatível. Atualmente esse recurso está limitado a câmeras RGB.
6.3.6.1.1 Como funciona o exemplo
Por padrão, quando o exemplo é executado, a IU exibe a imagem RGB capturada pelo dispositivo e os valores intrínsecos associados a ela. Os usuários podem pausar e retomar a captura de quadros com os botões correspondentes.
Caso o dispositivo não seja concedido 相机访问权限
, as informações da imagem, do botão e da câmera serão substituídas por uma mensagem de aviso avisando o usuário para ativá-lo.
6.3.6.1.1.1 Gerenciador de AR de acesso à estrutura da câmera
O exemplo usa BP_CameraFrameAccessARManager
o ativo Blueprint (localizado em SnapdragonSpacesSamples Content > SnapdragonSpaces > Samples > CameraFrameAccess > Placeable) para 切换 AR 捕获
iniciar e parar a captura da câmera, que deve ser definida como ON se a captura for iniciada e OFF se for interrompê-la. Além disso, Câmera deve ser definida como o tipo de captura para este nó. Este recurso oferece suporte SpacesSessionConfig
à configuração de qualquer recurso. Ele também pode ser ativado ou desativado usando o método Toggle Spaces Feature .
6.3.6.1.1.2 Biblioteca de captura de câmera
A interface Unreal AR nos oferece a capacidade de obter informações da câmera.
Get AR Texture
- Retorna o quadro da câmera. O plugin Snapdragon Spaces estende as informações para fornecer quadros RGB como texturas 2D. Transmita para
Spaces AR 相机图像纹理
a classe para obter a textura RGB do quadro . Além disso, a imagem da câmera deve ser definida como o tipo de textura para este nó. ,
- Retorna o quadro da câmera. O plugin Snapdragon Spaces estende as informações para fornecer quadros RGB como texturas 2D. Transmita para
Get Camera Intrinsics
- Retorna a resolução da imagem da câmera , a distância focal e o ponto principal .
O plugin Snapdragon Spaces fornece funcionalidades adicionais para ajudar a gerenciar a captura de câmera para Blueprints:
- Retorna a resolução da imagem da câmera , a distância focal e o ponto principal .
Set Camera Frame Access State
- Para pausar a captura da câmera, defina
Active
como FALSE . Para continuar capturando com a câmera,Active
defina como TRUE . Obsoleto na versão 0.15.0, use a funcionalidade Pause AR Session ou Pause Space .
- Para pausar a captura da câmera, defina
- O acesso ao quadro da câmera é compatível
- Retorna TRUE se a captura estiver disponível, FALSE caso contrário . Caso a aplicação utilize captura, é recomendado verificar esse resultado durante o Tick . Obsoleto na versão 0.15.0, use-o se o recurso estiver disponível .
DICA
O comportamento do exemploWBP_CameraFrameAccess
é implementado no ativo Blueprint (localizado em SnapdragonSpacesSamples Content > SnapdragonSpaces > Samples > CameraFrameAccess > UI).
6.3.6.2 Avançado
Esta seção descreve como acessar dados brutos do quadro da câmera YUV sem extraí-los da textura gerada. Também explica como obter dados extras que não estão acessíveis nos blueprints. Contém todos os tipos de dados e estruturas envolvidas neste procedimento, incluindo as funções disponíveis como USpacesRuntimeBlueprintLibrary
parte e incluídas no SpacesRuntimeBlueprintLibrary.h
.
Dica
Esses dados e funções só são acessíveis via C++.
6.3.6.2.1 Tipos de dados
ESpacesPlaneCameraFrameType
Enumeração que descreve o tipo de plano do quadro.
UENUM()
enum class ESpacesPlaneCameraFrameType : uint8
{
Y = 0,
U = 1,
V = 2,
UV = 3
};
ESpacesDistortionCameraFrameModel
Enum que descreve diferentes modelos de distorção de lente para calibração de câmera.
UENUM()
enum class ESpacesDistortionCameraFrameModel : uint8
{
Linear = 0,
Radial_2 = 1,
Radial_3 = 2,
Radial_6 = 3,
FishEye_1 = 4,
FishEye_4 = 5
};
ESpacesCameraFrameFormat
Enum que descreve os diferentes formatos de frames de câmera.
UENUM()
enum class ESpacesCameraFrameFormat : uint8
{
Unknown = 0,
Yuv420_NV12 = 1,
Yuv420_NV21 = 2,
Mjpeg = 3,
Size = 4,
};
FFrameDataOffset
Estrutura que descreve o deslocamento dos dados da imagem do sensor nos dados do framebuffer.
USTRUCT()
struct FFrameDataOffset
{
GENERATED_BODY()
int32 X;
int32 Y;
};
FSpacesPlaneCameraFrameData
Uma estrutura que descreve um plano em um framebuffer.
USTRUCT()
struct FSpacesPlaneCameraFrameData
{
GENERATED_BODY()
uint32 PlaneOffset;
uint32 PlaneStride;
ESpacesPlaneCameraFrameType PlaneType;
};
PlaneOffset
Contém o deslocamento do início do buffer até o início dos dados simples.PlaneStride
Indica a distância em bytes de uma linha para a próxima.PlaneType
Descreve o tipo de dados do quadro.
FSpacesSensorCameraFrameData
Estrutura contendo dados intrínsecos estendidos da câmera.
USTRUCT()
struct FSpacesSensorCameraFrameData
{
GENERATED_BODY()
FARCameraIntrinsics SensorCameraIntrinsics;
FFrameDataOffset SensorImageOffset;
TArray<float> SensorRadialDistortion;
TArray<float> SensorTangentialDistortion;
ESpacesDistortionCameraFrameModel DistortionCameraFrameModel;
};
SensorCameraIntrinsics
Contém a resolução da imagem da câmera, o ponto principal e a distância focal.SensorImageOffset
é o deslocamento dos dados da imagem do sensor nos dados do framebuffer.SensorRadialDistortion
Uma série de flutuadores que descrevem os coeficientes de distorção radial.SensorTangentialDistortion
Uma matriz de números de ponto flutuante que descreve os coeficientes de distorção tangencial.DistortionCameraFrameModel
Descreve um modelo de distorção de lente para calibração de câmera.
FSpacesCameraFrameData
A estrutura contém dados de quadro e dados de câmera.
USTRUCT()
struct FSpacesCameraFrameData
{
GENERATED_BODY()
uint32 BufferSize;
uint8* Buffer;
ESpacesCameraFrameFormat FrameFormat;
TArray<FSpacesPlaneCameraFrameData> Planes;
FSpacesSensorCameraFrameData SensorData;
};
BufferSize
é o tamanho do buffer que contém os dados.Buffer
é um ponteiro para os dados do quadro.FrameFormat
é o formato do quadro da câmera.Planes
é uma matriz contendo os planos do quadro.SensorData
Dados intrínsecos estendidos contendo a câmera que capturou o quadro.
6.3.6.2.2 Funções
static FSpacesCameraFrameData GetCameraYUVFrameData()
: acesse e retorne os dados mais recentes do quadro da câmera no formato FSpacesCameraFrameData.static bool ReleaseCameraFrameData()
: libera um quadro acessado anteriormente. Deve ser utilizado após os dados do quadro anterior para acessar outro quadro.