Skip to content

Bvh format docs on serbian language

Nikola edited this page Jun 15, 2022 · 1 revision

MORE ABOUT BVH

List of programs who used bvh format:

Serbian Translate:

Format datoteke BVH je prvobitno razvila Biovision, kompanija za usluge snimanja pokreta, kao način da se svojim klijentima obezbede podaci o snimanju pokreta. Naziv BVH je skraćenica za hijerarhijske podatke Biovision. Ovaj format je uglavnom zamenio raniji format koji su razvili, BVA format o kome se govori u sledećem odeljku, kao način da se pored podataka o kretanju obezbede informacije o hijerarhiji skeleta. BVH format je odličan sveobuhvatni format, njegov jedini nedostatak je nedostatak potpune definicije osnovne poze (ovaj format ima samo translacione pomake dečjih segmenata u odnosu na njihov roditelj, nije definisan rotacijski pomak), takođe mu nedostaju eksplicitne informacije kako nacrtati segmente, ali to nema veze sa definicijom kretanja.

Raščlanjivanje datoteke

BVH datoteka ima dva dela, odeljak zaglavlja koji opisuje hijerarhiju i početnu pozu skeleta; i odeljak sa podacima koji sadrži podatke o kretanju. Ispitajte primer BVH datoteke pod nazivom „Ekample1.bvh“. Početak odeljka zaglavlja počinje ključnom rečju „HIJERARHIJA“. Sledeći red počinje ključnom rečju „ROOT“ iza koje sledi ime osnovnog segmenta hijerarhije koju treba definisati. Nakon što je ova hijerarhija opisana, dozvoljeno je definisati drugu hijerarhiju, koja bi takođe bila označena ključnom reči "ROOT". U principu, BVH fajl mnogi sadrže bilo koji broj hijerarhija skeleta. U praksi je broj segmenata ograničen formatom sekcije pokreta, jedan uzorak u vremenu za sve segmente je na jednoj liniji podataka i to će uzrokovati probleme čitaocima koji pretpostavljaju ograničenje veličine reda u datoteci.

Primer iz teksta:

