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

    Setting third-party tag parameters

    Scheduled Pinned Locked Moved SDK Help
    4 Posts 0 Posters 348 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 09/07/2010 at 08:20, xxxxxxxx wrote:

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

      ---------
      Hi,

      Can anyone offer any hints as to why this isn't working? What I'm trying to do is add a Vray light to a scene. This is the relevant code:

        
      Bool SIBLDialog::CreateVraySun(BaseDocument *doc, BaseObject *parent, BaseObject *prev)   
      {   
           BaseObject *sunLight;   
           GeData param;   
           BaseTag *ltag = NULL;   
              
           sunLight = BaseObject::Alloc(Olight);   
           if(sunLight)   
           {   
                sunLight->SetName("sIBL_Sun");   
                doc->InsertObject(sunLight, parent, prev, FALSE);   
                doc->AddUndo(UNDO_NEW, sunLight);   
                // add a Vray light tag   
                ltag = BaseTag::Alloc(Vlighttag);   
                if(ltag)   
                {   
                     param.SetLong(VRAYLIGHTTAG_COMMON_LIGHTTYPE_2);                         // Vray infinite light   
                     ltag->SetParameter(DescID(VRAYLIGHTTAG_COMMON_LIGHTTYPE), param, 0L);   
                     param.SetReal(5.1);   
                     ltag->SetParameter(DescID(VRAYLIGHTTAG_COMMON_INTENSITY), param, 0L);   
                     doc->AddUndo(UNDO_CHANGE, sunLight);   
                     sunLight->InsertTag(ltag);   
                     sunLight->Message(MSG_UPDATE);   
               }   
          }   
           return TRUE;   
      }   
      

      What this tries to do is add a C4D light to the scene, attach a Vray light tag, and set the light type and intensity parameters in that tag. What actually happens is that the light and the tag are successfully added, but the tag parameters are not changed. The DescID() values come from the .h files which come with Vray, and I've checked the return values from SetParameter(), and this returns TRUE in both cases, so the call is not failing. What's also odd is that, if after setting the parameters I do a GetParameter() on the tag, the values are the ones I set - they just don't show up in the tag in the AM.

      Finally, just to clarify, I am calling StartUndo(), EndUndo() and EventAdd(), in the function which calls this one.

      I'm missing something obvious, I'm sure - I'd be very grateful for comments on how to get this to work.

      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 09/07/2010 at 10:20, xxxxxxxx wrote:

        hmmm, that does seem odd.  Maybe try setting the tag parameters after you insert it?

        shot in the dark, but might work:)

        -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 09/07/2010 at 11:11, xxxxxxxx wrote:

          Hi,

          Many thanks for that. I have in fact already tried that, unfortunately it doesn't make any difference. But it was certainly worth a try.

          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 10/07/2010 at 01:20, xxxxxxxx wrote:

            Well... for anyone who needs to do this in the future, I think I've solved what was happening. There was nothing wrong with my code. What appears to happen is that the Vray light tag, when applied to a light, simply takes its values (or those which it can, such as brightness, color, shadows, etc.) from the existing light values, and does this after it has been inserted into the scene - overriding any value already there.

            So the solution was to set the values in the light itself, then add the light tag and it works fine.

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