10. Februar 2012, 07:58:56 *
Willkommen Gast. Bitte einloggen oder registrieren.

Einloggen mit Benutzername, Passwort und Sitzungslänge
News: Coole Story gleich cooler Film? Diskusion hier im Forum...
 
   Übersicht   back to mac Hilfe Suche Einloggen Registrieren  
Seiten: [1]
  Drucken  
Autor Thema: snapping tool  (Gelesen 274 mal)
Norweschendir
Lampendompteur
Globaler Moderator
Hero Member
*****
Beiträge: 1035



WWW
« am: 15. Mai 2008, 23:43:29 »

hallo!
ich such nen tool, das mir zb locators exakt aufeinder snappt, sowohl translate als auch rotate werte. man beachte allerdings, das das nicht mit einfach werte kopieren getan ist, da diese ja durch history verändert wurden sein könnten (zb durch modify -> freeze transformations)

erklärung verständlich oder bild?

mfg
dor elch
Moderator informieren   Gespeichert

"mein Face, meine Kurve, mein Auto, meine Freundin... und äh extrude..."
Original von MAC im Video Polygonmodeling 2

"Es ginge manches besser, wenn man ruhiger ginge"
von Johann Gottfried Seume
mac
Administrator
Hero Member
*****
Beiträge: 908



WWW
« Antworten #1 am: 16. Mai 2008, 23:25:37 »

Bild  oder ne Erklärung warum du das willst. Zu sagen was man erreichen will ist meist besser
als eine Problem an dem man festhängt für das es aber eine ganz einfach, völlig andere Lösung gibt.


cheers
mac
Moderator informieren   Gespeichert

menschen die für alles offen sind - sind meist nicht ganz dicht..
Norweschendir
Lampendompteur
Globaler Moderator
Hero Member
*****
Beiträge: 1035



WWW
« Antworten #2 am: 17. Mai 2008, 13:40:07 »

also, ich will, im zuge des animierens und der benötigten constraints, locators so übereinander legen, das sie exakt gleich sind. den, wenn ich ein objekt von einem locator zu einem anderen locator per parent constraint übergebe, und die nicht exakt deckungsgleich sind, springt das objekt. und genau das will ich vermeiden.

zum beispiel (siehe anhang):
ich hab den loc2 mit den rechts neben stehenden eigenschaften. wie man sieht liegt der irgendwo im raum. und jetzt will ich, das der loc1 genau zu den absoluten (welt) translate und rotate werten "snapt", welche der loc2 inne hat.
das problem sind eben die absoluten werte. den er schreibt dort ja nur die relativen werte rein, also die, die man zb durch modifiy -> freeze transformation auch mal auf null setzen kann, obwohl sich das objekt gar nicht im welt-ursprung befindet.
mit snap to point kann ich zumindest die translate werte exakt deckungsgleich hinbekommen, aber rotate ist dann immer noch nicht exakt. (die werte kopieren würde nix bringen, da die ja relativ sind, und nicht absolut zur welt)

hoffe es ist klarer? wenn nicht, nochmal fragen.

mfg
dor elch


* snap_bsp.PNG (6.79 KB, 607x215 - angeschaut 38 Mal.)
Moderator informieren   Gespeichert

"mein Face, meine Kurve, mein Auto, meine Freundin... und äh extrude..."
Original von MAC im Video Polygonmodeling 2

"Es ginge manches besser, wenn man ruhiger ginge"
von Johann Gottfried Seume
mac
Administrator
Hero Member
*****
Beiträge: 908



WWW
« Antworten #3 am: 18. Mai 2008, 03:49:31 »

Also so ganz blicke ich das nicht.
Du willst 2 Locator in exact dieselbe Position bringen? Währen der Animation? Liegen die Immer aufeinnander?
Was macht es fürn Sinn die Weight von ggf. 2 Locatoren auf ein Objekt wirken zu lassen wenn die genau aufeinander liegen. Da kann ich mir einen doch gleich sparen Grinsend

Wenns denn sein muss - machs doch über ne Expression


cheers
mac


Moderator informieren   Gespeichert