HIERARCHY
ROOT Hips
{
	OFFSET	0.00	0.00	0.00
	CHANNELS 6 Xposition Yposition Zposition Zrotation Xrotation Yrotation
	JOINT Chest
	{
		OFFSET	 0.00	 5.21	 0.00
		CHANNELS 3 Zrotation Xrotation Yrotation
		JOINT Neck
		{
			OFFSET	 0.00	 18.65	 0.00
			CHANNELS 3 Zrotation Xrotation Yrotation
			JOINT Head
			{
				OFFSET	 0.00	 5.45	 0.00
				CHANNELS 3 Zrotation Xrotation Yrotation
				End Site 
				{
					OFFSET	 0.00	 3.87	 0.00
				}
			}
		}
		JOINT LeftCollar
		{
			OFFSET	 1.12	 16.23	 1.87
			CHANNELS 3 Zrotation Xrotation Yrotation
			JOINT LeftUpArm
			{
				OFFSET	 5.54	 0.00	 0.00
				CHANNELS 3 Zrotation Xrotation Yrotation
				JOINT LeftLowArm
				{
					OFFSET	 0.00	-11.96	 0.00
					CHANNELS 3 Zrotation Xrotation Yrotation
					JOINT LeftHand
					{
						OFFSET	 0.00	-9.93	 0.00
						CHANNELS 3 Zrotation Xrotation Yrotation
						End Site 
						{
							OFFSET	 0.00	-7.00	 0.00
						}
					}
				}
			}
		}
		JOINT RightCollar
		{
			OFFSET	-1.12	 16.23	 1.87
			CHANNELS 3 Zrotation Xrotation Yrotation
			JOINT RightUpArm
			{
				OFFSET	-6.07	 0.00	 0.00
				CHANNELS 3 Zrotation Xrotation Yrotation
				JOINT RightLowArm
				{
					OFFSET	 0.00	-11.82	 0.00
					CHANNELS 3 Zrotation Xrotation Yrotation
					JOINT RightHand
					{
						OFFSET	 0.00	-10.65	 0.00
						CHANNELS 3 Zrotation Xrotation Yrotation
						End Site 
						{
							OFFSET	 0.00	-7.00	 0.00
						}
					}
				}
			}
		}
	}
	JOINT LeftUpLeg
	{
		OFFSET	 3.91	 0.00	 0.00
		CHANNELS 3 Zrotation Xrotation Yrotation
		JOINT LeftLowLeg
		{
			OFFSET	 0.00	-18.34	 0.00
			CHANNELS 3 Zrotation Xrotation Yrotation
			JOINT LeftFoot
			{
				OFFSET	 0.00	-17.37	 0.00
				CHANNELS 3 Zrotation Xrotation Yrotation
				End Site 
				{
					OFFSET	 0.00	-3.46	 0.00
				}
			}
		}
	}
	JOINT RightUpLeg
	{
		OFFSET	-3.91	 0.00	 0.00
		CHANNELS 3 Zrotation Xrotation Yrotation
		JOINT RightLowLeg
		{
			OFFSET	 0.00	-17.63	 0.00
			CHANNELS 3 Zrotation Xrotation Yrotation
			JOINT RightFoot
			{
				OFFSET	 0.00	-17.14	 0.00
				CHANNELS 3 Zrotation Xrotation Yrotation
				End Site 
				{
					OFFSET	 0.00	-3.75	 0.00
				}
			}
		}
	}
}
MOTION
Frames:    2
Frame Time: 0.033333
 8.03	 35.01	 88.36	-3.41	 14.78	-164.35	 13.09	 40.30	-24.60	 7.88	 43.80	 0.00	-3.61	-41.45	 5.82	 10.08	 0.00	 10.21	 97.95	-23.53	-2.14	-101.86	-80.77	-98.91	 0.69	 0.03	 0.00	-14.04	 0.00	-10.50	-85.52	-13.72	-102.93	 61.91	-61.18	 65.18	-1.57	 0.69	 0.02	 15.00	 22.78	-5.92	 14.93	 49.99	 6.60	 0.00	-1.14	 0.00	-16.58	-10.51	-3.11	 15.38	 52.66	-21.80	 0.00	-23.95	 0.00	
 7.81	 35.10	 86.47	-3.78	 12.94	-166.97	 12.64	 42.57	-22.34	 7.67	 43.61	 0.00	-4.23	-41.41	 4.89	 19.10	 0.00	 4.16	 93.12	-9.69	-9.43	 132.67	-81.86	 136.80	 0.70	 0.37	 0.00	-8.62	 0.00	-21.82	-87.31	-27.57	-100.09	 56.17	-61.56	 58.72	-1.63	 0.95	 0.03	 13.16	 15.44	-3.56	 7.97	 59.29	 4.97	 0.00	 1.64	 0.00	-17.18	-10.02	-3.08	 13.56	 53.38	-18.07	 0.00	-25.93	 0.00	

BVH format sada postaje rekurzivna definicija. Svaki segment hijerarhije sadrži neke podatke relevantne samo za taj segment, a zatim rekurzivno definiše svoje potomke. Red posle ključne reči ROOT sadrži jednu levu vitičastu zagradu '{', a zagrada je poređana sa ključnom reči "ROOT". Red nakon vitičaste zagrade je uvučen jednim tab znakom, ova uvlačenja su uglavnom samo da bi datoteku učinili čitljivijom za ljude, ali postoje neki BVH parseri datoteka koji očekuju tabove, tako da ako kreirate BVH datoteku obavezno ih napravite tabulatorima i ne samo prostori. Prva informacija o segmentu je pomak tog segmenta u odnosu na njegov roditelj, ili u slučaju osnovnog objekta pomak će generalno biti nula. Pomak je specificiran ključnom rečju "OFFSET" praćen X, Y i Z pomakom segmenta od njegovog roditelja. Informacije o ofsetu takođe ukazuju na dužinu i pravac koji se koristi za crtanje roditeljskog segmenta. U BVH formatu ne postoje eksplicitne informacije o tome kako treba da se nacrta segment. Ovo se obično zaključuje iz ofseta prvog deteta definisanog za roditelja. Obično samo koren i segmenti gornjeg dela tela imaju više dece.

