løfte noe fra horisonalt til vertikalt

Moderatorer: dboydesign, Super Moderatorer, Admins

Brukeravatar

Trådstarter
jaswane
Innlegg: 46
Registrert: ons 25 jun, 2008
Sted: Oslo
Kontakt:

løfte noe fra horisonalt til vertikalt

Legg innav jaswane » tir 31 jan, 2012

Dette kan virke som et enkelt problem, men sliter med å finne en enkel og grei måte å gjøre dette på i animasjoner. Jeg lurer på hvordan man skal animere et liggende langt objekt som man løfter rett opp i ene enden til den tilslutt henger vertikalt. Den andre enden vil skli bortover underlaget til objektet henger rett ned. Det kan håndanimerers med å linke til dummy i front man animerer på rotate mens man går oppover, men det blir ofte ikke nøyaktig nok og bakre ende vil hoppe opp og ned.

På vedlagte eksempel er det langt objektet linket til bakre dummy som har look at constraint til framre dummy. beveger man framre dummy oppover har jeg brukt wireing så bakre dummy beveger seg tilsvarende framover... men det blir igrunn ikke helt riktig siden tuppen går for langt fram.

Noen som kan forklare hvordan man best mulig kan rigge dette skikkelig uten for mye tull og ball? :)

Bilde

Brukeravatar

Saihtam
Innlegg: 375
Registrert: fre 17 apr, 2009
Sted: Sunde, Kvinnherad, Hordaland, Norway

Legg innav Saihtam » tir 31 jan, 2012

Det første eg kom til å tenka på er at du kan bruka pytagoras for å plassera objektet. Tok og testa det ut i Maya og det fungarar greitt nok. Problemet er når den er vertikal, då blir det tull med matten.

I denne testen har eg eit objekt som er styrt med aim constraint[blått] og plassert i ei gruppe som blir flytta etter pytagoras. Bare for å pynte *litt* (framleis stygt hakk i overgongen) på det lagde eg eit nytt objekt til å animera[rødt] med. Og det objektet som blir vist[svart] er parent constraina mellom dei to og så har eg animert constraint forholdet.

[vimeo]http://vimeo.com/35977364[/vimeo]

Bilde

Her er koden eg brukte til pytagoras. Dei som faktisk kan dette, ikkje slå meg. Holder på å læra det skikkeleg.

Kode: Velg alt

float $height = (`getAttr distanceDimension1.dist`)/100;
float $length = 5;
float $pos;


if ($height < 5.0){
$pos = sqrt(($length * $length) - ($height * $height));
group1.translateX = $pos;
group1.translateY = 0;
}
else{
group1.translateX = 0;
group1.translateY = $height-5;
}


Og no kan nokon komme med ein betre måte å gjera det på :D
Mvh
Saihtam


hardrock_ram
Innlegg: 1502
Registrert: ons 07 feb, 2007
Sted: Kristiansand

Legg innav hardrock_ram » ons 01 feb, 2012

Kode: Velg alt

--Lager eksempelobjekter
p1 = point box:true cross:false  name:"parent" size:50 wirecolor:[0,255,0] pos:[0,0,0]
p2 = point box:true cross:false  name:"Ctrl" size:25 wirecolor:[0,255,0] pos:[0,0,0]
p3 = point box:true cross:false  name:"Slave" size:25 wirecolor:[0,255,0] pos:[0,100,0]
b1 = cylinder name: "Cylinder" radius:2 height:100 wirecolor: [255,0,0] pos:[0,100,0] dir:[0,-1,0]

--Parenter
p2.parent = p1
p3.parent = p1
b1.parent = p3

--Legger på nødvendige controllere
p2.controller.position.controller = position_list()
p2.controller.position.controller.available.controller = position_XYZ()
p2.controller.position.controller.setName 2 "CTRL"
p2.controller.position.controller.setActive  2

p3.controller.position.controller = position_list()
posCtrl = p3.controller.position.controller.available.controller = position_script()
p3.controller.position.controller.setName 2 "SLAVE"

p3.controller.rotation.controller = rotation_list()
p3.controller.rotation.controller.available.controller = euler_XYZ()
p3.controller.rotation.controller.setName 2 "SLAVE"
rotCtrl = p3.controller.rotation.controller.SLAVE.controller.X_Rotation.controller = float_script()


