technoon Napisano 19 Kwiecień 2005 Napisano 19 Kwiecień 2005 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
asblaze Napisano 19 Kwiecień 2005 Napisano 19 Kwiecień 2005 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 ;)
technoon Napisano 19 Kwiecień 2005 Autor Napisano 19 Kwiecień 2005 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...:/
asblaze Napisano 19 Kwiecień 2005 Napisano 19 Kwiecień 2005 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.
technoon Napisano 19 Kwiecień 2005 Autor Napisano 19 Kwiecień 2005 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
asblaze Napisano 19 Kwiecień 2005 Napisano 19 Kwiecień 2005 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
asblaze Napisano 19 Kwiecień 2005 Napisano 19 Kwiecień 2005 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 ;)
lechoo Napisano 19 Kwiecień 2005 Napisano 19 Kwiecień 2005 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.
technoon Napisano 19 Kwiecień 2005 Autor Napisano 19 Kwiecień 2005 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 :)
lechoo Napisano 19 Kwiecień 2005 Napisano 19 Kwiecień 2005 A tak z ciekawosci, co to za soft ma byc? Cos na dyplom?
asblaze Napisano 20 Kwiecień 2005 Napisano 20 Kwiecień 2005 no wiedziałęm żę jak lechoo wkroczy to stanie się jasność ;)
illy Napisano 20 Kwiecień 2005 Napisano 20 Kwiecień 2005 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
Rekomendowane odpowiedzi
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ę