menschen die für alles offen sind - sind meist nicht ganz dicht..
Norweschendir
Lampendompteur
Globaler Moderator
Hero Member
*****
Beiträge: 1035



WWW
« Antworten #4 am: 18. Mai 2008, 17:38:16 »

also eigentlich hast du's "geblickt".

machen wir mal nen bsp: ne hand hat ein glass in der hand und soll das auf dem tisch abstellen. darum geb ich jetzt der hand nen locator namens hand_loc. und dem tisch geb ich nen locator namens tisch_loc. das glass binde ich jetzt an beide locators. bei start meiner animation is weight hand_loc auf 1 und weight tisch_loc auf 0. also folgt das glass meiner hand überall in - was es ja auch soll. jetzt stellt die hand das glass auf dem tisch ab und ich ändere das weight attribut in hand_loc 0; tisch_loc 1. jetzt steht mein glass auf dem tisch - was es ja auch soll.
das problem: der hand_loc und tisch_loc haben nicht die selben translate und rotate werte, also sieht man in der späteren animation einen sprung, in dem moment in dem das weight attribut geändert wird. darum müssen die beiden locators deckungsgleich sein.

und ja, ich würde es liebend gern über eine expression lösen, aber ich bin zu blöd. und ich wüsste noch nicht mal wo ich überhaupt anfangen sollte nach einer lösung zu suchen. da ich davon ausgeh, das es mit transX.hand_loc = transX.tisch_loc nicht getan ist... dann werden sich sicher nur die relativen werte angleichen aber nicht die absoluten (welt) um die es mir ja geht.

mfg
dor elch
Moderator informieren   Gespeichert

"mein Face, meine Kurve, mein Auto, meine Freundin... und äh extrude..."
Original von MAC im Video Polygonmodeling 2

"Es ginge manches besser, wenn man ruhiger ginge"
von Johann Gottfried Seume
mac
Administrator
Hero Member
*****
Beiträge: 908



WWW
« Antworten #5 am: 19. Mai 2008, 01:01:00 »

Aaaahaa...

DAS Problem kenne ich. Es gibt in MAYA, soweit ich weiß, keinen Weg 2 Objekte ( ob Locator oder was auch immer) perfekt aufeinander zu snappen. Das ist sehr aufwendig zu machen. Eben mit Blick darauf das ja ein Freeze Transforn da sein kann.

Was es aber gibt -  ist ein Script das deutlich macht wie schwer es ist...nämlich das hier :


global proc objectSnap()
{
      string $list[] = `ls -sl`;
      int $len = size($list);
      if ($len < 2) {
          error "must select at least two objects";
          return;
      }
      float $trans[16] = `xform -q -ws -m $list[$len-1]`;
      float $rp[3];
      float $sp[3];

      // copy the locator local position too
      float $locator[3];
      string $shape, $shapes[];
      if (`objectType $list[$len-1]` == "locator")
  $shape = $list[$len-1];
      else if (`objectType $list[$len-1]` == "transform") {
         $rp = `getAttr ($list[$len-1]+".rp")`;
         $sp = `getAttr ($list[$len-1]+".sp")`;
  $shapes = `listRelatives -s $list[$len-1]`;
         if (size($shapes)) $shape = $shapes[0];
      }
      if (`objectType $shape` == "locator") {
         $locator[0] = `getAttr ($list[$len-1]+".localPositionX")`;
  $locator[1] = `getAttr ($list[$len-1]+".localPositionY")`;
  $locator[2] = `getAttr ($list[$len-1]+".localPositionZ")`;
      }

      int $i = 0;
      for (; $i < $len - 1; $i++) {
          xform -ws -m
                $trans[0] $trans[1] $trans[2] $trans[3]
                $trans[4] $trans[5] $trans[6] $trans[7]
                $trans[8] $trans[9] $trans[10] $trans[11]
                $trans[12] $trans[13] $trans[14] $trans[15]
                $list[$i];

   // locator
          $shape = "";
   if (`objectType $list[$len-1]` == "locator")
       $shape = $list[$len-1];
    else if (`objectType $list[$len-1]` == "transform") {
              setAttr -type double3 ($list[$i]+".rp") $rp[0] $rp[1]
$rp[2];
              setAttr -type double3 ($list[$i]+".sp") $sp[0] $sp[1]
$sp[2];
       $shapes = `listRelatives -s $list[$len-1]`;
             if (size($shapes)) $shape = $shapes[0];
          }
          if (`objectType $shape` == "locator")
   {          setAttr ($list[$i]+".localPositionX") $locator[0];
              setAttr ($list[$i]+".localPositionY") $locator[1];
              setAttr ($list[$i]+".localPositionZ") $locator[2];
   }
      }
  }




