Skocz do zawartości

Rekomendowane odpowiedzi

Napisano

U9yMro9.jpg?1

Jak widac na zalaczonym obrazku, mam prosty rig. Dwa skrzydla drzwi(dwa zielone boxy) z piwotem po srodku polaczone za pomoca lancucha IK. Do targeta lancucha IK mam zlinkowany Dummy Object. Zamysl byl taki ze dodalem sobie manipulatar i za jego pomoca chcialem przesuwac Dummy object po osi X w ten sposob otwierajac i zamykajac drzwi. Chcialem to wszystko podpiac za pomoca Wire Parameters i tu pojawil sie problem. Jako ze moj Dummy object nie znajduje sie w srodku ukladu wsporzednych [0,0,0], wiec aby zapobiec przesuwaniu sie Dummy wlasnie do srodka ukladu wsporzednych po podpieciu manipulatora (ktory jako wartosc poczatkowa ma 0) dopisalem w "Expresion:" dla dummy

 

currPos=X_Position

X_Position=value+currPos

 

Niestety poniewaz X_Position i value to inny typ danych nie moge zrobic tego w ten sposob, choc troche tego nie rozumiem bo jesli zostawie samo "value" (tak jak na screenie) to wszystko dziala. Wiec mam prosbe czy ktos madrzejszy moglby mi powiedziec jak mam zapisac vartosc "value" zeby byla przyjmowana jako X_Position, bo spedzilem chyba 2h googlajac bez rezultatu. Z gory dzieki za pomoc

  • Odpowiedzi 8
  • Created
  • Ostatniej odpowiedzi

Top Posters In This Topic

Top Posters In This Topic

Napisano

Oj nie to tak nie zadziala. To, że podpinasz coś pod x_position, nie oznacza, że masz dostęp do wartości x_position wpisując x_position. Ogolnie to, żeby dummy ci się nie zaczynał przesuwać z punktu x=0 to musisz zresetować transformację wcześniej i wtedy wystarczy wpisać "value" i dummy bedzie zaczynal w tym miejscu gdzie byl rest transformacji. Bez resetu transformacji twoj zapis powinien wyglądać jakoś tak. "value + dummy001.pos[1].controller.value"

Napisano

Dzieki SUPER_OkO za wskazowki. Niestety po wpisaniu twojego kodu wywala mi blad: "Unknow property: "pos" is undefinde". Moglbys mi powiedziec jak zresetowac te trasforamcje ? Troche nie rozumiem logiki ktora za tym stoi. Jesli mam samo value to moge ladnie wylsac ta wartosc do X_position (tak jak je podlaczylem) ale jak chce sie odwolac do X_Position to musze to robic przez pos.

Napisano

Witam. No tak zapomniałem dodać "$" przed dummy. Tak czy siak i tak się tego nie robi w ten sposób. Ogólnie jest tak, jeżeli obiekt w scenie nie jest podlinkowany do żadnego innego to zawsze pracuje w globalnym układzie współrzędnych, jeżeli chce się wyzerować wartości (w danym położeniu obiektu, różnym od [0,0,0]) pozycji i rotacji to trzeba zrobić freez transforma. Wciśnij lewy alt i prawy przycik myszy, pojawi ci się menu i daj freez transform. To robi nic innego jak dodanie list controllerow i nowych controlerow XYZ od pozycji i rotacji, po takim zabiegu dany obiekt dla nowego kontrolera bedzie mial wartość 0 :D ehh te definicje. Wystarczy, że zrobisz polaczenie po takim resecie, tak jak robiles wczesniej, z taka różnicą, że w drzewku position pojawi się kolejne drzewko, a ty musisz się podłączyć teraz dla osi X w drzewku "Zero pos XYZ" i powinno wszystko działać. Pozdrawiam.

  • Like 1
Napisano

Czesc. Wielkie dzieki za pomoc:). Poradzilem sobie wczesniej ale w sposob bardzo "na partyzanta" po prostu dodajac do value biezaca wartosc w X. Sposob z zerowaniem trasformacji dziala ale nie do konca mnie to satysfakcjonuje, bo to troche podobnie do tego mojego sposobu. Problem w tym ze jak przesune rig w inny miejsce ukladu wsporzednych to musze wszystko robic od nowa. Dlatego chcialbym to zrobic pierwszym sposobem. Wiec jesli chcialo by sie Tobie jeszcze mi pare rzeczy rozjasnic to bylbym wdzieczny:D. Dodalem "$" przed dummy i teraz wywala mi blad: "Unknow property:"controller" in (i tu wartosc liczbowa wspolrzednej X gdzie znajduje sie poczatkowo moj dummy) " po czym przesuwa dummy do X=0.

