Maxon Developers Maxon Developers
    • Documentation
      • Cinema 4D Python API
      • Cinema 4D C++ API
      • Cineware API
      • ZBrush Python API
      • ZBrush GoZ API
      • Code Examples on Github
    • Forum
    • Downloads
    • Support
      • Support Procedures
      • Registered Developer Program
      • Plugin IDs
      • Contact Us
    • Categories
      • Overview
      • News & Information
      • Cinema 4D SDK Support
      • Cineware SDK Support
      • ZBrush 4D SDK Support
      • Bugs
      • General Talk
    • Recent
    • Tags
    • Users
    • Login

    Rotations

    Scheduled Pinned Locked Moved SDK Help
    4 Posts 0 Posters 370 Views
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • H Offline
      Helper
      last edited by

      THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

      On 14/12/2009 at 11:01, xxxxxxxx wrote:

      User Information:
      Cinema 4D Version:   11 
      Platform:   Windows  ;   Mac OSX  ; 
      Language(s) :     C++  ;

      ---------
      I'm using:

        
      op->SetPos(op->GetPos()+ (trans ^ op->GetMl()));  
      

      To propel an object along one of its axis (where trans is a vector that represents a rate of movement along a particular axis per frame).

      Works a treat:)

      I thought I could do something similar with rotations by using:

        
      op->SetRot(op->GetRot()+ (trans ^ op->GetMl()));  
      

      Apparently it's a lot more complicated than that, because I don't get the desired behavior.

      Think of a plane in flight... that's the type of rotation I'm looking for.  The object I'm trying to drive isn't part of a hierarchy and I'd rather not rely on hierarchy tricks to accomplish this.  Any insight into the wonderful world of rotations would be most helpful:)

      thanks,
      kvb

      1 Reply Last reply Reply Quote 0
      • H Offline
        Helper
        last edited by

        THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

        On 14/12/2009 at 11:49, xxxxxxxx wrote:

        Why are you applying rate of movement to a rotation?  You would want rate of rotation which doesn't involve translation at all but angular momentum.  Now, if you are trying to induce a rotation from the direction vector that trans represents from one position to the next, you'll need to convert it into a delta rotation vector.

        1 Reply Last reply Reply Quote 0
        • H Offline
          Helper
          last edited by

          THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

          On 14/12/2009 at 12:11, xxxxxxxx wrote:

          Trans was meant to be a different variable in the second line of code.  I just kept it the same in this post for the sake of the reader, to keep the 2 code lines similar to show my train of thought more clearly.  In my code, the second trans variable is actually called victor (an Airplane joke... what a great movie), temporarily of course.  In hindsight, maybe I should have just copied them both exactly from my code:D

          So, in code line 2, trans equals a rate of rotation about a particular local axis (it seems no matter what I do it's always calculating the rotations based on the world coordinates).  No matter how the object is oriented in world space, I want this data to always rotate the object explicitly around it's local axis.

          sorry for the confusion,
          kvb

          1 Reply Last reply Reply Quote 0
          • H Offline
            Helper
            last edited by

            THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

            On 14/12/2009 at 16:26, xxxxxxxx wrote:

            Ok, a bit more info.  I had sort of solved this problem in the past using xpresso.  I input the rotation change per frame (for each axis) into the respective local rotation input ports of a child object of the object to be driven.  Then I output that child's global matrix into the local matrix of the parent (driven) object.

            So, it looks like I need to find a way to create a matrix that mimics a child of my object (like a ghost) that I can alter with my input data then pump its global matrix into my objects local matrix.

            1 Reply Last reply Reply Quote 0
            • First post
              Last post