Damit kannst du 2 Objekte exakt übereinander packen was Translate und Rotate betrifft.

Ist aber in deinem Fall nicht nötig, denn es gibt in MAYA unter Constraints nun ( Endlich ) eine Möglichkeit
mit "Set Rest Position" dem Objekt zu sagen das es genau da bleiben soll wo es sich in dem Frame wo du das gesetzt hast befindet. Kannst du in dem Playblast sehen. ich habe da nur mit einem Locator gearbeitet - der reicht nun auch.  Wichtig ist das du das "Set Rest Position" ausführst BEVOR du das Weight auf 0 keyst!

btw... Ist ne gute Angewohnheit den Locators  Namen zu geben. PointConstraint Wo:1 ist ja ok, aber wenn du 100 Locator in de Scene hast wirds schwer den Richtigen zu finden. Du musst dem Locator den Namen aber geben BEVOR du den Constraint ausführst. Wenn du den danach änderst kann MAYA das nicht durchreichen.

Was anderes wäre wenn du einen "Hand Over" machen willst. da kommst dann nicht drum herum. Und schön die Tangets auf "Steppt" stellen für die Übergabe. Bei "Spline" sieht das aus wie Kaugummi  Grinsend


cheers
mac


Moderator informieren   Gespeichert

menschen die für alles offen sind - sind meist nicht ganz dicht..
Norweschendir
Lampendompteur
Globaler Moderator
Hero Member
*****
Beiträge: 1035



WWW
« Antworten #6 am: 19. Mai 2008, 01:33:45 »

 Grinsend genau das meint ich  Grinsend

und zu deinen tipps, ja, die beherzige ich schon eine ganze weile... ich geb sogar fast jedem objekt einen namen... in meinem (immer noch nicht fertigem) elch mech intro hab ich ja nun auch schon weit mehr als 200 objekte und fast aller in ner gruppe und auch einige die prinzipiell hidden sind, da die nur "niedere" arbeiten zutun haben und mehr oder minder nur zur übergabe von irgendwas auf was anderes da sind. ( = locator)

kurz um willst du mir sagen, das maya dieses snapping tool ab 2008 von haus aus mitbringt?

{ hät ich nie im lem hinbekomm }

danke mac!

mfg
dor elch
Moderator informieren   Gespeichert

"mein Face, meine Kurve, mein Auto, meine Freundin... und äh extrude..."
Original von MAC im Video Polygonmodeling 2

"Es ginge manches besser, wenn man ruhiger ginge"
von Johann Gottfried Seume
mac
Administrator
Hero Member
*****
Beiträge: 908



WWW
« Antworten #7 am: 19. Mai 2008, 09:31:12 »

Moin Elch,

tja, leider nicht. Ich habe auch schon nach sowas gesucht. Den Script habe ich von Highend3D mal irgendwann geholt als ich dasselbe Problem hatte.
Ob "SetRestPosition" nun erst in MAYA 2008 verfügbar ist kann ich gar nicht sagen. Wenn das bei 8.5 nicht unter Constrains steht, dann wärs blöd.  Grinsend

in dem Fall - pack dir das Script einfach aufs Shelf. Das funzt prima.

cheers
mac
Moderator informieren   Gespeichert

menschen die für alles offen sind - sind meist nicht ganz dicht..
Seiten: [1]
  Drucken  
 
Gehe zu:  

Powered by SMF 1.1.7 | SMF © 2006, Simple Machines LLC