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

    How to natively create an object with tons of triangles for a test purpose.

    Cinema 4D SDK
    3
    7
    1.1k
    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.
    • M
      mastergog
      last edited by

      Hey guys,

      I'm developing an ObjectData plugin with C++ on Windows10, Cinema 4D R23.

      I'm getting a crash when I insert my plugin in a subdivision surface and crank up the subdivision editor field to 6. The crash is in Cinema 4D but the culprit is probably my implementation. Just in case I wanted to test this with some native Cinema4D object to see if I can reproduce it, but I'm having a hard time to simply create a PolygonObject with say 100k polygons.

      What would be the easiest way to generate such an object? I think I can also reproduce it with less polygons so it doesn't have to be 100k, could be less.

      Warm regards,
      Georgi.

      CairynC 1 Reply Last reply Reply Quote 0
      • CairynC
        Cairyn @mastergog
        last edited by

        @mastergog Create a cube, crank up the segmentation to 1000x1000x1000 (doesn't get higher). That's 6 MPolys. Copy a few times, "connect + delete", voila.

        If you dare.

        1 Reply Last reply Reply Quote 0
        • M
          mastergog
          last edited by mastergog

          @Cairyn hey man thanks for the suggestion!

          Actually my object data plugin is no longer crashing, but enters an infinite loop trying to allocate the memory it needs until it sends "Not enough memory" message and tries again. I only have 16GB ram.
          This behavior is reproducible with a simple cube with segmentation to 100x100x100, inserted in a subdivision surface object with subdivision editor field set to 6.
          I'm not sure if it's a bug guys, but it seems to require a reboot to fix.

          Regards,
          Georgi.

          CairynC 1 Reply Last reply Reply Quote 0
          • CairynC
            Cairyn @mastergog
            last edited by

            @mastergog hmm, subdivision of 6? That's 2 to the power of 6 particions, so 64 per original poly.
            If you start with a 100 segmentation, you get 6400 per axis, so roughly 41 million polys per side, or 245 million for a six sided cube. And more or less 245 million points (as polys happily share points).
            A point is a vector using 8 byte Float64 per axis, so 24 byte all in all. A poly is four indices of points, each a 4 byte Int32. (There are so many Vectors and Floats in the docs that I'm not really sure, but I guess some Maxonian will correct me...) All in all 5.9 billion bytes for the points, and 3.9 billion for the polys.

            That might fit into the 16GB RAM, but that memory may be fragmented, and I don't think a point/poly array accounts for that, so finding a continuous slab of memory large enough takes quite some paging/swapping/remapping action on the OS side, and may even fail.

            Not sure that qualifies as a bug.

            (Why do you want to blast your RAM with objects of that size? What's the ObjectData plugin going to do?)

            1 Reply Last reply Reply Quote 0
            • ManuelM
              Manuel
              last edited by

              hi,

              doesn't look like a bug to me. With 32g it's doable but take some time and go up to 100% of the ram. (that could maybe be optimized)
              Definitely can't go to 7 as the max point number per object is 500 millions.

              @Cairyn hit the right numbers even if it's 1001006*4^6 polygons. (for each subdivision, you have 4 times the polygon count)

              Add the fact that the subdivision need memory to calculate, it will eat a lot of ram. 6 subdivision is a lot, specially on a high polygon count object.

              What kind of object are you creating ?

              Cheers
              Manuel

              MAXON SDK Specialist

              MAXON Registered Developer

              CairynC 1 Reply Last reply Reply Quote 0
              • CairynC
                Cairyn @Manuel
                last edited by

                @m_magalhaes said in How to natively create an object with tons of triangles for a test purpose.:

                @Cairyn hit the right numbers even if it's 100 * 100 * 6 * 4 ^ 6 polygons. (for each subdivision, you have 4 times the polygon count)

                I should've been more clear in my first sentence... I calculated per dimension, so it's 2 times per axis per subdivision, so it's 6 sides * 100 * 2^6 * 100 * 2^6 = 6 * 6400 * 6400, so the ultimate point/polygon counts are (approximately) correct. It's ultimately the same as your calculation though as 2^6 * 2^6 = 4096 = 4^6. (With another square factor, that cube would not even fit into 32GB 😊 )

                1 Reply Last reply Reply Quote 1
                • M
                  mastergog
                  last edited by

                  Hey guys, thanks for the explanations.

                  My only concern is that I can't really do anything besides closing Cinema4D to cancel the operation. Just for reference my plugin is a fluid volume that needs to be visualized in the viewport. This is not an expected workload, stumbled on it by chance, but so can one of the users.

                  Anyway we can close this thread if it's not a bug.

                  Regards,
                  Georgi.

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