$$\rightleftharpoonup{xx}$$
$$\longleftharp{xx}$$,
$$\longrightharp{xx}$$,
De eerste vereiste voor de voorgestelde methode is een systeem om de positie van 3D-objecten en handen nauwkeurig te volgen. De specifieke opstelling is weergegeven in figuur 1A en maakt gebruik van hardware en software geproduceerd door het motion capture-bedrijf Qualisys. We plaatsen een werkbank binnen een volgvolume (100 cm x 100 cm x 100 cm), dat vanuit meerdere hoeken wordt afgebeeld door acht trackingcamera's en zes videocamera's die zijn gerangschikt op een kubusvormig frame rond de werkruimte. De trackingcamera's volgen de 3D-positie van de reflecterende markeringen binnen het trackingvolume met 180 frames / s en met sub-millimeter 3D-ruimtelijke resolutie. We maken gebruik van 4 mm reflecterende markers, die met huidvriendelijk dubbelzijdig plakband aan de objecten en handen worden bevestigd. De 3D-markeringsposities worden verwerkt door de motion capture-software. De discussiesectie bespreekt ook alternatieve motion capture-systemen die met de voorgestelde methode kunnen worden gebruikt.
Om nauwkeurige 3D-reconstructies te verkrijgen van echte objecten die worden gegrepen en gemanipuleerd, stellen we twee opties voor. De eerste, die hier wordt gebruikt, is om te beginnen met een virtueel 3D-objectmodel in de vorm van een polygoonnet. Dergelijke 3D-modellen kunnen worden geconstrueerd met behulp van geschikte software (bijv. Blender 3D44) en vervolgens 3D-geprint (figuur 1B). De tweede optie is om een bestaand, echt 3D-object te nemen en 3D-scantechnologie te gebruiken om een mesh-modelreplica van het object te maken. Wat de strategie ook is, het einddoel is om zowel een echt 3D-object als het bijbehorende virtuele 3D-objectmesh-model te verkrijgen. Van belang is dat de hier beschreven aanpak alleen werkt met stijve (d.w.z. niet-vervormbare) objecten.
Zodra het 3D-oppervlak van een object beschikbaar is als een netmodel, moet de positie ervan worden gevolgd en mede worden geregistreerd (figuur 1C). Om dit te doen, worden vier niet-vlakke reflecterende markeringen bevestigd aan het oppervlak van het echte object en wordt het object binnen het trackingvolume geplaatst. De 3D-posities van de objectmarkeringen worden vervolgens kort vastgelegd. Deze opname wordt gebruikt om de overeenstemming tussen de vier markeringen en vier hoekpunten van het objectnetmodel vast te stellen. Dit wordt gedaan met behulp van een eenvoudige ad hoc softwareroute geschreven in Blender's Python API. Binnen Blender's Viewport presenteert het programma het virtuele object samen met de markeringsposities die worden weergegeven als een enkel mesh-object dat bestaat uit één bol voor elke marker. De gebruiker kan vervolgens het object en/of de markeringen roteren en vertalen om ze zo uit te lijnen dat ze samen worden uitgelijnd met de echte markeringen die op het echte object zijn geplaatst. Het programma registreert de rotaties en translatie die worden toegepast om een enkele roto-translatie te berekenen die uiteindelijk wordt toegepast op het oorspronkelijke objectgaas, waardoor een objectgaas wordt verkregen dat samen met de rigide lichaamsdefinitie in QTM is geregistreerd.
Na het tot stand brengen van correspondentie, wanneer het echte object binnen het volgvolume wordt verplaatst, kan het virtuele object in de nieuwe positie worden geplaatst door de roto-translatie tussen de gevolgde markeringen en de vier overeenkomstige nethoekpunten te berekenen. Om de dynamiek van de greep vast te leggen, zijn in totaal 24 bolvormige reflecterende markeringen bevestigd op verschillende oriëntatiepunten van de hand met behulp van dubbelzijdige tape (figuur 1D en figuur 2).
Aan het begin van een proef (figuur 1E) legt een deelnemer zijn hand plat op de werkbank met de handpalm naar beneden gericht en sluit zijn ogen. De experimentator plaatst een doelobject op de werkbank voor de deelnemer. Vervolgens geeft een auditieve cue een signaal aan de deelnemer om zijn ogen te openen en de greep uit te voeren. In onze demonstraties is het de taak om het doelobject te bereiken en vast te pakken, het verticaal met ongeveer 10 cm op te tillen, neer te zetten en de hand terug te brengen naar zijn beginpositie. Een script geschreven in Python 3.7 bestuurt het experiment. Bij elke proef selecteert en communiceert het script de huidige conditie-instellingen aan de experimentator (bijvoorbeeld objectidentiteit en -positionering). Het script regelt ook de timing van de proef, inclusief auditieve aanwijzingen en het begin en einde van de motion capture-opnames.
Ledematen worden niet alleen gekenmerkt door hun positie in de 3D-ruimte, maar ook door hun houding. Om een volledige 3D-reconstructie te verkrijgen van een menselijke hand die een echte greep uitvoert, hebben we dus niet alleen de posities van elk gewricht in de 3D-ruimte nodig, maar ook de relatieve houding (translatie en rotatie) van elk gewricht ten opzichte van het moedergewricht (figuur 1F). Skeletgewrichtsposities en oriëntaties kunnen worden afgeleid uit markerposities met behulp van inverse kinematica. Om dit te doen, gebruiken we hier de skeletoplosser die wordt geleverd door de QTM-software. Om de solver te laten werken, moeten we eerst een skeletdefinitie geven die de positie en oriëntatie van elk gewricht koppelt aan meerdere markerposities. Er wordt dus een skeletdefinitie geconstrueerd en de skeletinstallatie wordt gekoppeld aan de markergegevens met behulp van de QTM Connect-plug-in voor Maya. We maken gepersonaliseerde skeletdefinities voor elke deelnemer om de nauwkeurigheid van het skelet dat past bij de markergegevens te maximaliseren. Voor elke deelnemer passen we handmatig een handskelet toe aan een enkel frame van motion capture-gegevens. Nadat we een deelnemerspecifieke skeletdefinitie hebben verkregen, voeren we vervolgens de skeletoplosser uit om de skeletgewrichtshoudingen voor elk frame van elk onderzoek in het experiment te schatten.
Voor elk frame van elke proef in een experiment genereren we een handgaas dat de huidige handhouding reconstrueert met behulp van de open-source en voorgetrainde tool voor het genereren van handgaas, DeepHandMesh28 (Figuur 1G). DeepHandMesh is een diep encoder-decodernetwerk dat gepersonaliseerde handnetten genereert uit afbeeldingen. Ten eerste schat de encoder de houding van een hand binnen een afbeelding (d.w.z. de gezamenlijke Euler-hoeken). Vervolgens worden de geschatte handhouding en een gepersonaliseerde ID-vector ingevoerd in de decoder, die een set van drie additieve correcties op een gemanipuleerd sjabloongaas schat. Ten slotte wordt het sjabloongaas vervormd volgens de geschatte handhouding en corrigerende maatregelen met behulp van lineaire blend-skinning. De eerste correctie is een ID-afhankelijke skeletcorrectie waarbij de skeletachtige rig wordt aangepast om de persoonsspecifieke gewrichtsposities op te nemen. De andere twee correcties zijn mesh-correcties waarbij de mesh-hoekpunten worden aangepast om het handoppervlak van de deelnemer beter weer te geven. Een van de mesh-correcties is een ID-afhankelijke mesh-correctie die rekening houdt met de oppervlaktestructuur van de hand van een individuele deelnemer. De laatste mesh-correctie is in plaats daarvan een pose-afhankelijke vertexcorrectie die rekening houdt met vervormingen van het handoppervlak als gevolg van de huidige handhouding.
DeepHandMesh wordt getraind met behulp van zwak toezicht met 2D-gezamenlijke sleutelpunten en scènedieptekaarten. Hier gebruiken we alleen de voorgetrainde DeepHandMesh-decoder om handgaasreconstructies te genereren, die op de volgende manieren zijn aangepast (figuur 3). Ten eerste, aangezien het netwerk niet is getraind op specifieke deelnemers, wordt de generieke ID-afhankelijke mesh-correctie gebruikt die bij het voorgetrainde model wordt geleverd (figuur 3A). Verder wordt de ID-afhankelijke skeletcorrectie afgeleid met behulp van de QTM-skeletoplosser zoals hierboven beschreven (figuur 3B). Er wordt uitgegaan van proportionele schaalvergroting van de hand met de skeletlengte en de maaswijdte wordt uniform geschaald met een factor die is afgeleid van de relatieve schaal van het skelet, zodat het gaas de handgrootte van de deelnemer beter benadert (figuur 3C). Dit aangepaste gaas wordt ingevoerd in de decoder, samen met de huidige handhouding (afgeleid van de markergegevens) en de 3D-positie en oriëntatie van de pols. De decoder berekent dus de huidige pose-afhankelijke correctie, past alle correcties en roto-vertalingen toe en voert een 3D-handgaasreconstructie uit van de huidige handpose in hetzelfde coördinatenkader als het 3D-gevolgde objectgaas (figuur 3D).

