Come funziona la generazione di funscript con IA
AutoScript Sync legge il movimento da un video con un tracciamento del movimento basato su IA che gira interamente sul tuo PC: campiona i fotogrammi, misura il movimento con il flusso ottico, aggiunge modelli opzionali di posa e profondità, fonde questi segnali in un'unica traccia di posizione e mette un punto dello script a ogni cambio di direzione. Il risultato è un .funscript standard salvato accanto al video. L'adattamento a un dispositivo specifico avviene dopo, solo sulla copia inviata a quel dispositivo.
Verificato sul codice dell'app il 21 settembre 2026. Descrive l'app rilasciata, 2.121.1, salvo dove una riga dice altrimenti.
La pipeline, dal file video al dispositivo
Ogni fase in un paragrafo
Decodifica e campionamento
Il video viene decodificato tramite il backend FFmpeg di OpenCV. L'app chiede prima la decodifica hardware e ripiega sulla decodifica software se il codec, la build o il driver non la supportano. Un thread di lavoro decodifica in anticipo in un buffer di fino a 64 fotogrammi, così decodifica e inferenza dell'IA si sovrappongono invece di alternarsi.
L'impostazione Accuracy decide quanti fotogrammi vengono analizzati: Fast prende un fotogramma ogni 4, Balanced (il predefinito) uno ogni 3 e High uno ogni 2. Su un video a 30 fps sono 7,5, 10 o 15 campioni al secondo; su un video a 60 fps le frequenze raddoppiano. Ogni fotogramma campionato viene ridotto a 320 px di larghezza prima di qualsiasi analisi, qualunque sia la risoluzione di origine. I filmati VR vengono prima raddrizzati in una normale vista prospettica di un occhio.
Trovare la regione in movimento
A meno che tu non disegni un riquadro con Set Motion Region… o Live Track, il motore costruisce una mappa di calore del movimento, prende l'area connessa più calda e la allarga del 15%. Il flusso ottico e la profondità vengono misurati dentro quella regione.
Misurare il movimento
Il flusso ottico è l'unico segnale che gira sempre: il flusso denso DIS misura come si muove la regione tra i fotogrammi campionati. La stima della posa con YOLOv8 aggiunge 17 punti chiave del corpo per persona, e la stima della profondità con MiDaS aggiunge l'asse verso la camera e via da essa che il video piatto nasconde. Entrambi i modelli sono opzionali; senza di essi il motore lavora solo con il flusso e lo dichiara. In un thread in background, l'app legge anche i vettori di movimento del codec stesso e un inviluppo del volume audio a 50 Hz, entro un budget di tempo che cresce con la durata del film.
Fusione
Il flusso dà una velocità, che deriva quando viene sommata nel tempo. Per questo il motore elegge un'ancora per ogni video tra il centro della regione, la posa e la profondità, e uno smoother Kalman/RTS fonde il flusso integrato con quell'ancora in un'unica traccia di posizione. Per impostazione predefinita l'ancora è una miscela, campione per campione, di tutti i canali leggibili, mantenuta solo quando ottiene un punteggio almeno pari a quello della singola ancora eletta. Dove il tracciamento si interrompe, il vuoto viene riempito con un movimento ritmico che prosegue le corse circostanti, e la quota riempita anziché misurata viene scritta nei metadati dello script.
Finestre per tipo di movimento
La timeline viene tagliata in finestre di 2 secondi. Un piccolo classificatore etichetta ciascuna per tipo di movimento a partire da sei caratteristiche del movimento, e un passaggio di levigatura impedisce che le etichette cambino continuamente da una finestra all'altra. L'etichetta decide come viene modellato il movimento di quella finestra. Un'etichetta impostata da te che copre almeno metà di una finestra prevale sul classificatore per quella finestra.
I punti e il file salvato
Un punto dello script viene messo a ogni inversione del movimento, mai a meno di 120 ms dal precedente e almeno ogni 4 secondi, e l'elenco dei punti viene poi semplificato. L'app scrive un JSON .funscript standard accanto al video con lo stesso nome, dopo aver copiato un eventuale script esistente in .funscript.bak. Vedi il formato funscript per sapere cosa contiene.
Adattamento al dispositivo
La copia inviata a un dispositivo, mai il file salvato, viene adattata a quel dispositivo: i punti più ravvicinati di quanto possa risolvere vengono uniti, i segmenti più veloci del suo limite di velocità perdono ampiezza ma mantengono i tempi, e la densità dei punti viene limitata. Per l'Autoblow AI Ultra, le inversioni vengono anche collocate su una griglia a 16 fps. Nell'app rilasciata questo adattamento si applica al caricamento sull'Autoblow; l'applicazione anche ai dispositivi Intiface arriva nel prossimo aggiornamento. Come il dispositivo resta poi a tempo con il video è spiegato in correzione della deriva e tempi di sincronizzazione.
Dove gira ogni parte
Tutta l'analisi avviene sul tuo PC. I moduli di analisi non contengono codice di rete e il video non viene mai caricato online. L'impostazione Hardware offre Auto (il predefinito), GPU (CUDA) e CPU.
| Fase | Gira su |
|---|---|
| Decodifica video | Il decodificatore hardware di qualsiasi produttore, dove disponibile, altrimenti la CPU |
| Modelli di posa e profondità | GPU NVIDIA tramite CUDA (ONNX Runtime o PyTorch); CPU quando non si può usare una GPU CUDA |
| Flusso ottico | CPU (OpenCV), su ogni macchina |
Non c'è accelerazione AMD o Intel per i modelli di IA, e TensorRT non viene usato. Se viene richiesta una GPU CUDA ma non può essere usata, posa e profondità ripiegano sulla CPU e l'app riporta il provider effettivamente in uso; il pulsante Check GPU ti dice quale. Il percorso su CPU funziona ma è molto più lento: un commento nel codice dal PC di prova con RTX 5080 registra il modello di profondità piccolo a circa 25,8 ms per chiamata sulla GPU contro 234 ms sulla CPU.
Non abbiamo misurato la velocità su un film intero con nessuna GPU oltre a quella dello sviluppatore, né su un PC solo CPU, quindi questa pagina non promette alcuna velocità. La pagina dei benchmark spiega cosa è stato misurato, su cosa, e cosa no.
Cosa non abbiamo risolto
Questi dati vengono dalla valutazione fatta dallo sviluppatore stesso su 28 brevi clip che ha scriptato a mano, tratte da cinque film su cui sono stati tarati i valori predefiniti, usando la build successiva alla 2.121.1 (compilata, non ancora rilasciata). Sono un solo autore di script e un campione piccolo, quindi leggili come punti deboli noti, non come un benchmark.
- Cambi di direzione persi. Il motore ha fatto 1,80 cambi di direzione al secondo dove l'umano ne ha fatti 2,29, circa il 21% in meno. Poiché alcune inversioni del motore erano anche in più o fuori tempo, solo circa la metà delle inversioni dell'umano sono state abbinate entro 150 ms. La concordanza delle inversioni delle corse variava da 0,33 a 0,71 (F1, entro 150 ms) a seconda del film.
- Le corse veloci risultano piccole. Sui due film con le corse più veloci, le corse del motore erano un quarto e la metà dell'ampiezza di quelle dell'umano. La spiegazione di lavoro è che i 10 campioni al secondo di Balanced (su video a 30 fps) appiattiscono il movimento veloce.
- Non si ferma quando l'azione si ferma. Nei tratti che l'umano ha segnato come senza azione, il motore produceva comunque circa 85 cambi di direzione al minuto. Si rifiuta però di creare uno script quando meno del 5% dei campioni mostra un movimento reale.
- Le etichette del tipo di movimento non sono dimostrate. Con validazione separata per video sulle etichette dello sviluppatore, il classificatore del movimento da solo ha ottenuto un punteggio inferiore a una risposta costante, e nessun dato di accuratezza per l'app predefinita è abbastanza solido da pubblicare. Le etichette che imposti tu prevalgono su di esso.
L'editor della timeline, Re-analyze a frequenza piena su un intervallo selezionato e la risoluzione dei problemi dei funscript sono le risposte pratiche di oggi.
Da leggere dopo
- Flusso ottico: leggere il movimento tra i fotogrammiIl segnale su cui è costruito ogni script, e come si evita che derivi.
- Stima della posa con YOLOv8Quale modello usa ogni livello di Accuracy e cosa aggiungono i punti chiave.
- Stima della profondità con MiDaSL'asse verso la camera, e una sola scala di profondità per video.
- Come il dispositivo resta a tempoLe regole di sincronizzazione per l'Autoblow, i dispositivi Intiface e DeoVR.
- Benchmark e misurazioniCosa è stato misurato, su quale macchina, e cosa no.
- Il generatore di funscript con IACosa contribuisce ogni parte dell'IA, e come impara dalle tue modifiche.
Provalo sui tuoi video
La prova dura un giorno e gira sul tuo PC; i tuoi video vengono analizzati in locale e non vengono mai caricati online.