Inspelning av indataanimering – MRTK2
MRTK har ett inspelningssystem där huvudflytt och handspårningsdata kan lagras i animeringsfiler. Inspelade data kan sedan spelas upp med hjälp av indatasimuleringssystemet.
Inspelning av indata är ett användbart verktyg i olika situationer:
- Skapa automatiserade tester för interaktion, manipuleringar, lösare osv. Det kan vara tidskrävande att skapa förflyttning av kontrollanter och händer för dessa tester. Inspelning av indata direkt kan påskynda processen och tillhandahålla verkliga data.
- Lär ut användningen av UX-element via animeringar. Att visa användarna hur de interagerar med knappar och andra objekt kan jämna ut inlärningskurvan.
- Felsöka oväntat beteende som kan uppstå vid regelbunden användning. Inspelningssystemet stöder ett "rullande buffert"-koncept som tillåter inspelning av senaste indata i bakgrunden. Se Inspelningstjänsten för indata.
Inspelnings- och uppspelningstjänster
Två indatasystemtjänster tillhandahålls för att registrera respektive spela upp indata.
Inspelningstjänst för indata
InputRecordingService
tar data från huvudkameratransformering och aktiva handkontrollanter och lagrar dem i en intern buffert. När dessa data begärs serialiseras de sedan till binära filer för lagring och senare uppspelning.
Om du vill börja spela in indata anropar du StartRecording
funktionen. StopRecording
pausar inspelningen (men tar inte bort de data som registrerats hittills, använd DiscardRecordedInput
för att göra detta om det behövs).
Som standard är storleken på inspelningsbufferten begränsad till 30 sekunder. Detta gör att inspelningstjänsten kan fortsätta spela in i bakgrunden utan att samla in för mycket data och sedan spara de senaste 30 sekunderna när det behövs. Tidsintervallet kan ändras med hjälp av RecordingBufferTimeLimit
egenskapen eller så kan inspelningen vara obegränsad med hjälp av UseBufferTimeLimit
alternativet .
Data i inspelningsbufferten kan sparas i en binär fil med hjälp av funktionen SaveInputAnimation .
Mer information om det binära filformatet finns i Specifikation för filformat för indataanimering.
Indatauppspelningstjänst
InputPlaybackService
läser en binär fil med indata för animering och tillämpar sedan dessa data via InputSimulationService för att återskapa de registrerade rörelserna.
Om du vill börja spela upp indataanimering bör den läsas in från en fil med hjälp av funktionen LoadInputAnimation .
Anropa Spela upp, Pausa eller Stoppa för att styra animeringsuppspelningen.
Den aktuella animeringstiden kan också styras direkt med egenskapen LocalTime .
Varning
Loopa eller återställa indataanimering eller inställning LocalTime
direkt genom att rensa tidslinjen kan ge oväntade resultat när scenen manipuleras! Endast indatarörelserna registreras, eventuella ytterligare ändringar, till exempel rörliga objekt eller vända växlar, återställs inte. Se till att läsa in scenen igen om oåterkalleliga ändringar har gjorts.
Redigeringsverktyg för inspelning och uppspelning av indataanimering
Det finns ett antal verktyg i Unity-redigeraren för inspelning och undersökning av indataanimering. Dessa verktyg kan nås i fönstret verktyg för indatasimulering, som kan öppnas från menyn Mixed Reality Toolkit > Utilities > Input Simulering.
Anteckning
Inspelning och uppspelning av indata fungerar endast i uppspelningsläge.
Fönstret för indatainspelning har två lägen:
Inspelning för inspelning av indata under uppspelningsläget och spara den i animeringsfiler.
När du ggggar på inspelningsknappen
InputRecordingService
är aktiverad för att spela in indata. När du kryper bort inspelningsknappen visas ett val av sparad fil och den inspelade indataanimeringen sparas till det valda målet.Buffertens tidsgräns kan också ändras i det här läget.
Uppspelning för att läsa in animeringsfiler och sedan återskapa indata via indatasimuleringssystemet.
En animering måste läsas in i det här läget först. När du har spelat in indata i inspelningsläget läses den resulterande animeringen in automatiskt. Du kan också klicka på knappen "Läs in" för att välja en befintlig animeringsfil.
Knapparna för tidskontroll från vänster till höger är:
- Återställ uppspelningstiden till början av animeringen.
- Spela upp animering kontinuerligt med tiden.
- Steg framåt ett tidssteg.
Skjutreglaget kan också användas för att rensa igenom tidslinjen för animering.
Varning
Loopa eller återställa indataanimering eller rensa tidslinjen kan ge oväntade resultat när scenen manipuleras! Endast indatarörelserna registreras, eventuella ytterligare ändringar, till exempel rörliga objekt eller vända växlar, återställs inte. Se till att läsa in scenen igen om oåterkalleliga ändringar har gjorts.