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

    Use DrawPointArray to draw shaded points

    SDK Help
    0
    7
    554
    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

      On 09/12/2015 at 13:18, xxxxxxxx wrote:

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

      ---------
      Hi there,

      I'm trying to use BaseDraw::DrawPointArray() to draw shaded points. According to the documentation (https://developers.maxon.net/docs/cpp/2023_2/class_base_draw.html#affe6235c549a43787a1cb5ae5d654d3d) this should be possible by using the aforementioned function. My code looks something like this:

      bd->SetLightList(BDRAW_SETLIGHTLIST_SCENELIGHTS);
      bd->SetPointSize(3.0f);
      bd->SetMatrix_Matrix(op, bd.GetMg());
      bd->DrawPointArray(nPnts, pos, col, 3, norm);

      It draws points of the right size in the right position, but no shading is being done (yes, the normals have valid values and are normalized). Does anybody know what I'm doing wrong?

      Best
      Timm

      1 Reply Last reply Reply Quote 0
      • H
        Helper
        last edited by

        On 11/12/2015 at 07:46, xxxxxxxx wrote:

        Hello,

        it seems that DrawPointArray() does not shade the points. We forwarded the question to the developer to get more information.

        Best wishes,
        Sebastian

        1 Reply Last reply Reply Quote 0
        • H
          Helper
          last edited by

          On 11/12/2015 at 09:43, xxxxxxxx wrote:

          It works fine for me in R13.
          Add this code to the SDK AtomObject example and see if it works in your version.

          class AtomObject : public ObjectData  
          {  
            public:  
                DRAWRESULT  Draw(BaseObject *op, DRAWPASS drawpass, BaseDraw *bd, BaseDrawHelp *bh);  
                virtual     Bool Init(GeListNode *node);  
                virtual     BaseObject* GetVirtualObjects(BaseObject *op, HierarchyHelp *hh);  
                virtual     Bool Message(GeListNode *node, LONG type, void *t_data);  
            
                static      NodeData *Alloc(void) { return gNew AtomObject; }  
          };  
            
            
          DRAWRESULT AtomObject::Draw(BaseObject *op, DRAWPASS drawpass, BaseDraw *bd, BaseDrawHelp *bh)  
          {  
            bd->SetMatrix_Screen();  
            bd->SetPointSize(5.5);  
            
            LONG count = 3;  
            SVector pointpos[3] = { SVector(500, 200, 0), SVector(510, 200, 0), SVector(520, 200, 0) }; //Create the array with the point positions  
            SVector normals[3] = { SVector(1, 0, 0), SVector(1, 0, 0), SVector(1, 0, 0) };              //The normals directions  
            SReal pointcolors[9] = { 1, 0, 0, 0, 1, 0, 0, 0, 0 };                                       //Each point needs 3 color values(RGB)  
            bd->DrawPointArray(count, pointpos, pointcolors, 3, normals);                               //Draws the points on the screen  
            
            return DRAWRESULT_OK;  
          }
          

          -ScottA

          1 Reply Last reply Reply Quote 0
          • H
            Helper
            last edited by

            On 15/12/2015 at 05:49, xxxxxxxx wrote:

            Hi Scott,

            thanks for your example. Doesn't do anything to convince me, though. The normals all point in the same direction (and a weird one) and are all flat colored. Changing the POV, the light in the scene or the default light doesn't change anything in the color of the points.

            Does this really work for you? Can you send a screenshot?

            @Sebastian: Thanks for looking into it!

            Best
            Timm

            1 Reply Last reply Reply Quote 0
            • H
              Helper
              last edited by

              On 15/12/2015 at 07:22, xxxxxxxx wrote:

              Hi Timm,

              We got confirmation that BaseDraw::DrawPointArray() doesn't shade the points.
              The normals that can be passed are reserved for later use.

              1 Reply Last reply Reply Quote 0
              • H
                Helper
                last edited by

                On 15/12/2015 at 07:27, xxxxxxxx wrote:

                Hi Yannick,

                Originally posted by xxxxxxxx

                We got confirmation that BaseDraw::DrawPointArray() doesn't shade the points. The normals that can be passed are reserved for later use.

                ok, thanks for the quick confirmation! It might be sensible to mention that in the documentation. But what I'd like to know more: Are there any plans to make this functional soon? That'd allow for some pretty slick editor drawing tricks. 😉

                Best
                Timm

                1 Reply Last reply Reply Quote 0
                • H
                  Helper
                  last edited by

                  On 15/12/2015 at 07:54, xxxxxxxx wrote:

                  Originally posted by xxxxxxxx

                  Hi Scott,
                  Does this really work for you? Can you send a screenshot?

                  My bad.
                  When you said "shade". I thought you were talking about the "color" of them.

                  -ScottA

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