Topic: drivers doen vreemd  (gelezen 4186 keer)


Offline Ezra

  • Member
  • *
  • Berichten: 206
    • Bekijk profiel
« Gepost op: 09 augustus 2014, 18:38:59 pm »
Ik zit een beetje met een probleem met drivers waarbij ik het echt niet meer weet.

Het gene wat ik probeer te doen is simpel:

Ik probeer met behulp van drivers er voor te zorgen dat je beide wielen kunt laten draaien door die pijlvormige ronde bone in het midden van de as te laten draaien. Nou weet ik dat er veel simpelere manieren zijn om dit voor elkaar te krijgen, maar ik probeer het met drivers omdat die ook in iets andere situaties redelijk hetzelfde te gebruiken zijn.

Ik heb het als volgt opgezet:

Ik heb een driver gezet op de y-rotatie van de wielen (allebei 1 object), die de waarde aanneemt van de y-rotatie van de bone die in het midden van de as zit.
Het probleem zit hem er alleen in dat blender kennelijk niet goed in staat is de rotatie van die bone in een variabele te stoppen. Ik heb om het te testen de bone ongeveer een rondje laten draaien over een periode van 100 frames.
De eerste 2 frames gaat het wiel achteruit.
Daarna tot frame 73 vooruit.
En daarna tot frame 100 wéér achteruit.

Bij de debug waarden is ook te zien dat de waarde die blender af leest voor de y-rotatie van de bone absoluut niet even constant oploopt als de werkelijke y-waarde.

Nou is dit hier niet zo'n probleem omdat er betere manieren zijn, maar ik zou erg graag willen weten waarom dit zo vreemd werkt, en wat ik er aan kan doen, voor het geval ik zoiets nog een keer tegen kom waarbij er geen andere oplossing is.
Google heeft werkelijk helemaal niks opgelevert, dus hopelijk weet iemand hier waarom dit zo is en hoe ik het wel kan doen met drivers.

Offline JvL

  • Member
  • *
  • Berichten: 3,415
    • Bekijk profiel
    • Llyr Studio
« Reactie #1 Gepost op: 09 augustus 2014, 19:05:47 pm »
Zit het probleem wel in de driver? Ik weet niet hoe je de rotatie gekeyframed hebt maar bij een rotatie van (bijna) 360 graden met een start en eind keyframe gaat het vaak mis. Je kunt de rotatie dan beter in meerdere stappen maken dus bv. opdelen in 2 rotaties van 180 graden.
In principe leest een driver alleen maar info uit en vertaald dat naar iets anders maar bepaalt zelf niets. Hij kan dus niet zomaar iets fout doen zolang hij goed ingesteld is en je instellingen zien er normaal uit.

Succes.

Offline Ezra

  • Member
  • *
  • Berichten: 206
    • Bekijk profiel
« Reactie #2 Gepost op: 09 augustus 2014, 21:01:05 pm »
Het probleem zit hem er in dat de driver het vreemd afleest. Ik weet dat de driver het afleest in radialen, terwijl het in de 3d view aangegeven wordt in graden, maar wat er gebeurt is dat de y-rotatie in de 3d view constant oploopt van 0 naar ongeveer 300 graden, terwijl in de driver view hij aangeeft dat het eerst oploopt naar iets meer dan 1 radiaal, dan naar beneden gaat en zelfs negatief wordt, en daarna omhooggaat naar ongeveer 5 radialen.

Offline JvL

  • Member
  • *
  • Berichten: 3,415
    • Bekijk profiel
    • Llyr Studio
« Reactie #3 Gepost op: 10 augustus 2014, 11:31:40 am »
In de image van de driver zie ik onderin wel staan dat de driverwaarde van 1.404 gelijk staat aan 80.4 graden dus hij rekend het schijnbaar toch om.
Verder zou ik ook niet weten waarom het niet goed gaat.
Misschien dat iemand anders hier een oplossing weet.

Offline PKHG

  • Member
  • *
  • Berichten: 718
    • Bekijk profiel
« Reactie #4 Gepost op: 11 september 2014, 08:36:27 am »
hmm, ik heb maar twee cylinders aan een gewone armature, een bone, gekoppeld via y euler rotation

en de twee cylinders draien keuring regelmatig in de zelfde snelheid als de bon rond.

WAT heb ik daartoe gedaan, minstens 3 dingen
In de User Preference gebruik van Python toegestaan en dus gebruikt!
Een cylinder gekoppeld aan de bone en gedoupliceerd. y-rotation

EN dan de bone maar laten  (rotate y ) draaien van frame 1 t/m frame 41 (of zo, doet er niet toe)
en dan de curve van de bone netjes een rechte lijn laten worden !!! dat levert gelijkmatigheid op

Als je wilt dat ik 'verder' ga kijken moet je me maar een (vereenvoudigd?) *.blend sturen ...
dan kan men ECHT gaan kijken wat wel en wat niet goed gaat ;-)



Doei
       Peter