Collision Deformer, eller lignende for 3ds max

Moderatorer: Super Moderatorer, Admins

Brukeravatar

Trådstarter
treigzak
Innlegg: 42
Registrert: fre 16 jun, 2006
Sted: Drøbak, Akershus
Kontakt:

Collision Deformer, eller lignende for 3ds max

Legg innav treigzak » ons 07 des, 2011

Heisann, jeg ser etter en collision deformer plugin/script til 3ds max, noe lignende maya plug innen som vises 1:13 i dette klippet [vimeo]http://vimeo.com/23455409[/vimeo] eller noen ideer for alternativ fremgangsmåte.


Det jeg prøver å få til er at en propell skal "modellere" inn en form i en helt primitiv sylinder. Både propellen og sylinderen er keyframed, og roteres 360 grader for å kunne få et jevnt mønster rundt hele sylinderen. Kjapt klipp som viser hva jeg tenker på: [youtube]http://www.youtube.com/watch?v=x4dEylZKRXA[/youtube]

Dersom noen vet om en alternativ metode jeg kan bruke, så godtas det gjerne, har ikke drevet med så veldig mye modellering så at det finnes en bedre måte tviler jeg ikke på! :) Sporene som kuttes inn i sylinderen må være symmetriske og passe så og si perfekt med propellen, så det å modellere dette for hånd virker litt tungvint ettersom jeg må ha en ganske høy polycount på sylinderen.

Tenkte først at en boolean hadde holdt, men slik gikk det ikke.. :P

Brukeravatar

havards
Innlegg: 211
Registrert: ons 13 des, 2006

Legg innav havards » ons 07 des, 2011

Hvis du kan maxscript så tror jeg ikke det er noe problem å få det scritpet. Hvis ikke, så kan kanskje cloth fungere, men det høres litt tungvindt ut.
02:14 Misfortune • hun skjuler så jævlig mye i smutthølet
http://folk.ntnu.no/havardsc/site/wordpress/

Brukeravatar

Trådstarter
treigzak
Innlegg: 42
Registrert: fre 16 jun, 2006
Sted: Drøbak, Akershus
Kontakt:

Legg innav treigzak » ons 07 des, 2011

Prøvde forsåvidt litt med reactor softbody, men fikk det ikke til. Har ikke så mye peiling på det at det gjør noe akkurat, så mulig jeg gjorde det på galt sett der og :P

Har ikke mye peil på å scripte heller, så om det fantes et ferdiglagd script der ute så hadde det vært supert. Kanskje jeg googler etter feil script, vet ikke helt hva det jeg søker etter kalles :?

Brukeravatar

oophus
Innlegg: 513
Registrert: man 20 apr, 2009

Legg innav oophus » ons 07 des, 2011

Du kan teste dette:

Put Vol.Select på sylinderen, sett den til vertex og "mesh object" (velg propellen). Put på soft selection, og lek litt med kurven der til du får et resultat som fungerer.
Dermed kan du bruke Push modifieren f.eks over i stacken som kun går på vol.select vertexene.


Aner ikke om det var greit forklart.. ?

Brukeravatar

Trådstarter
treigzak
Innlegg: 42
Registrert: fre 16 jun, 2006
Sted: Drøbak, Akershus
Kontakt:

Legg innav treigzak » ons 07 des, 2011

oophus skrev:Du kan teste dette:

Put Vol.Select på sylinderen, sett den til vertex og "mesh object" (velg propellen). Put på soft selection, og lek litt med kurven der til du får et resultat som fungerer.
Dermed kan du bruke Push modifieren f.eks over i stacken som kun går på vol.select vertexene.


Aner ikke om det var greit forklart.. ?



Joda var grei forklaring det :p
Kom over dette da jeg var på google runden min, men det blir ikke slik jeg ønsker å ha det ettersom volume select og push dytter vertexene inn på max push styrke selv om bare en bitteliten del av propellen er inni cylinderen. Jeg trenger å få sylinder meshen til å dyttes inn bare så mye som propellen dytter inn i sylinderen. Og så trenger jeg å ha den formen som skapes på sylinderen til å bli værende igjen i ettertid etter at vertexene dyttes, som om sylinderen var laget av leire.

Brukeravatar

havards
Innlegg: 211
Registrert: ons 13 des, 2006

Legg innav havards » ons 07 des, 2011

Det vil ikke fungere out of the box fordi max ikke "husker" seleksjonen når cylinderen roterer og dermed får man bare deformasjon der propellen er. Nå har jeg faktisk et script som fikser akkurat det :D
http://folk.ntnu.no/havardsc/site/wordpress/?page_id=124
02:14 Misfortune • hun skjuler så jævlig mye i smutthølet

http://folk.ntnu.no/havardsc/site/wordpress/

Brukeravatar

havards
Innlegg: 211
Registrert: ons 13 des, 2006

Legg innav havards » tor 08 des, 2011

Men når det er sagt så tror jeg en scriptet løsning hadde vært best og mest accurate, jeg kan kanskje se på det på mandag om jeg har tid.
02:14 Misfortune • hun skjuler så jævlig mye i smutthølet

http://folk.ntnu.no/havardsc/site/wordpress/

Brukeravatar

Trådstarter
treigzak
Innlegg: 42
Registrert: fre 16 jun, 2006
Sted: Drøbak, Akershus
Kontakt:

Legg innav treigzak » tor 08 des, 2011

Lagde et nytt kjapt klipp med booleans og springs for å vise sånn ca hvordan sporene til propellen vil bli dersom propellen skaper dem. [youtube]http://www.youtube.com/watch?v=ty86e9d8Yx0[/youtube] Trenger noe sånt, men bare mye mer nøyaktig tilpasset propellen

