Skocz do zawartości

sterowanie kamera za pomoca pliku wsadowego


technoon

Rekomendowane odpowiedzi

Witam !!

 

Mam mały problem. Kompletnie nie znam jesyka maxa a pisze zewnetrzny program do camera tracking. I chciałbym zeby mój algorytm po obliczeniu połozenia kamery w moim filmie stworzył plik *.ms który mógłbym władowac do maxa i zeby tam kamera poruszała sie tak jak ta na filmie.

 

Mam przykładowy plik który steruje kamera ale kompletnie nie wiem co za co odpowiada. Podejrzewam ze nie jest to za bardzo skomplikowane i moze ktos kto siedzi w tym od dawna mógłby mi wyjasnic. Chciałbym wiedziec jak mój alborytm ma stworzyc taki plik.

 

ponizej zamieszczam listing przykładowego ms. Byłbym bardzow wdzieczny za wyjasnienie mi co do czego słuzy.

 

*********************LISTING*************************

units.DisplayType = #metric

units.MetricType = #millimeters

 

-- the camera and its keyframes

animationRange = interval 0f 3f

in coordsys world animate on

(

c = freecamera name:"voodoo_cam"

c.nearclip = 0.0

c.clipManually = true

at time 0f c.rotation = (matrix3 [1.000000,0.000000,0.000000] [0.000000,-1.000000,0.000000] [0.000000,0.000000,-1.000000] [0,0,0]).rotationpart

at time 0f c.position = [0.000000,0.000000,0.000000]

at time 0f c.fov = 34.093657

at time 1f c.rotation = (matrix3 [0.999996,-0.002096,-0.001663] [-0.002094,-0.999997,0.001175] [-0.001665,-0.001172,-0.999998] [0,0,0]).rotationpart

at time 1f c.position = [0.000000,0.000000,0.000000]

at time 1f c.fov = 34.032689

at time 2f c.rotation = (matrix3 [0.999988,-0.002983,-0.003930] [-0.002981,-0.999995,0.000356] [-0.003931,-0.000344,-0.999992] [0,0,0]).rotationpart

at time 2f c.position = [0.000000,0.000000,0.000000]

at time 2f c.fov = 34.036137

 

-- Z tego co sie zorientowałem to ponizej nie jest potrzebne do sterowania kamery ale było w przykładowym ms wiec tez zamieszczam

 

 

--3D Feature Points

point pos:[71.304707,23.147455,36.747323 ] name:"FP3D_0" size:1.0 constantscreensize:true

point pos:[71.929389,23.230345,35.454841 ] name:"FP3D_1" size:1.0 constantscreensize:true

point pos:[72.770381,23.496926,33.509668 ] name:"FP3D_2" size:1.0 constantscreensize:true

point pos:[73.459831,23.755323,31.778444 ] name:"FP3D_3" size:1.0 constantscreensize:true

at time 3f c.rotation = (matrix3 [0.999964,-0.002677,-0.008070] [-0.002675,-0.999996,0.000214] [-0.008071,-0.000192,-0.999967] [0,0,0]).rotationpart

at time 3f c.position = [0.000000,0.000000,0.000000]

at time 3f c.fov = 34.025344

 

 

************************KONIEC***************************

 

 

aha i jeszcze takie pytanie. Moze ktos kiedys zgłębiał temat camera tracking? Interesowały by mnie opisy jakichs podstawowych systemów. Troche znalazłem ale nie dam rady przebrnac przez ten techniczny angielski. Po wstepie przestaje rozumiec co autor miał namysli :/

 

 

 

Mam nadzieje ze jasno sprecyzowałen o co mi chodzi i ze znajdzie sie ktos kto bedize potrafił mi pomóc

 

z góry dziekuje

Odnośnik do komentarza
Udostępnij na innych stronach

  • Odpowiedzi 11
  • Created
  • Ostatniej odpowiedzi

Top Posters In This Topic

Top Posters In This Topic

ehehehe cież się że nie musisz tego przestawiać na mela ;)

 

*********************LISTING********************** ***

units.DisplayType = #metric

units.MetricType = #millimeters

USTAWIA JEDNOSKI MIAR

 

animationRange = interval 0f 3f OKREŚLA ILOŚĆ KLATEK W ANIMACJI

on coordsys world animate on OKREŚLA PIVOTA OBIEKTU (LOKAL/SWIAT) I WŁACZA ANIMACJE

 

c = freecamera name:"voodoo_cam" TWORZY KAMERĘ FREE O NAZWIE VOODO I NADAJE JEJ ZMIENNĄ C

 

