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

    Loopy GetVirtualObjects()

    Scheduled Pinned Locked Moved SDK Help
    2 Posts 0 Posters 235 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 11/06/2009 at 17:11, xxxxxxxx wrote:

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

      ---------
      It seems to do with SendModelingCommand(). I am NOT using MCOMMAND_MAKEEDITABLE or MCOMMAND_CURRENTSTATETOOBJECT. But I use it for MCOMMAND_SPLIT, MCOMMAND_DELETE (polygons), MCOMMAND_SUBDIVIDE, and ID_MODELING_MATRIX_EXTRUDE_TOOL.

      Currently, the only commands that are always called are ID_MODELING_MATRIX_EXTRUDE_TOOL and MCOMMAND_DELETE. Commenting out the MCOMMAND_DELETE has the result immediately returning. Does MCOMMAND_DELETE do something that sets the dirty flag and how do I delete polygons otherwise (and quickly!) if this is the case?

      And what would I do about splitting and subdividing if they have the same issues? Sort of a royal p.i.t.a. if I have to do available complex operations using my own algorithms.

      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 14/06/2009 at 18:08, xxxxxxxx wrote:

        After more testing, it seems to be a limit in how many polygons are involved in the operations. After a certain point (like 20,000 polygons or more for me), GetVirtualObjects() gets caught in a loop and just keeps trying to generate. Any dirty flags should be being set on cloned representations (and never the original objects) which, from my reading, should never cause a generator to see the input as dirty.

        I've tried the very same algorithm (with CSTO to get the polygonized objects) in a tag with a button to do the same thing and it worked everytime - and many times faster than the generator object (!!!!). Even a high-polygon object (Michael 4) with 66830 polygons, subdivided!, which results in 267320 polygons to work on took about 10 seconds this way doing random polygon matrix extrusions. I've sat on a non-subdivided extrusion with the generator for 2+ minutes and it required some action (rotate editor view, scroll over main menu items) to force it to finish.

        Atom.cpp was used as a template, I've read the docs on GetVirtualObjects(), GetAndSetHierarchyClone(), and threading, I've scoured both this forum and archived forum and no idea how to get this to work properly. I don't care how long it takes to generate - as long it is generating one time and finishing.

        Matthias, hopefully you have received my zipped project. If not or I should send it to another email, please inform.

        Thanks,

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