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
    • Unread
    • Recent
    • Tags
    • Users
    • Login

    matching object rotation and position

    SDK Help
    0
    5
    538
    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
      Helper
      last edited by

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

      On 10/03/2004 at 00:43, xxxxxxxx wrote:

      User Information:
      Cinema 4D Version:   8.200 
      Platform:   Windows  ;   
      Language(s) :   C.O.F.F.E.E  ;   XPRESSO  ;

      ---------
      I´m trying to match the rotation and postion of a bone. Everything works fine as long as I dont rotate the bone; my snippet:

        
      //I have created the cube object beforehand as an example  
      var bonePos = stepObject->GetPosition();  
      var boneScale = stepObject->GetScale();  
      var boneRot = stepObject->GetRotation();          var cnt_cube->SetData(PRIM_CUBE_LEN, vector(100,100,200));  
      cube->SetContainer(cnt_cube);  
      cube->SetRotation(boneRot);   
      cube->SetPosition(bonePos);  
      

      The rotation is almost matched, but there is an off off the position. I have searched the forum, but only came up with a thread of someone with the same problem, like wise him, I have also tried using the Global coodinates of both objects to no avail. I have also tried changing the order of the commands rotating first then positioning

      Thanks for any help or tips in advance
      (sorry for the the bad code formatting, I couldnt get it right in the provided textfield)

      nhytro

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

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

        On 10/03/2004 at 02:17, xxxxxxxx wrote:

        Have you made sure that the cube's axis is at one of the ends? (That's where the bone's axis is.) If it's a parametric cube you cannot move its axis. The easiest way would probably be to just place the cube in an empty object. Otherwise you'll have to work out some (easy) 3D math to add an offset.

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

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

          On 10/03/2004 at 07:31, xxxxxxxx wrote:

          Actually I wanted the axis of both objects to match the axis of the bone(root of the bone in the case) This works when the bone is not rotated. Do u have a small example of the easy 3d math you are talking about?

          Thanks in advance Mikael

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

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

            On 11/03/2004 at 15:32, xxxxxxxx wrote:

            To only align the axes, the following code will always work:

                
                
                cube->SetMg(bone->GetMg());
            

            To add an offset to this, to account for the centered axis of the cube, you would have to do:

                
                
                var bmg = bone->GetMg();  
                bmg->SetV0(bmg->GetV0() + bmg->GetV3() * 100);   
                cube->SetMg(bmg);
            

            100 is half the cube's Z length. We're positioning the cube 100 units off the bone's axis along the bone's Z axis.

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

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

              On 12/03/2004 at 00:22, xxxxxxxx wrote:

              Great thanks Mikael

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