$$\rightleftharpoonup{xx}$$
$$\longleftharp{xx}$$,
$$\longrightharp{xx}$$,
O primeiro requisito para o método proposto é um sistema para rastrear com precisão a posição de objetos 3D e mãos. A configuração específica é mostrada na Figura 1A e utiliza hardware e software produzidos pela empresa de captura de movimento Qualisys. Posicionamos uma bancada de trabalho dentro de um volume de rastreamento (100 cm x 100 cm x 100 cm), que é fotografado de vários ângulos por oito câmeras de rastreamento e seis câmeras de vídeo dispostas em um quadro cúbico ao redor do espaço de trabalho. As câmeras de rastreamento rastreiam a posição 3D dos marcadores reflexivos dentro do volume de rastreamento a 180 quadros / s e com resolução espacial 3D submilimétrica. Empregamos marcadores refletivos de 4 mm, que são fixados aos objetos e às mãos usando fita adesiva dupla face amigável para a pele. As posições do marcador 3D são processadas pelo software de captura de movimento. A seção de discussão também revisa sistemas alternativos de captura de movimento que poderiam ser empregados com o método proposto.
Para obter reconstruções 3D precisas de objetos reais sendo apreendidos e manipulados, propomos duas opções. A primeira, que é a adotada aqui, é partir de um modelo de objeto 3D virtual na forma de uma malha poligonal. Tais modelos 3D podem ser construídos usando software apropriado (por exemplo, Blender 3D44) e, em seguida, impressos em 3D (Figura 1B). A segunda opção é pegar um objeto 3D real existente e usar a tecnologia de digitalização 3D para construir uma réplica de modelo de malha do objeto. Seja qual for a estratégia, o objetivo final é obter um objeto 3D real e o modelo de malha de objeto 3D virtual correspondente. Vale ressaltar que a abordagem descrita aqui funciona apenas com objetos rígidos (ou seja, não deformáveis).
Uma vez que a superfície 3D de um objeto esteja disponível como um modelo de malha, sua posição deve ser rastreada e co-registrada (Figura 1C). Para fazer isso, quatro marcadores reflexivos não planares são anexados à superfície do objeto real, e o objeto é colocado dentro do volume de rastreamento. As posições 3D dos marcadores de objeto são então brevemente capturadas. Essa captura é usada para estabelecer a correspondência entre os quatro marcadores e os quatro vértices do modelo de malha de objetos. Isso é feito usando uma rota de software ad hoc simples escrita na API Python do Blender. Dentro do Viewport do Blender, o programa apresenta o objeto virtual juntamente com as posições do marcador que são representadas como um único objeto de malha composto por uma esfera para cada marcador. O usuário pode então girar e traduzir o objeto e/ou os marcadores para alinhá-los de modo que eles co-alinhem com os marcadores reais colocados no objeto real. O programa registrará as rotações e translações que são aplicadas para calcular uma única roto-tradução que é finalmente aplicada à malha de objeto original, fornecendo uma malha de objeto que é co-registrada com a definição de corpo rígido no QTM.
Tendo a correspondência estabelecida, sempre que o objeto real é movido dentro do volume de rastreamento, o objeto virtual pode ser colocado na nova posição calculando a roto-tradução entre os marcadores rastreados e os quatro vértices de malha correspondentes. Para registrar a dinâmica da preensão, um total de 24 marcadores reflexivos esféricos são fixados em diferentes pontos da mão usando fita dupla face (Figura 1D e Figura 2).
No início de uma tentativa (Figura 1E), o participante coloca a mão apoiada na bancada com a palma da mão voltada para baixo e fecha os olhos. O experimentador coloca um objeto alvo na bancada de trabalho na frente do participante. Em seguida, uma pista auditiva sinaliza para que o participante abra os olhos e execute a preensão. Em nossas demonstrações, a tarefa é alcançar e agarrar o objeto alvo, erguê-lo verticalmente por aproximadamente 10 cm, colocá-lo para baixo e retornar a mão à sua posição inicial. Um script escrito em Python 3.7 controla o experimento. Em cada teste, o script seleciona e comunica as configurações de condição atuais ao experimentador (por exemplo, identidade e posicionamento do objeto). O roteiro também controla o tempo do teste, incluindo pistas auditivas e o início e a parada das gravações de captura de movimento.
Os membros não são caracterizados apenas por sua posição no espaço 3D, mas também por sua pose. Assim, para obter uma reconstrução 3D completa de uma mão humana executando uma preensão real, precisamos não apenas das posições de cada articulação no espaço 3D, mas também da posição relativa (translação e rotação) de cada articulação em relação à sua articulação pai (Figura 1F). As posições e orientações das articulações esqueléticas podem ser inferidas a partir das posições dos marcadores usando cinemática inversa. Para isso, aqui empregamos o solucionador de esqueleto fornecido pelo software QTM. Para que o solucionador funcione, devemos primeiro fornecer uma definição de esqueleto que ligue a posição e a orientação de cada articulação a várias posições de marcador. Uma definição de esqueleto é, portanto, construída, e a plataforma de esqueleto é ligada aos dados do marcador usando o plugin QTM Connect para Maya. Criamos definições de esqueleto personalizadas para cada participante para maximizar a precisão dos ajustes do esqueleto aos dados do marcador. Para cada participante, ajustamos manualmente um esqueleto de mão a um único quadro de dados de captura de movimento. Tendo obtido uma definição de esqueleto específica do participante, executamos o solucionador de esqueleto para estimar as poses da articulação esquelética para cada quadro de cada ensaio no experimento.
Para cada quadro de cada ensaio em um experimento, geramos uma malha manual que reconstrói a pose atual da mão usando a ferramenta de geração de malha manual de código aberto e pré-treinada, DeepHandMesh28 (Figura 1G). DeepHandMesh é uma rede codificadora-decodificadora profunda que gera malhas manuais personalizadas a partir de imagens. Primeiro, o codificador estima a pose de uma mão dentro de uma imagem (ou seja, os ângulos de Euler conjuntos). Em seguida, a pose de mão estimada e um vetor de identificação personalizado são inseridos no decodificador, que estima um conjunto de três corretivos aditivos para uma malha de modelo manipulada. Finalmente, a malha do molde é deformada de acordo com a postura estimada da mão e corretivos usando esfolamento de mistura linear. O primeiro corretivo é um corretivo de esqueleto dependente de ID através do qual a plataforma esquelética é ajustada para incorporar as posições conjuntas específicas da pessoa. Os outros dois corretivos são corretivos de malha através dos quais os vértices de malha são ajustados para melhor representar a superfície da mão do participante. Um dos corretivos de malha é um corretivo de malha dependente de ID que responde pela estrutura de superfície da mão de um participante individual. O corretivo de malha final é um corretivo de vértice dependente da pose que explica as deformações da superfície da mão devido à atual postura da mão.
O DeepHandMesh é treinado usando supervisão fraca com pontos-chave de articulação 2D e mapas de profundidade de cena. Aqui, usamos apenas o decodificador DeepHandMesh pré-treinado para gerar reconstruções de malha manual, modificadas das seguintes maneiras (Figura 3). Primeiro, como a rede não é treinada em participantes específicos, o corretivo genérico de malha dependente de ID fornecido com o modelo pré-treinado é empregado (Figura 3A). Além disso, o corretivo de esqueleto dependente de ID é derivado usando o solucionador de esqueleto QTM conforme descrito acima (Figura 3B). Assume-se a escala proporcional da mão com o comprimento do esqueleto, e a espessura da malha é uniformemente dimensionada por um fator derivado da escala relativa do esqueleto de modo que a tela se aproxime melhor do tamanho da mão do participante (Figura 3C). Esta malha modificada é introduzida no descodificador, juntamente com a posição atual da mão (derivada dos dados do marcador) e a posição e orientação 3D do pulso. O decodificador, portanto, calcula o corretivo dependente da pose atual, aplica todos os corretivos e roto-traduções, e produz uma reconstrução de malha manual 3D da pose de mão atual no mesmo quadro de coordenadas que a malha de objeto rastreado 3D (Figura 3D).

