Maxon Developers Maxon Developers
    • Documentation
      • Cinema 4D Python API
      • Cinema 4D C++ API
      • Cineware 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
    1. Maxon Developers Forum
    2. Keith Young
    3. Posts
    K
    • Profile
    • Following 0
    • Followers 0
    • Topics 2
    • Posts 4
    • Best 0
    • Controversial 0
    • Groups 0

    Posts made by Keith Young

    • RE: Multiplying (transforming) a Vector by a Matrix - in 3 or more steps...

      "actually, you can still multiply in one line. You just have to multiply a matrix with a vector:..."

      D'oh! I'm surprised that I didn't try that - tho it doesn't seem as intuitive ("vector = some other vector, being modified by some operations" vs. "vector = a matrix, imposing/operating on some vector", etc.)... do you know why the Vector lost so many direct operators (* other Vector (Dot()), * Matrix, % other Vector (Cross()) - there may be others)?

      Apparently, you can still '!v' to normalize it (yay), even tho there's a v.Normalize() call... and I can understand why the "Identity Matrix" operator might have changed from '!' to '~'... some of the other changes just seem a bit arbitrary.

      I've already made all the changes at this point, but thanks for the tip/reply - I'll keep that in mind for future reference.

      Cheers.

      posted in Cinema 4D SDK
      K
      Keith Young
    • RE: R20 Mac development

      Thanks for the responses guys... I think I've found a virtual solution/work-around for the time-being.

      Cheers.

      posted in Cinema 4D SDK
      K
      Keith Young
    • R20 Mac development

      Question about Mac (hardware) requirement for R20 development...

      So, according to the docs, "Xcode 9" is required...

      • Xcode 9 requires OS X " Sierra macOS 10.12.4 or later" (according to the interweb - but the official stance is "High Sierra 10.13.2 or later")
      • Sierra (and/or High Sierra) will not run on my 17" iMac (5.1) circa 2006

      ...I don't really have any spare cash to buy a new (more modern) Mac, so shopping around e-bay to see what's available (for cheap).

      It looks like pretty much any Mac Mini from 2010 forward can run Sierra/High Sierra... they have early to late i3/i5/i7 CPUs, 4-8GB memory and a usable HD/SSD for a few hundred bucks (used, of course) but...

      Is there any reason you can't use one for compiling? Are there plans to require even later Mac OS X in the next few years?

      Thanks,

      Keith

      posted in Cinema 4D SDK c++ r20 sdk macos
      K
      Keith Young
    • Multiplying (transforming) a Vector by a Matrix - in 3 or more steps...

      Hi gang,

      So... back in the good-ole days (at least R14 and earlier), it was quite common in my code to have something like...

      m_xfPoints[ndx] = m_pPoints[ndx] * mxForm;    // transform point by current matrix
      

      In other words, within a loop (increasing the value of 'ndx'), you could transform all points/vertices by some matrix - with a single line of code.

      The (R20, but maybe back as far as R15?) API no longer seems to have a built-in "multiply a vector by a matrix" operator, so you end up with more lines of code, to achieve the same thing...

      Vector xfPt = m_pPoints[ndx];             // get a copy of the point...
      xfPt *= mxForm;                           // use the '*=' operator to modify it...
      m_xfPoints[ndx] = xfPt;                   // ...finally, assign it to the transformed array
      

      ...note that I had to use a new Vector to store a temporary copy of the original (so I wouldn't modify the original with the '*=' operator).

      Of course I could have done it with one less line of code...

      m_xfPoints[ndx] = m_pPoints[ndx];          // get original point value... 
      m_xfPoints[ndx] *= mxForm;                 // use the '*=' operator to modify it.
      

      ..but the above is just the most simplistic example... I have other cases where more math is done on the same (single) line of code to the point (scaling, other matrices or vectors involved, etc.), so I more often than not have to add more, separate operations.

      So... am I missing something? I'm sure there was some rationale for removing some operators (you can no longer multiply 2 Vectors either... have to use Dot(), can no longer use '%' - must use Cross(), etc.), but/so I'm just wondering what that is.

      Thanks,

      Keith

      posted in Cinema 4D SDK
      K
      Keith Young