Nie rozumiem dlaczego trzeba dodac "$" przed dummy skoro juz dodaje jego nazwe, myslalem ze "$" oznacza aktualnie wybrany obiekt, jak to z tym "$" jest ? ;> Moglbys tez po krotce napisac co oznacza zapis po pos.[1] ? Bo rozumiem ze "$....[1]" to po prostu odwolanie sie do posX obiektu dummy001 a co to ma byc to dalej....? Probowalem szukac czegosc w helpie do maxscriptu, ale jak sie za bardzo nie wiem pod jakim pojeciem szukac to w tym gaszczu ciezko cos wygrzebac:]. Aha napisales jeszcze ze tak czy siak nie robi sie tego w ten sposob ? Co miales na mysli ? Ze nie uzywa sie wire parameters czy ogolnie ze nie uzywa sie taki wyrazen. Jest jakis szczegolny powod dlaczego sie tego tak nie robi ? Dla Ciebie pewnie to banaly i pewnie nie bardzo chce ci sie to wszystko tlumaczyc, ale gdybys mial jeszcze chwilek cierpliwosci to byloby super :). I tak sie juz dowiedzialem czegos nnowego wiec dzieki bardzo za dotychczasowa pomoc. Pozdrawiam i dorzucam repa ;)

Napisano
Moglbys tez po krotce napisac co oznacza zapis po pos.[1] ?

Hejo, jedyne co moge wytłumaczyć, to to że obiekt.pos[1] (bez kropki po 'pos') to obiekt >> tablica pozyzji (x, y, z) >> [1] - to wybiera jeden z elementów tej tablicy. Nie wiem tylko czy maxscript jest 0-index-based czy 1-index-based.

 

CHetnie przeczytałbym Super_Okową odpowiedź na reszte pytań:)

Napisano

deshu tyle to wlasnie wiem, dlatego zapytalem co oznacza ten zapis po tym ktory podalem, bo grzebalem w helpie do maxscriptu i jest tam masa o controlerach i w sumie jedyne co znalazlem co mi rozjasnilo sprawe to:

 

http://docs.autodesk.com/3DSMAX/15/ENU/MAXScript-Help/

 

gdzie dalej:

 

The track property is a simple synonym for controller . If an animatable property does not yet have a controller assigned, the isAnimated property returns false and the controller , track , and keys properties return undefined

 

Ale skoro tak to nie rozumiem dlaczego mam blad skoro ja mam juz przypisany controller ktory jest Position XYZ. Wiec mam cicha nadzieje ze SUPER_OkO jakos lopatologicznie to wylozy :], ale dzieki deshu za checi ;)

Napisano

Witam. Postaram się krótko wypowiedzieć na temat tego wszystkiego. Ogólnie dzisiaj dopiero zauważyłem, że ten wczorajszy zapis który podałem z $dumm.. jest w ogóle źle zapisany i w sumie bez sensu ;) ale czasami tak jest jak się pisze na szybko z głowy bez sprawdzenia. $nazwa zawsze odnosi się do jakiegoś obiektu w scenie... magiczne cyferki [1]... [8] pomagają skracać zapis odwołania do jakiejś "funkcji" w danym obiekcie. Czyli jak jest miliard controllerow, modyfikatorów i wszelakich rzeczy, przypisanych do obiektu można się do niego odnieść prosto, za pomocą ciągu liczb, a nie wpisując ogromne ilości danych.

 

Wracając do tematu, żebyś mógł sobie przenosić drzwi gdzie tylko chcesz to trzeba najpierw zrobić kontroller Globala, czyli jakikolwiek obiekt do, którego będzie podlinkowana cała reszta. Więc najpierw robisz sobie te drzwi itd. później robisz jakiś kwadrat do przesuwania drzwi, później podlinkowujesz wszystko tak jak wcześniej, nastepnie likujesz i dummiego i pierwsze skrzydło w hierarchi drzwi do tego Kwadrata/globala. Nastepnie freezujesz dummego i laczysz za pomocą wire param. Możesz oczywiście wpisywać liczbę...... łotewa. Zapomnij o tym zapisie "trzecim" bo to głupota co napisałem.

Napisano

Dzieki wielkie, wszystko dziala pieknie dziala. Troche zajelo mi rozkmienienie wariantu z liczba gdzie wpisywalem wartosc z pola znajdujacego sie nad timelinem co przesuwalo mi dummy w jakies dziwne miejsca, dopiero pozniej obczailem ze trzeba wpisac wartosc z pola "Key Info". Jeszcze raz dzieki

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