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
    1. Maxon Developers Forum
    2. Keith Young
    3. Posts
    The Maxon SDK Team is currently short staffed due to the winter holidays. No forum support is being provided between 15/12/2025 and 5/1/2026. For details see Maxon SDK 2025 Winter Holidays.
    K
    Offline
    • Profile
    • Following 0
    • Followers 0
    • Topics 2
    • Posts 4
    • Groups 0

    Posts

    Recent Best Controversial
    • 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