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

    VPBuffers

    SDK Help
    0
    28
    15.6k
    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 31/07/2007 at 02:41, xxxxxxxx wrote:

      I am not sure but could you not get all the information from the Multipass structure found in the PixelPost structure?

      cheers,
      Matthias

      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 31/07/2007 at 07:35, xxxxxxxx wrote:

        Do you need the passes after or during rendering?

        cheers,
        Matthias

        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 31/07/2007 at 08:16, xxxxxxxx wrote:

          i need to find all the VPBuffer opened by multipass. So i can fire pixels from vray to them 🙂
          So i need them in Execute..

          Cheers
          Renato

          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 22/08/2007 at 19:11, xxxxxxxx wrote:

            Hi all,

            Here the scene that i've examined:

            i wrote this piece of code looking for the separate light pass:

              
            LONG *remapVpBuffers = (LONG* ) GeAlloc (sizeof(LONG)*33);  
                      String *remapStrings = (String* ) GeAlloc (sizeof(String)*33);  
              
                      remapVpBuffers[0]      = VPBUFFER_RGBA;  
                      remapVpBuffers[1]      = VPBUFFER_AMBIENT;  
                      remapVpBuffers[2]      = VPBUFFER_DIFFUSE;  
                      remapVpBuffers[3]      = VPBUFFER_SPECULAR;  
                      remapVpBuffers[4]      = VPBUFFER_SHADOW;  
                      remapVpBuffers[5]      = VPBUFFER_REFLECTION;  
                      remapVpBuffers[6]      = VPBUFFER_TRANSPARENCY;  
                      remapVpBuffers[7]      = VPBUFFER_RADIOSITY;  
                      remapVpBuffers[8]      = VPBUFFER_CAUSTICS;  
                      remapVpBuffers[9]      = VPBUFFER_ATMOSPHERE;  
                      remapVpBuffers[10]      = VPBUFFER_ATMOSPHERE_MUL;  
                      remapVpBuffers[11]      = VPBUFFER_ALLPOSTEFFECTS;  
                      remapVpBuffers[12]      = VPBUFFER_IMAGEBUILDING_PASS;  
                      remapVpBuffers[13]      = VPBUFFER_DEPTH;  
                      remapVpBuffers[14]      = VPBUFFER_MAT_COLOR;  
                      remapVpBuffers[15]      = VPBUFFER_MAT_DIFFUSION;  
                      remapVpBuffers[16]      = VPBUFFER_MAT_LUMINANCE;  
                      remapVpBuffers[17]      = VPBUFFER_MAT_TRANSPARENCY;  
                      remapVpBuffers[18]      = VPBUFFER_MAT_REFLECTION;  
                      remapVpBuffers[19]      = VPBUFFER_MAT_ENVIRONMENT;  
                      remapVpBuffers[20]      = VPBUFFER_MAT_SPECULAR;  
                      remapVpBuffers[21]      = VPBUFFER_MAT_SPECULARCOLOR;  
                      remapVpBuffers[22]      = VPBUFFER_ILLUMINATION;  
                      remapVpBuffers[23]      = VPBUFFER_OBJECTBUFFER;  
                      remapVpBuffers[24]      = VPBUFFER_POSTEFFECT;  
                      remapVpBuffers[25]      = VPBUFFER_POSTEFFECT_MUL;  
                      remapVpBuffers[26]      = VPBUFFER_AMBIENTOCCLUSION;  
                      remapVpBuffers[27]      = VPBUFFER_MAT_NORMAL;  
                      remapVpBuffers[28]      = VPBUFFER_MAT_UV;  
                      remapVpBuffers[29]      = VPBUFFER_MOTIONVECTOR;  
                      remapVpBuffers[30]      = VPBUFFER_BLEND;  
                      remapVpBuffers[31]      = VPBUFFER_LIGHTBLEND;  
                      remapVpBuffers[32]      = VPBUFFER_ALPHA;  
              
                      remapStrings[0]      = "VPBUFFER_RGBA";  
                      remapStrings[1]      = "VPBUFFER_AMBIENT";  
                      remapStrings[2]      = "VPBUFFER_DIFFUSE";  
                      remapStrings[3]      = "VPBUFFER_SPECULAR";  
                      remapStrings[4]      = "VPBUFFER_SHADOW";  
                      remapStrings[5]      = "VPBUFFER_REFLECTION";  
                      remapStrings[6]      = "VPBUFFER_TRANSPARENCY";  
                      remapStrings[7]      = "VPBUFFER_RADIOSITY";  
                      remapStrings[8]      = "VPBUFFER_CAUSTICS";  
                      remapStrings[9]      = "VPBUFFER_ATMOSPHERE";  
                      remapStrings[10]      = "VPBUFFER_ATMOSPHERE_MUL";  
                      remapStrings[11]      = "VPBUFFER_ALLPOSTEFFECTS";  
                      remapStrings[12]      = "VPBUFFER_IMAGEBUILDING_PASS";  
                      remapStrings[13]      = "VPBUFFER_DEPTH";  
                      remapStrings[14]      = "VPBUFFER_MAT_COLOR";  
                      remapStrings[15]      = "VPBUFFER_MAT_DIFFUSION";  
                      remapStrings[16]      = "VPBUFFER_MAT_LUMINANCE";  
                      remapStrings[17]      = "VPBUFFER_MAT_TRANSPARENCY";  
                      remapStrings[18]      = "VPBUFFER_MAT_REFLECTION";  
                      remapStrings[19]      = "VPBUFFER_MAT_ENVIRONMENT";  
                      remapStrings[20]      = "VPBUFFER_MAT_SPECULAR";  
                      remapStrings[21]      = "VPBUFFER_MAT_SPECULARCOLOR";  
                      remapStrings[22]      = "VPBUFFER_ILLUMINATION";  
                      remapStrings[23]      = "VPBUFFER_OBJECTBUFFER";  
                      remapStrings[24]      = "VPBUFFER_POSTEFFECT";  
                      remapStrings[25]      = "VPBUFFER_POSTEFFECT_MUL";  
                      remapStrings[26]      = "VPBUFFER_AMBIENTOCCLUSION";  
                      remapStrings[27]      = "VPBUFFER_MAT_NORMAL";  
                      remapStrings[28]      = "VPBUFFER_MAT_UV";  
                      remapStrings[29]      = "VPBUFFER_MOTIONVECTOR";  
                      remapStrings[30]      = "VPBUFFER_BLEND";  
                      remapStrings[31]      = "VPBUFFER_LIGHTBLEND";  
                      remapStrings[32]      = "VPBUFFER_ALPHA";  
              
                      GePrint ("************************************************");  
                      VPBuffer *Buffer=NULL;  
                      for (LONG lb=0; lb<33; lb++){  
                           for (LONG subId = 0; subId<50; subId++) {  
                                Buffer = render->GetBuffer(remapVpBuffers[lb],subId);  
                                if (Buffer) {  
                                     GePrint("Buf: " + remapStrings[lb]+ "   SubId: " + LongToString(subId));  
                                     if (lb == 0) break;  
                                }  
                           }  
                      }  
              
            gefree etc.etc.etc..  
              
              
            

            Now..why all others lights layers are not in the list?

            Thanks all
            Renato

            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 24/08/2007 at 17:33, xxxxxxxx wrote:

              😞

              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 25/08/2007 at 11:34, xxxxxxxx wrote:

                Matthias won't be back until tomorrow so hold tight! 🙂

                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 25/08/2007 at 13:46, xxxxxxxx wrote:

                  Thanks Robert 🙂

                  Can't you help me on this?

                  Cheers
                  Renato

                  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 25/08/2007 at 14:36, xxxxxxxx wrote:

                    I don't know anything about VPBuffers.

                    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 27/08/2007 at 03:17, xxxxxxxx wrote:

                      Here's how to browse through a multipass bitmap. For lights there is an inner loop that retrieves the data.

                      The main bitmap should be checked with bmp->IsMultipassBitmap() first and then casted into a (MultipassBitmap* )

                        
                           LONG j,i,id;  
                           LONG cnt = b3d->GetLayerCount();  
                        
                           for (i=0; i<cnt; i++)  
                           {  
                                MultipassBitmap *sublayer,*layer = b3d->GetLayerNum(i);  
                                if (!layer) continue;  
                        
                                LONG subcnt = layer->GetLayerCount();  
                        
                                for (j=0;j<subcnt || subcnt==-1;j++)  
                                {  
                                     if (subcnt>0)  
                                          sublayer   = layer->GetLayerNum(j);  
                                     else   
                                          sublayer = layer;  
                        
                                     if (!sublayer) continue;  
                        
                                     id = sublayer->GetParameter(MPB_USERID).GetLong();  
                                }  
                           }  
                      
                      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 27/08/2007 at 10:47, xxxxxxxx wrote:

                        Thanks Philip,

                        but what do you mean about main bitmap?

                        do i need to get it from Multipass::VPBitmap[0]?

                        Cheers
                        Renato

                        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 28/08/2007 at 12:26, xxxxxxxx wrote:

                          You can retrieve the main bitmap by calling

                            
                          MultipassBitmap *mpb = (MultipassBitmap* )renderinstance->GetBuffer(NOTOK,0);  
                          
                          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 29/08/2007 at 08:49, xxxxxxxx wrote:

                            Hello Philip,

                            where:
                            LONG subcnt = layer->GetLayerCount();

                            subcnt always is -1 so the internal cycle go in loop forewer.

                            What's mean that GetLayerCount() return -1 ?

                            cheers
                            Renato

                            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 29/08/2007 at 11:08, xxxxxxxx wrote:

                              But Philip did this in his loop:

                              for (j=0;j<subcnt || subcnt==-1;j++)
                              

                              Probably explicitly to avoid the infinite loop. No idea about what -1 represents here though.

                              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 29/08/2007 at 11:35, xxxxxxxx wrote:

                                Hello dear Robert,

                                but when the subcnt == -1.. it loop

                                🙂
                                renato

                                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 29/08/2007 at 12:29, xxxxxxxx wrote:

                                  Are you sure of your types (LONG)? In actuality, all that is needed is:

                                  for (j = 0; j < subcnt; ++j)
                                  

                                  Since -1L is less than 0L, the loop should exit immediately. But if ULONG is used, -1L is of course 4 billion.

                                  All else failing, just check for -1 on subcnt and avoid the loop altogether:

                                  LONG subcnt = layer->GetLayerCount();  
                                  if (subcnt < 0)     continue;  
                                  for (j=0; j!=subcnt; ++j)  
                                  ...
                                  
                                  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 30/08/2007 at 01:54, xxxxxxxx wrote:

                                    My excuses... one line of source code was missing!

                                      
                                         LONG j,i,id;  
                                         LONG cnt = b3d->GetLayerCount();  
                                      
                                         for (i=0; i<cnt; i++)  
                                         {  
                                              MultipassBitmap *sublayer,*layer = b3d->GetLayerNum(i);  
                                              if (!layer) continue;  
                                      
                                              LONG subcnt = layer->GetLayerCount();  
                                      
                                              for (j=0;j<subcnt || subcnt==-1;j++)  
                                              {  
                                                   if (subcnt>0)  
                                                        sublayer   = layer->GetLayerNum(j);  
                                                   else  
                                                        sublayer = layer;  
                                      
                                                   if (!sublayer) continue;  
                                      
                                                   id = sublayer->GetParameter(MPB_USERID).GetLong();  
                                                   if (subcnt==-1) break;       
                                              }  
                                         }  
                                    
                                    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 30/08/2007 at 11:10, xxxxxxxx wrote:

                                      Hello Philip,

                                      ok now 🙂 but the objectID are the only buffers not detected with this way 😞

                                      any suggestions?

                                      Cheers
                                      Renato

                                      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 30/08/2007 at 14:25, xxxxxxxx wrote:

                                        To retrieve the alpha channels use:

                                          
                                        cnt = b3d->GetAlphaLayerCount();  
                                        for (i=0; i<cnt; i++)  
                                        {  
                                             B3dBitmap *layer = b3d->GetAlphaLayerNum(i);  
                                             if (!layer) continue;  
                                          
                                             id = sublayer->GetParameter(MPB_USERID).GetLong();  
                                             if (!id) continue;  
                                          
                                             ...  
                                        }  
                                        
                                        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 30/08/2007 at 14:26, xxxxxxxx wrote:

                                          Ah.. thanks.. i forgot that ObjectID are in fact alpha channels 🙂

                                          Thanks a lot
                                          Renato

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