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.5k
    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 02/07/2007 at 16:41, xxxxxxxx wrote:

      Sure.. 🙂

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

        Quote: Originally posted by Matthias Bober on 02 July 2007
        >
        > * * *
        >
        > sorry, I can't quite follow you here. you only get a shdow, diffuse and specular pass for each light and an alpha pass for each object id. do you want access to these passes?
        >
        > cheers,
        > Matthias
        >
        >
        >
        >
        > * * *

        Please!
        28 days 😞

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

          Hi Renato,

          Please ask your questions in a way I can follow you. What is it you want to achieve? From your last reply I was assuming the problem has been resolved. We both are not native English spekaers so please try to word your questions are bit more clearly.

          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 30/07/2007 at 04:33, xxxxxxxx wrote:

            Hello Matthias,

            what i need is get all vpbuffer in the best way.
            I'm getting now the basic vpbuffer from render.. but seem that is better to get all them from Multipass..

            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 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
                                            • First post
                                              Last post