Red posle ofseta sadrži informacije o zaglavlju kanala. Ovo ima ključnu reč „KANALI“ iza koje sledi broj koji označava broj kanala, a zatim listu sa toliko oznaka koje označavaju tip svakog kanala. Čitač BVH fajlova mora da prati broj kanala i tipove kanala na koje se susreće dok se raščlanjuju informacije o hijerarhiji. Kasnije, kada se raščlane informacije o kretanju, ovaj redosled će biti potreban za raščlanjivanje svake linije podataka o kretanju. Čini se da ovaj format ima fleksibilnost da omogući segmente koji imaju bilo koji broj kanala koji se mogu pojaviti bilo kojim redosledom. Ako napišete svoj parser da se bavi ovim, onda tim bolje, međutim, nikada nisam naišao na BVH datoteku koja nije imala 6 kanala za osnovni objekat i 3 kanala za svaki drugi objekat u hijerarhiji.

Možete videti da redosled kanala rotacije izgleda malo čudan, ide Z rotacija, zatim Ks rotacija i na kraju I rotacija. Ovo nije greška, BVH format koristi pomalo neobičan redosled rotacije. Stavite elemente podataka u svoju strukturu podataka ovim redosledom.

Na liniji podataka koja prati specifikaciju kanala može biti jedna od dve ključne reči, ili ćete pronaći ključnu reč „JOINT“ ili ćete videti ključnu reč „Krajnja lokacija“. Zajednička definicija je identična osnovnoj definiciji osim broja kanala. Ovde se odvija rekurzija, ostatak raščlanjivanja zajedničkih informacija se odvija kao koren. Informacije o krajnjoj lokaciji završavaju rekurziju i ukazuju na to da je trenutni segment krajnji efektor (nema dece). Definicija krajnjeg sajta pruža još jedan bit informacija, daje dužinu prethodnog segmenta baš kao što pomak deteta definiše dužinu i pravac njegovog roditeljskog segmenta.

Kraj bilo kog spoja, krajnjeg mesta ili definicije korena je označen desnom vitičastom zagradom '}'. Ova vitičasta zagrada je poređana sa odgovarajućom desnom vitičastim zagradama.

Poslednja napomena o BVH hijerarhiji, svetski prostor je definisan kao desnoruki koordinatni sistem sa I osom kao vektorom sveta gore. Tako ćete obično otkriti da su skeletni segmenti BVH poravnati duž I ili negativne I ose (pošto likovi često imaju nultu pozu gde lik stoji uspravno sa rukama pravo dole u ​​stranu).

Odeljak o pokretima počinje ključnom rečju „POKRET“ na samoj liniji. Nakon ovog reda sledi red koji označava broj kadrova, ovaj red koristi ključnu reč „Okviri:“ (dvotačka je deo ključne reči) i broj koji označava broj kadrova ili uzoraka pokreta koji se nalaze u datoteci. Na redu posle definicije okvira je definicija „Vreme kadra:“, što ukazuje na brzinu uzorkovanja podataka. U primeru BVH fajla brzina uzorkovanja je data kao 0,033333, ovo je 30 frejmova u sekundi uobičajena brzina uzorkovanja u BVH datoteci.

Ostatak datoteke sadrži stvarne podatke o kretanju. Svaka linija je jedan uzorak podataka o kretanju. Brojevi se pojavljuju po redosledu specifikacija kanala dok je skeletna hijerarhija raščlanjena.

Tumačenje podataka

Da biste izračunali poziciju segmenta, prvo kreirate matricu transformacije od informacija o lokalnom prevodu i rotaciji za taj segment. Za bilo koji zajednički segment informacije o prevodu će jednostavno biti pomak kako je definisano u odeljku o hijerarhiji. Podaci o rotaciji dolaze iz sekcije kretanja. Za osnovni objekat, podaci o prevođenju će biti zbir podataka o ofsetu i podataka o prevođenju iz sekcije kretanja. BVH format ne uzima u obzir skale, tako da nije potrebno brinuti o uključivanju izračuna faktora skale.

Jednostavan način za kreiranje matrice rotacije je kreiranje 3 odvojene matrice rotacije, po jednu za svaku osu rotacije. Zatim spojite matrice s leva na desno I, Ks i Z.

vR = vIKSZ

Alternativni metod je direktno izračunavanje matrice rotacije. Metoda za to je opisana u Graphics Gems II, str. 322.

Dodavanje informacija o ofsetu je jednostavno, samo ubacite podatke o prevođenju Ks, I i Z na odgovarajuće lokacije matrice. Jednom kada je lokalna transformacija stvorena, spojite je sa lokalnom transformacijom njenog roditelja, zatim njenog velikog roditelja, itd.

vM = vMchildMparentMgrandparent…