--skriver script
pos = "if master_zPos <100 then\n"
pos += "(\n"
pos += "A = 100*100\n"
pos += "B = master_zPos * master_zPos\n"
pos += "C = sqrt (A - B)\n"
pos += "\n"
pos += "xPos = 0\n"
pos += "yPos = C - 100\n"
pos += "zPos = 0\n"
pos += "\n"
pos += "[xPos, yPos, zPos]\n"
pos += ")\n"
pos += "else\n"
pos += "(\n"
pos += "[0,-100,master_zPos-100]\n"
pos += ")\n"

rot = "if master_zPos <100 then\n"
rot += "(\n"
rot += "   -degToRad (asin (master_zPos/100))\n"
rot += ")\n"
rot += "else\n"
rot += "(\n"
rot += "   degToRad -90\n"
rot += ")\n"

--Legger inn script i kontrollere
posCtrl.addTarget "master_zPos" p2.controller.position.controller.CTRL[3]
posCtrl.script = pos
rotCtrl.addTarget "master_zPos" p2.controller.position.controller.CTRL[3]
rotCtrl.script = rot


Kjør scriptet i maxScript Editor.
For rotasjonen benytter jeg asin, som hvis den får verdi 1 gir 90.0 tilbake. Altså omvendt av vanlig sin-funksjon
for posisjon på Y-aksen benytter jeg pythagoras. Fant den etter et kjapt søk på nettet. "sqrt" er kvadratrot.
Jeg linket begge objektene til den store hjelperen for enkelhets skyld, men det er jo bare å forandre på :)
Ctrl er navnet på hjelperen du skal trekke i :P
EDIT: havards, ta deg en bolle :D :P
if your not living on a killing ground, you better make your own

Brukeravatar

Tronotrond
Innlegg: 3748
Registrert: lør 29 okt, 2005
Sted: Houston, TX
Kontakt:

Legg innav Tronotrond » fre 17 feb, 2012

Jeg tok meg friheten til å kopiere expression-scriptet ditt Hardrockram og lagde et script som finner størrelsen, hvilken akse osv. pipen ligger i og rigger automatisk. Håper det er greit :)

Sikkert noen bugs og ting som kunne vært skrevet mere effektivt. Bare å komme mer forslag.
Tenkte iallfall det tross alt burde deles her.

EDIT: Fikset et par småbugs jeg oppdaga og la opp scriptet på nytt
EDIT EDIT: Hadde vært kult om pipen kunne løftes i begge ender. Litt for trøtt til å tenke på noen løsninger der akkurat nå, men det burde vel gå å få til..

Bilde

Download Script
Sist redigert av Tronotrond den tor 23 feb, 2012, redigert 1 gang totalt.
TD/Technical Animator, Corporate Marketing - National Oilwell Varco, Houston, TX
Freelance 3D/VFX Artist - Hille3D


hardrock_ram
Innlegg: 1502
Registrert: ons 07 feb, 2007
Sted: Kristiansand

Legg innav hardrock_ram » lør 18 feb, 2012

Du får heller spørre Pythagoras om det er greit at du bruker formelen hans ;)
Scriptet er der bare fordi det gikk raskere og mer smertefritt å skrive det for å få fram eksempelet, framfor å forklare i en post :).

Det er mulig det går an å kunne trekke i begge ender hvis man bruker toveis wiring, men jeg orker ikke engang å tenke ordentlig etter, så trøtt som jeg også er nå, hehe :P

Havards får komme med fasiten!
if your not living on a killing ground, you better make your own

Brukeravatar

Saihtam
Innlegg: 375
Registrert: fre 17 apr, 2009
Sted: Sunde, Kvinnherad, Hordaland, Norway

Legg innav Saihtam » lør 18 feb, 2012

Oooh! Nice, nice karar. Må sjå om eg klarar å tyde Maxscriptet og få til det same i Maya.
Mvh

Saihtam

Brukeravatar

Trådstarter
jaswane
Innlegg: 46
Registrert: ons 25 jun, 2008
Sted: Oslo
Kontakt:

Legg innav jaswane » lør 18 feb, 2012

Tronotrond skrev:Jeg tok meg friheten til å kopiere expression-scriptet ditt Hardrockram og lagde et script som finner størrelsen, hvilken akse osv. pipen ligger i og rigger automatisk. Håper det er greit :)

Sikkert noen bugs og ting som kunne vært skrevet mere effektivt. Bare å komme mer forslag.
Tenkte iallfall det tross alt burde deles her.

EDIT: Fikset et par småbugs jeg oppdaga og la opp scriptet på nytt
EDIT EDIT: Hadde vært kult om pipen kunne løftes i begge ender. Litt for trøtt til å tenke på noen løsninger der akkurat nå, men det burde vel gå å få til..

Bilde

Download Script


Wow det fungerte jo kjempebra og var enkelt å bruke. Tusen takk. Deilig å se du har brukt en marin riser som testobjekt. :) Takk til alle andre oppover i tråden også som har kommet med forslag. Håper andre som har slitt med samme problemstilling også kan ha nytte av dette da. Jeg kommer til å bruke dette scriptet mye tror jeg.

Brukeravatar

oophus
Innlegg: 513
Registrert: man 20 apr, 2009

Legg innav oophus » lør 18 feb, 2012

Det fungerer kanskje også å bruke cloth på slike ting som dette.

Tok en liten test her nå og det ser da ut som om det fungerer ganske greit.

[youtube]http://www.youtube.com/watch?v=Sg6aGl2HI5g&feature=youtu.be[/youtube]

Brukeravatar

Tronotrond
Innlegg: 3748
Registrert: lør 29 okt, 2005
Sted: Houston, TX
Kontakt:

Legg innav Tronotrond » lør 18 feb, 2012

Absolutt ikke dumt Oophus! Scriptet med pytagoras snapper litt kjapt og brutalt til vertikal posisjon.

Jeg tenkte på at en liten follow through hadde gjort seg. (Kanskje en spring controller?) Men iallfall i offshoresammenheng er ganske kontrollert av maskiner som også holder bunnen av pipen på plass.
TD/Technical Animator, Corporate Marketing - National Oilwell Varco, Houston, TX
Freelance 3D/VFX Artist - Hille3D

Brukeravatar

oophus
Innlegg: 513
Registrert: man 20 apr, 2009

Legg innav oophus » lør 18 feb, 2012

Tronotrond:

Ja vaieren som holder kontroll på cylinderen i det den løftes kan jo også "simuleres" tenker jeg, gjør en kjapp test nå.

Dette er med "air resistence" på 0.1 istedet for 0.01 som var orginalen. Og det ser hvertfall ut som om "noe" holder kontroll på cylinderen her.

[youtube]http://www.youtube.com/watch?v=Ak_Bs3ZdR6A&feature=youtu.be[/youtube]

Skal man ha det slik at cylinderen ikke detter mot midten med engang, så vil alt over 0.1 gjøre dette, under 0.1 så vil man få se den "svingen" som skjer i første video, så det er vell bare å leke seg litt frem med det til man får ønsket resultat.

En annen mulighet er jo også å animere en wind i simulasjonen og leke litt med det til man får det man vil ha.

Brukeravatar

Tronotrond
Innlegg: 3748
Registrert: lør 29 okt, 2005
Sted: Houston, TX
Kontakt:

Legg innav Tronotrond » lør 18 feb, 2012

Ah, ja, veldig kult! Skal absolutt titte få kikket på denne løsningen også :)
TD/Technical Animator, Corporate Marketing - National Oilwell Varco, Houston, TX
Freelance 3D/VFX Artist - Hille3D

Brukeravatar

tassel
Innlegg: 3987
Registrert: man 26 sep, 2005
Sted: Oslo
Kontakt:

Legg innav tassel » lør 18 feb, 2012

Tronotrond skrev:Ah, ja, veldig kult! Skal absolutt titte få kikket på denne løsningen også :)


Jeg gleder meg til du er ferdig med det neste "cloth-riser-pipe handling" scriptet ditt :wink:


Gå tilbake til «Animering og rigging»

Hvem er online

Brukere i dette forumet: Ingen registrerte brukere og 2 gjester

cron