c.nearclip = 0.0

c.clipManually = true To nie wiem.... ale jakieś ustawienia samej kamery

 

Teraz zmiany otyczące animacji

Klatka 0

at time 0f c.rotation = (matrix3 [1.000000,0.000000,0.000000] [0.000000,-1.000000,0.000000] [0.000000,0.000000,-1.000000] [0,0,0]).rotationpart

at time 0f c.position = [0.000000,0.000000,0.000000]

at time 0f c.fov = 34.093657

Najpierw rotacja (nie wiem czemu jest tak zapisana), Pozycja w świecie i ogniskowa

I tak masz do 3 klatki

 

reszta kodu to tworzenie lokatorów, czy też pointów.... ale zauważ że na samum końcu masz też ustawienia kamery dla klatki 3...

 

A teraz muszę Ci coś wyjawić... tak na prawde to nie znam MaxSkryptu. ale jak ja animator sie w tym połapałem... to jak nie mógł cię połapać coder od C++ ?? :)

 

Pozdrawiam

 

PS... zaraz mnie lechoo pojedzie ;)

Odnośnik do komentarza
Udostępnij na innych stronach

no ja tak globannie to wiem o co chodzi to chyba srednio rozwiniety jednokomórkowiec sie połapie ze sa klatki i rotacje i pozycje i kat patrzenia kamery dla kazdej ale

 

at time 0f c.rotation = (matrix3 [1.000000,0.000000,0.000000] [0.000000,-1.000000,0.000000] [0.000000,0.000000,-1.000000] [0,0,0]).rotationpart

 

 

o jaki kat sie obróciła kamera?? bo chyba wg kazdej osi bo 1 wystepuje na kolejnych pozycjach.

 

a

 

at time 0f c.position = [0.000000,0.000000,0.000000]

 

znaczy ze kamera sie nie przesuneła ?? to to nie bedzie prawda bo kamera sie przesuwała napewno w tej scenie...:/

Odnośnik do komentarza
Udostępnij na innych stronach

ok.. jesli chodzi o rotacje to cos sprawdze zaraz ;)

Jesli o przesuniecie.... to w tym układzie masz napisane, że kamera w klatce 0 ma współrzędne świata 0,0,0

 

Z tego wynika ze w tym teście kamera stoi... tylko ulega rotacji i zmiany ogniskowej. dlatego możesz miec wrażenie, że kamera się poruszyła.

Odnośnik do komentarza
Udostępnij na innych stronach

moze i masz racje z tym połozeniem. tylko ze ja ten film kreciłem dla którego był generowany ten maxscript i jestem pewien ze kamera sie ruszała :) no ale moze w pierwszych klatkach tak wyszło bo potem sie zmienia... a moze ty pisałes podobny algorytm :) który cos takiego miał tworzyc :) to wymienimy sie uwagami...

 

co do tych obrotów ro wydajem ki sie ze kazda wsp w matrixie to poszczególna os ale ta cyfra to raczej nie kąt obrotu... nie dojde :/

 

pozdrawuiam

i dziekuje za poswiecony mi czas

Odnośnik do komentarza
Udostępnij na innych stronach

Tech.... olej to.... przeanalizuj sobie ten skrypt ;) On robi tylko rotacje :)

 

frameRate = 25

animationRange = interval 0f 20f

 

 

animate on (

c = freecamera name:"testowa"

at time 0f c.rotation = quat 0 0 0 1

at time 0f c.position = [-0.310663,0.537623,0.273384]

at time 0f c.fov = 45.0606

at time 1f c.rotation = quat -2.93106e-006 -0.0280955 -1.49333e-005 0.999605

at time 1f c.position = [-0.310663,0.537623,0.273384]

at time 1f c.fov = 45.0606

at time 2f c.rotation = quat -1.85072e-006 -0.0561472 -9.66074e-007 0.998422

at time 2f c.position = [-0.310663,0.537623,0.273384]

at time 2f c.fov = 45.0606

at time 3f c.rotation = quat -1.90049e-005 -0.0841546 -4.17484e-005 0.996453

at time 3f c.position = [-0.310663,0.537623,0.273384]

at time 3f c.fov = 45.0606

at time 4f c.rotation = quat -1.42568e-005 -0.112091 -3.0442e-005 0.993698

at time 4f c.position = [-0.310663,0.537623,0.273384]

at time 4f c.fov = 45.0606

at time 5f c.rotation = quat -2.18862e-005 -0.13996 -2.14777e-005 0.990157

at time 5f c.position = [-0.310663,0.537623,0.273384]

at time 5f c.fov = 45.0606

at time 6f c.rotation = quat -2.45988e-005 -0.167712 5.15382e-006 0.985836

at time 6f c.position = [-0.310663,0.537623,0.273384]

at time 6f c.fov = 45.0606

at time 7f c.rotation = quat -2.99299e-005 -0.195341 -2.64401e-005 0.980735

at time 7f c.position = [-0.310663,0.537623,0.273384]

at time 7f c.fov = 45.0606

at time 8f c.rotation = quat -7.20802e-006 -0.222817 -2.81407e-005 0.97486

at time 8f c.position = [-0.310663,0.537623,0.273384]

at time 8f c.fov = 45.0606

at time 9f c.rotation = quat 7.87242e-006 -0.250111 -5.64358e-005 0.968217

at time 9f c.position = [-0.310663,0.537623,0.273384]

at time 9f c.fov = 45.0606

)

 

