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

    User-control of Polygon Visibility in Animation

    Scheduled Pinned Locked Moved SDK Help
    16 Posts 0 Posters 1.1k 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 07/06/2011 at 15:46, xxxxxxxx wrote:

      User Information:
      Cinema 4D Version:   R10-R12 
      Platform:   Windows  ;   Mac OSX  ; 
      Language(s) :     C++  ;

      ---------
      I'm at a bit of a sticking point on a methodology and interface for doing this.

      If you had to provide the user a way to determine which polygons are visible and which aren't during the course of an animation then in what way would you do it?

      Since this only involves polygon objects, I was considering using a gradient map (say, black is the start and white is the end) so that polygons in the darker areas would appear earlier than those in lighter areas as applied to its mapping (UV or otherwise).  Of course, this limits the number of levels to 256 (discreet).  Definitely don't want to make the user select areas of polygons (or, worse, individual polygons) and set some value to weight it, if possible.  If it comes to that, then it would be about the same as applying vertex map weighting for character rigging but using polygons instead of vertices.

      Open for any suggestions! 🙂

      Thanks,

      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 08/06/2011 at 03:51, xxxxxxxx wrote:

        Do you want to create a plugin that "keys" the visibilty of polygons in the editor ?
        Like, you have a cube and the visibility of it's face 0 on Frame 0 is 0, and on Frame 100 it is 255 and there should be an interpolation during the animation ?
        Do I understand you right ?

        Cheers,
        Niklas

        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 08/06/2011 at 08:13, xxxxxxxx wrote:

          It's keying visibility in the renderer (and editor) by way of a generator object whose results are the visible polygons at some percentage of the visibility flow.  Say you have a plane 100x100 and select an arbitrary 'seed' polygon.  From there (0%), the polygons become visible outwardly from that polygon until all are visible (100%).  This can be done simply, albeit procedurally, by interpolating neighbors at each level for visibility flow.

          I'm looking for a way to let the user direct the visibility flow so that they can, for instance, have polygons towards one edge of the plane become visible first, then others on the adjoining edge, and so on using some form of map.  Of course, this is not restricted to a plane but any polygon object.  Currently, vertex mapping is looking promising but this requires averaging vertex weights for each polygon to determine the polygon's strength value.  And not sure if this will yield the results desired.

          Thanks,

          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 08/06/2011 at 10:00, xxxxxxxx wrote:

            Ok, not easy for me to understand. I'll try it anway. 😉
            Just to make sure: In simple, You have only one visible polygon, an due the animation all surrounding polygons start to become visible, too, so the visibility kinda 'grows' from polygon to polygon ?
            This should be possible using the Neighbor class. 🙂

            /edit: Or am I wrong once again and you're trying to animate from one vertex map to another, or something similiar ?

            ///:  EDIT:
            Ahhh now I got it ! xD Didn't get you already mentioned the Neighbor class >.>
            So, the user creates a polygon selection and set's the polygons from that selection to the seed polygons.
            Now, another selection which determines the polygons that should be visible at the end of the animation.

            Right ?

            This is some Pseudo from scratch I think about:

            // only do this once   
            array pnts_srt = GetMyStartPoints();   
            array pnts_end   = GetMyEndPoints();   
              
            // The pointcount for start & end must be equal for interpolation.   
            // Distribute new points to the array where points are missing   
            // of course, the should be distributed senseful   
            if (pnts_srt.length > pnts_end.length) {   
              pnts_end = AddPointsDistributedBetweenPoints(pnts_end,pnts_srt.length);   
            }   
            else {   
              pnts_srt = AddPointsDistributedBetweenPoints(pnts_end,pnts_end.length);   
            }   
              
            . . .   
              
            // do this for calculating the interpolation   
            array new_pnts = new array(pnts_srt.length)   
            for (int i = 0; i < pnts_srt.length; i++) {   
              new_pnts[i] = GetNearestPointInMesh(   
                Interpolate(   
                  pnts_srt[i], pnts_end[i], percentage   
                )   
              );   
            }   
              
            SetVisibilitiyForPoints(new_pnts);
            
            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 08/06/2011 at 10:20, xxxxxxxx wrote:

              The Neighbor class is already being used for the simple, procedural flow and for determining each polygon's neighbor.

              But the user can't 'direct' which polygons appear when using that alone.  There must be a timing mapping.  My thought is to have the strength values of the vertex map determine when polygons appear over the course of the animation (which is controlled by a percentage slider being keyed).  So, if the polygon calculates to 0% strength, it will appear when the slider/animation is at frame 0.  If the polygon calculates to 75% strength, it will appear when the slider is at 75% (at whatever frame that represents).  And so on.

              While painting vertex maps in C4D to precisely control the flow is a bit tedious, I can find no way to make it less tedious. 😉

              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 08/06/2011 at 10:30, xxxxxxxx wrote:

                Oh, I edited my post, maybe this is a read worth. 🙂
                I thought about 2 states of visibility that can be interpolated.

                Cheers

                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 08/06/2011 at 11:12, xxxxxxxx wrote:

                  Originally posted by xxxxxxxx

                  So, if the polygon calculates to 0% strength, it will appear when the slider/animation is at frame 0.  If the polygon calculates to 75% strength, it will appear when the slider is at 75% (at whatever frame that represents).  And so on.

                  I hope this is some kind of what you searched for:
                  Use a spline in the GUI combined with 1 percentage slider to determine the distribution of the visibility.

                  // within a loop over all points and their vertexvalues  
                  vertexvalue = GetVertexMapValue(i);  
                  slidervalue = GetFloat(SLIDER);  
                  splinerange = GetFloat(SPLINE_RANGEMAP_SLIDER); // A percentage slider defining the mapping of the spline to the vertexmap  
                  splineX = RangeMap(vertexvalue, minIn = slidervalue-splinerange,  maxIn =slidervalue+splinerange, minOut = 0., maxOut = 1.)  
                  splinevalue = Spline-GetY(splineX);  
                  SetPointVisibility(i, vertexvalue * splinevalue)
                  

                  Here an Image explanation of what I think You mean:

                  Cheers,
                  Niklas

                  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 08/06/2011 at 20:31, xxxxxxxx wrote:

                    I don't get why a spline is necessary but I've decided that the VertexMap tag would be too difficult for the user to get a clean gradient to cause a cascade as envisioned.

                    Instead, I'm going to add a tool which lets the user select 'node' polygons and set the percentage value at when to appear.  Then I'm going to do the interpolation in code.  This makes the user's life happy and mine only a bit more difficult. 🙂

                    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/06/2011 at 06:42, xxxxxxxx wrote:

                      Ok, can you please show me an example when you have finishe ? Seem's like I still didn't get it right. ;-D

                      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 16/06/2011 at 14:24, xxxxxxxx wrote:

                        Sure.  I'm getting close to finishing.  Multivariate Inverse Distance Weighting (M-IDW) is the only sticking point now.  If you know of any good resources on quick algorithms or code for something like that it would be much appreciated. 🙂

                        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 21/06/2011 at 01:18, xxxxxxxx wrote:

                          [Spaaaam >.>]

                          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 21/06/2011 at 01:19, xxxxxxxx wrote:

                            I'm sorry, I don't even know what it is 😄
                            But I take a look at it, sounds kind of interesting.

                            Cheers,

                            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 21/06/2011 at 09:19, xxxxxxxx wrote:

                              Got it figured out.  Just needed to change a few things to make it work as expected.  Should have a video up later today. 🙂

                              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 21/06/2011 at 20:37, xxxxxxxx wrote:

                                You can see the video and other information here:

                                http://www.kuroyumes-developmentzone.com/unfurl/unfurl-examples/

                                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 24/06/2011 at 10:22, xxxxxxxx wrote:

                                  Now this is quite what I thought you want to to. 😉
                                  Didn't check the plugin out, yet.
                                  But in the Video, you have an absolute visibilty. (visible or not)
                                  is it possible to set a percentage for this with C++ ?
                                  If yes, why not use a spline ?
                                  At the Moment, if you had used a spline, it would look
                                  like this:

                                  _______  
                                       \  
                                        \  
                                         \_______
                                  
                                  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 24/06/2011 at 13:31, xxxxxxxx wrote:

                                    Btw, holy s**t ! Cool Plugin !! O___o
                                    How did you make the Polygons rotate aboute an Edge ?! 😮 This is awesome ! 😉

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