Figura 3: Modificações no decodificador DeepHandMesh pré-treinado . (A) Corretivo de malha fixo, genérico dependente de ID. (B) Corretivo de esqueleto dependente de ID derivado através de cinemática inversa na etapa 10. (C) O tamanho da malha manual é dimensionado pelo mesmo fator que as articulações esqueléticas. (D) Reconstrução final em malha manual 3D da atual postura da mão. Clique aqui para ver uma versão maior desta figura.
Tendo reconstruído modelos de malha 3D tanto para a mão de um participante quanto para um objeto agarrado, as regiões de contato mão-objeto podem ser estimadas calculando-se a intersecção entre as malhas da mão e do objeto (Figura 1H). A suposição por trás disso é que a mão real é deformada pelo contato com a superfície, o que significa que o esqueleto pode se aproximar mais da superfície do que seria possível se a mão fosse rígida, o que permite que partes da malha da mão passem pela malha do objeto. Como resultado, as áreas de contato podem ser aproximadas como as regiões de sobreposição entre as duas malhas.
Especificamente, para calcular essas regiões de sobreposição, definimos vértices de malha de objeto que estão contidos no volume 3D da malha da mão como estando em contato com a mão. Esses vértices são identificados usando uma abordagem padrão de raytracing45. Para cada vértice da malha do objeto, um raio é lançado desse vértice para um ponto 3D arbitrário fora da malha manual. Em seguida, avaliamos o número de interseções que ocorrem entre o raio fundido e os triângulos que compõem a superfície da mão. Se o número de interseções for ímpar, o vértice do objeto estará contido dentro da malha manual. Se o número de interseções for par, o vértice do objeto estará fora da malha manual. As regiões de contato na superfície do objeto podem, assim, ser aproximadas como o conjunto de faces triangulares cujos vértices estão todos contidos na malha manual. Podemos aplicar o mesmo raciocínio aos vértices da malha manual contidos no volume 3D da malha do objeto para estimar as regiões de contato na superfície da mão. Notavelmente, abordagens mais avançadas para operações de malha booleana também poderiam ser usadas31.
O vídeo 1 mostra um vídeo de uma mão, pontos rastreados e malha co-registrada, todos se movendo lado a lado durante uma única pegada para uma estatueta de gato impressa em 3D. Em vez disso, a Figura 4A mostra um único quadro no momento do contato mão-objeto de uma pega para um croissant impresso em 3D, juntamente com as reconstruções de malha mão-objeto (Figura 4B) e as regiões de contato estimadas na superfície do croissant (Figura 4C).

Figura 4: Regiões estimadas de contato mão-objeto. (A) Mão rastreada e objeto visualizado de uma das câmeras de rastreamento durante uma pegada. (B) Malha manual reconstruída e malha de objeto rastreada renderizada do mesmo ponto de vista da câmera de rastreamento. (C) Regiões de contato na superfície do objeto vistas de múltiplos pontos de vista. Clique aqui para ver uma versão maior desta figura.
Vídeo 1: Reconstruções de malha da mão e do objeto. Animação Gif da mão, marcadores rastreados e reconstruções de malha de mão e objeto durante uma única pegada vista do mesmo ponto de vista da câmera. Clique aqui para baixar este vídeo.