Figuur 3: Wijzigingen aan de voorgetrainde DeepHandMesh-decoder . (A) Vaste, generieke ID-afhankelijke mesh-correctie. (B) ID-afhankelijke skeletcorrectie afgeleid door inverse kinematica in stap 10. (C) De grootte van het handgaas wordt geschaald met dezelfde factor als de skeletgewrichten. (D) Definitieve 3D-handgaasreconstructie van de huidige handhouding. Klik hier om een grotere versie van deze figuur te bekijken.
Na gereconstrueerde 3D-mesh-modellen voor zowel de hand van een deelnemer als een vastgepakt object, kunnen hand-objectcontactgebieden worden geschat door de kruising tussen de hand- en objectnetten te berekenen (figuur 1H). De veronderstelling hierachter is dat de echte hand wordt vervormd door contact met het oppervlak, wat betekent dat het skelet dichter bij het oppervlak kan komen dan mogelijk zou zijn als de hand stijf zou zijn, waardoor delen van het handgaas door het objectgaas kunnen gaan. Als gevolg hiervan kunnen de contactgebieden worden benaderd als de gebieden van overlap tussen de twee mazen.
Specifiek, om deze gebieden van overlap te berekenen, definiëren we objectnethoekpunten die zich in het 3D-volume van het handgaas bevinden als in contact met de hand. Deze hoekpunten worden geïdentificeerd met behulp van een standaard raytracing-benadering45. Voor elk hoekpunt van het objectnet wordt een straal van dat hoekpunt naar een willekeurig 3D-punt buiten het handgaas gegoten. Vervolgens beoordelen we het aantal snijpunten dat optreedt tussen de gegoten straal en de driehoeken die het oppervlak van de hand vormen. Als het aantal snijpunten oneven is, bevindt het objectpunt zich in het handnet. Als het aantal snijpunten even is, bevindt het objectpunt zich buiten het handnet. De contactgebieden op het oppervlak van het object kunnen dus worden benaderd als de reeks driehoekige vlakken waarvan de hoekpunten zich allemaal in het handgaas bevinden. We kunnen dezelfde redenering toepassen op de hoekpunten van het handnet in het 3D-volume van het objectgaas om de contactgebieden op het oppervlak van de hand te schatten. Met name meer geavanceerde benaderingen van Booleaanse mesh-bewerkingen kunnen ook worden gebruikt31.
Video 1 toont een video van een hand, bijgehouden punten en mede-geregistreerd gaas die allemaal naast elkaar bewegen tijdens een enkele greep naar een 3D-geprint kattenbeeldje. Figuur 4A toont in plaats daarvan een enkel frame op het moment van hand-objectcontact van een greep naar een 3D-geprinte croissant, samen met de hand-object mesh-reconstructies (figuur 4B) en de geschatte contactgebieden op het oppervlak van de croissant (figuur 4C).

Figuur 4: Geschatte hand-object contactgebieden. (A) Gevolgde hand en object bekeken vanaf een van de volgcamera's tijdens een greep. (B) Gereconstrueerd gaas van de hand en het gaas van gevolgde objecten weergegeven vanuit hetzelfde gezichtspunt als de volgcamera. (C) Contactgebieden op het oppervlak van het object gezien vanuit meerdere gezichtspunten. Klik hier om een grotere versie van deze figuur te bekijken.
Video 1: Mesh reconstructies van de hand en het object. Gif-animatie van de hand, gevolgde markeringen en reconstructies van het gaas van de hand en het object tijdens een enkele greep bekeken vanuit hetzelfde camerastandpunt. Klik hier om deze video te downloaden.