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

    how to get data position and pint out?

    Scheduled Pinned Locked Moved PYTHON Development
    14 Posts 0 Posters 1.2k 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

      On 26/03/2015 at 01:57, xxxxxxxx wrote:

      Hello,

      Showing the position in degree doesn't make sense. Do you mean the rotation? You can get the rotation vector from the matrix using MatrixToHPB(). The result is a rotation in radians, so you would have to convert the values to degree yourself with Deg().

      The Cinema 4D Python API does not provide any specific functions to write files. But of course you can use the standard Python libraries to access files.

      best wishes,
      Sebastian

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

        On 27/03/2015 at 00:14, xxxxxxxx wrote:

        i have tried use MatrixToHPB but it doesnt work. and then i tried VectorToHPB and it works. but the third coloumn always "0". How come? this is my code
        import c4d
        #Welcome to the world of Python

        def main() :
          pass  #put in your code here
         
          a = op.GetObject().GetMg().off
          b = c4d.utils.MatrixToHPB(a)
          print a
        Inline image 1

        Inline image 2
        and how to convert values to deg?

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

          On 27/03/2015 at 00:22, xxxxxxxx wrote:

          def main() :
            pass  #put in your code here
           
            a = op.GetObject().GetMg().off
            b = c4d.utils.VectorToHPB(a)
            print b

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

            On 27/03/2015 at 00:28, xxxxxxxx wrote:

            Vector(3.144, 0.239, 0)
            Vector(3.144, 0.256, 0)
            Vector(3.144, 0.273, 0)
            Vector(3.145, 0.29, 0)
            Vector(3.145, 0.306, 0)
            Vector(3.145, 0.322, 0)
            Vector(3.145, 0.336, 0)
            Vector(3.146, 0.35, 0)
            Vector(3.146, 0.361, 0)
            Vector(3.147, 0.371, 0)
            Vector(3.147, 0.379, 0)
            Vector(3.147, 0.385, 0)
            Vector(3.148, 0.39, 0)
            Vector(3.148, 0.394, 0)
            Vector(3.148, 0.396, 0)
            Vector(3.148, 0.397, 0)
            Vector(3.148, 0.397, 0)
            Vector(3.148, 0.395, 0)
            Vector(3.148, 0.393, 0)
            Vector(3.148, 0.389, 0)
            Vector(3.148, 0.385, 0)

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

              On 27/03/2015 at 01:52, xxxxxxxx wrote:

              Hello,

              as the name suggests MatrixToHPB() must be used with a Matrix, not with the translation vector as in your code. And as said before, turning the position into a rotation using VectorToHPB() does not seem to make sense. As you can read in the documentation, VectorToHPB() will always return a rotation with bank set to zero.

              best wishes,
              Sebastian

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

                On 27/03/2015 at 02:00, xxxxxxxx wrote:

                Hello,

                the first case:
                you´ll need to feed the matrix not the offset vector from this matrix

                a = op.GetObject().GetMg()
                b = c4d.utils.MatrixToHPB(a)

                the second case:
                euler angle always gives you a zero banking back it calculates the direction with a fixed rotation around this direction

                a = op.GetObject().GetMg().off
                b = c4d.utils.VectorToHPB(a)

                for a complex track you might think about flipping conditions or quaternions.

                rad to degree: c4d.utils.Deg( r )
                or
                rad = HPB * math.pi / 180

                Hope this helps?
                Best wishes
                Martin

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

                  On 02/04/2015 at 07:17, xxxxxxxx wrote:

                  Hello Yefta

                  was your question answered?

                  best wishes,
                  Sebastian

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

                    On 05/04/2015 at 23:02, xxxxxxxx wrote:

                    hello Martin.

                    yes, it helps. but i still cant transform to degree. it shows "a float is required".

                    can u help me out?

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

                      On 05/04/2015 at 23:14, xxxxxxxx wrote:

                      hello s_bach

                      i'm sorry, been off for a while. yes it's answered, but not all.

                      if i type  c4d.utils.Deg(b)
                      it shows in console "TypeError : a float is required"

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

                        On 06/04/2015 at 04:21, xxxxxxxx wrote:

                        Hello Yefta,

                        sorry my answer was a little sloppy.
                        This should answer your question ...

                          
                          rad = c4d.Vector(0,1,1)  
                          deg = c4d.Vector(c4d.utils.Deg(rad.x),c4d.utils.Deg(rad.y),c4d.utils.Deg(rad.z))  
                          print deg  
                            
                          deg2 =  180/math.pi*rad  
                          print deg2  
                        

                        Best wishes
                        Martin

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

                          On 16/04/2015 at 00:35, xxxxxxxx wrote:

                          thanks martin. 😄

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