havards skrev:Men når det er sagt så tror jeg en scriptet løsning hadde vært best og mest accurate, jeg kan kanskje se på det på mandag om jeg har tid.

Det hadde vært super kjekt, om jeg ikke finner ut av det innen den tid :D

Brukeravatar

havards
Innlegg: 211
Registrert: ons 13 des, 2006

Legg innav havards » tir 13 des, 2011

Fant du en løsning på det?
Jeg knotet litt med det i kveld og fikk mekket en liten og veldig enkel prototyp lik den deformeren du refererte til i den første videoen. Fortsatt en lang vei å gå og ikke akkurat det du er ute etter enda, men kan vise hvor langt jeg kom, med en liten test:
http://folk.ntnu.no/havardsc/misc/knotRot.mov
02:14 Misfortune • hun skjuler så jævlig mye i smutthølet

http://folk.ntnu.no/havardsc/site/wordpress/


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

Legg innav hardrock_ram » tir 13 des, 2011

Du er rå havards :P Kan du legge ut scriptet her? Hadde vært fett å se ... :)
if your not living on a killing ground, you better make your own

Brukeravatar

havards
Innlegg: 211
Registrert: ons 13 des, 2006

Legg innav havards » ons 14 des, 2011

Så langt kom jeg på mandag, har ikke gjort noe siden da. Må prioritere litt tid til eksamenslesing også C:
Atm. så blir meshen ofte veldig rotete der derformeren påvirker, er rayskytinga og barycentric-koordinatene som løker seg opp tror jeg, men med en relax-modifier på toppen så blir det bedre. Så det er fortsatt en del å gjøre.

Kode: Velg alt

(
   fn deformObject obj target curTime: build:true =
   (
      --local start = timestamp()
      if build or ::impalerRayMeshGridIntersectRT == undefined then
      (
         global impalerRayMeshGridIntersectRT = rayMeshGridIntersect()
         ::impalerRayMeshGridIntersectRT.initialize 10
         ::impalerRayMeshGridIntersectRT.addNode target
         ::impalerRayMeshGridIntersectRT.buildGrid()
      )

      local objMesh = snapshotAsMesh obj
      local targetMesh = snapshotAsMesh target
      local vertSel = getVertSelection objMesh
      if vertSel.isEmpty do
         vertSel = #{1..objMesh.verts.count}
      local tPos = target.pos
      local threshold = 45
      local setMethod = if classof obj == editable_poly then polyop.setVert else meshop.setVert
      for v in vertSel do
      (
         local normal = getNormal objMesh v
         local vPos = getVert objMesh v
         local targetDir = normalize (tPos - vPos)
         local vAngle = acos (dot targetDir normal)
         if length normal > 0 and vAngle <= threshold then
         (   
            hit = ::impalerRayMeshGridIntersectRT.intersectRay vPos (-normal) true
            if hit > 0 then
            (
               local bCords = ::impalerRayMeshGridIntersectRT.getHitBary hit   
               local tV = meshop.getVertsUsingFace targetMesh (::impalerRayMeshGridIntersectRT.getHitFace hit)
               local tVPos = for i in tV collect getVert targetMesh i
               newPos = bCords.x * tVPos[1] + bCords.y * tVPos[2] + bCords.z * tVPos[3] 
               --newPos = meshop.getFaceCenter targetMesh (::impalerRayMeshGridIntersectRT.getHitFace hit)
               setMethod obj.baseobject v newPos
            )
         )
      )
   --   format "Done.. %s.\n" ((timestamp() - start) / 1000.0)
   )
   fn setTangentType obj type =
   (
      for c in getPointControllers obj where classof c == bezier_point3 do
      (
         for k in c.keys do
            k.outTangentType = type
      )
      
   )
   fn animateDeformation deformer target start end updateViewport =
   (
      if superClassOf target == geometryClass then
      (
          if classOf target != editable_mesh  then
            convertToMesh target
         with redraw updateViewport
            with animate on
               for t = start to end do
               (
                  sliderTime = t
                  with undo (t == start or t == end)
                     deformObject target deformer curTime:t
               )
         setTangentType target #step
         sliderTime = start
      )
      else
         messageBox "Target is not a valid object"
   )
/*     delete $*
   clearListener()
   --fancyFNName (convertTo (geosphere pos:[0,0,100]) polymeshobject) $Box001
   local target = convertToMesh (plane lengthSegments:25 widthSegments:25 length:140 width:140) --polyMeshObject
   local deformer = convertTo (geoSphere pos:[0,0,100]) polyMeshObject
   local build = true

   when transform deformer change do
   (
      deformObject target deformer build:true
   ) */
   
   rollout rolDialog "Knøvvel"
   (
      pickbutton pBtnDeformer "Deformer" align:#right width:50
      pickbutton pBtnTarget "Target" align:#right width:50
      checkBox cBUpdateViewport "Update viewport" checked:true across:2
      button btnAnimate "Animate" align:#right width:50
      
      on pBtnDeformer picked obj do
         pBtnDeformer.text = obj.name
      on pBtnTarget picked obj do
         pBtnTarget.text = obj.name
      on btnAnimate pressed do
         animateDeformation pBtnDeformer.object pBtnTarget.object animationrange.start.frame animationrange.end.frame cBUpdateViewport.checked
   )
   createDialog rolDialog 180 100
)
02:14 Misfortune • hun skjuler så jævlig mye i smutthølet

http://folk.ntnu.no/havardsc/site/wordpress/


Gå tilbake til «Modellering»

Hvem er online

Brukere i dette forumet: Ingen registrerte brukere og 3 gjester

cron