Tutaj rotacja wygląda znośniej ;)

 

NIe pisałem programu do śledzenia kamery... bo to mnie przerasta :)

 

Co nie zmienai faktu że zdarzało mi sie z takich programów korzystać :)

 

Byte

Odnośnik do komentarza
Udostępnij na innych stronach

Jeszce cos mi przyszło do głowy...

at time 0f c.rotation = (angleaxis 17.667 [0,0,1])

at time 0f c.position = [-0.310663,0.537623,0.273384]

at time 0f c.fov = 45.0606

at time 1f c.rotation = (angleaxis -11.4593 [0,0,1])

at time 1f c.position = [-0.310663,0.537623,0.273384]

at time 1f c.fov = 45.0606

at time 2f c.rotation = (angleaxis 6 [1,0,0])

at time 2f c.position = [-0.310663,0.537623,0.273384]

at time 2f c.fov = 45.0606

at time 3f c.rotation = (angleaxis -3.45404 [0,0,1])

at time 3f c.position = [-0.310663,0.537623,0.273384]

at time 3f c.fov = 45.0606

at time 4f c.rotation = (angleaxis 3 [0,1,0])

at time 4f c.position = [-0.310663,0.537623,0.273384]

at time 4f c.fov = 45.0606

 

Tu masz kolejny sposób zapisu obrotu ;) ten jest w stopniach ;) "angleaxis" to wartosć obrotu, [0,1,0] definiuje oś.... ale sam juzsobie ustalaj , które 0 za która os odpowiada ;)

Odnośnik do komentarza
Udostępnij na innych stronach

Jesli chcesz wpisywac rotacje przez podanie kata obrotu wokol 3 osi to musisz wykorzystac eulerangles, przykladowo:

at time 1f c.rotation = eulerangles 0 0 180

spowoduje ze obiekt bedzie obrocony o 180 stopni wzgledem osi Z. Taki zapis jest chyba najbardziej "dla ludzi". Angleaxis i kwaterniony okreslaja rotacje przez podanie wektora wokol ktorego obraca sie obiekt i kata o jaki nastepuje obrot.

Odnośnik do komentarza
Udostępnij na innych stronach

no dziekuje !! :) juz jasniej wsystko wyglada :) .....

 

 

jeszcze tylko od producentów wyciagnac jakies informacje na temat systemów camera tracking :) :

 

SynaPix's SynaMatch

Realviz

Diabolina Productions

2d3

Kaydara FilmBox

Quantel Editbox

IS-900 SCT

 

i jestem w domu :)

Odnośnik do komentarza
Udostępnij na innych stronach

at time 0f c.position = [0.000000,0.000000,0.000000]

 

znaczy ze kamera sie nie przesuneła ?? to to nie bedzie prawda bo kamera sie przesuwała napewno w tej scenie...:/

 

Jakims mistrzem nie jestem ale strzelam ze w pierwszej klatce kamera stala po prostu na 0,0,0 a w drugiej juz sie znalazla np. 0,1,0 Chodzi zapewne o to ze standartowo postawiles kamere w 0,0,0 a koniec animacji np na 100,100,100 to w pierwsze klatce bedziesz miec 0,0,0 w ostaniej 100,100,100 i jesli animacja ma 100 klatek to... [sam rozumiesz]

 

Tam jest podana pozycja kamery a nie jej np. predkosc, wiec w sumie w kazdej klatce [x,x,x] bedzie ona wygladac jakby stala w miejscu

 

Mam nadzieje ze pomoglo bo wygladalo na nierozwiazane

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się



×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Wykorzystujemy cookies. Przeczytaj więcej Polityka prywatności