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

    Noise Functions

    SDK Help
    0
    33
    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 05/06/2010 at 12:37, xxxxxxxx wrote:

      LOL..  yep you're right...   it worked/./   just had to do a little tweaking with the numbers..  Thanks a lot for your help ello.    I really appreciate you taking the time to help me.

      ~Shawn

      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 05/06/2010 at 12:39, xxxxxxxx wrote:

        glad i am able sometimes 🙂

        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 05/06/2010 at 12:45, xxxxxxxx wrote:

          Hey while you're here do you know if it is safe to subdivide an object from within the GetVirtualObjects() method?

          ~Shawn

          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 05/06/2010 at 12:53, xxxxxxxx wrote:

            i place my object inside  a hypernurbs (Osds) to do so, but i think you mean something other. it should be able by using CommandData

            here is a snippet of how i used the optimize command on a polygon object.

              
                  if (op->GetType()==Opolygon)  
                  {  
                      ModelingCommandData cd;  
                      cd.doc = doc;  
                      cd.op = op;  
                      BaseContainer bc;  
                      bc.SetReal(MDATA_OPTIMIZE_TOLERANCE, tolerance);  
                      bc.SetReal(MDATA_OPTIMIZE_POINTS, TRUE);  
                      bc.SetReal(MDATA_OPTIMIZE_POLYGONS, TRUE);  
                      bc.SetReal(MDATA_OPTIMIZE_UNUSEDPOINTS, TRUE);  
                      cd.bc = &bc;  
                      if(SendModelingCommand(MCOMMAND_OPTIMIZE, cd))  
                      {  
                          cd.op->Message(MSG_UPDATE, NULL);  
                          BaseTag *phongTag = op->MakeTag(Tphong);  
                          BaseContainer *bc = phongTag->GetDataInstance();  
                          bc->SetBool(PHONGTAG_PHONG_ANGLELIMIT,TRUE);  
                          bc->SetReal(PHONGTAG_PHONG_ANGLE,ToRad(winkel));  
                      } else {  
                           GePrint("failed");  
                      }  
                  }  
            

            hope this makes sense 🙂

            edit: in your case it'd be the MCOMMAND_SUBDIVIDE .. check the sdk for its parameters...

            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 05/06/2010 at 12:59, xxxxxxxx wrote:

              I was doing something simliar with

              MCOMMAND_SUBDIVIDE_<_h4_>_

              but for some reason it keeps crashiung on me when I try to do it.

              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 05/06/2010 at 13:01, xxxxxxxx wrote:

                hm.. did you set the parameters? i guess its some trial and error now, since i dont know why it crashes.

                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 05/06/2010 at 13:03, xxxxxxxx wrote:

                  this is how I am attempting to subdivide

                  but it keeps crashing

                    
                  		if (mdat.bc->GetBool(HYPERNURBS_SUBDIVISION, TRUE))  //If HyperNURBS is checked
                  		{
                  		mdat.bc->SetBool(MDATA_SUBDIVIDE_HYPER, TRUE);
                  		}
                  		else
                  		{
                  		mdat.bc->SetBool(MDATA_SUBDIVIDE_HYPER, FALSE);
                  		}
                  		mdat.bc->SetLong(MDATA_SUBDIVIDE_SUB, subAmount);
                  	    mdat.bc->SetReal(MDATA_SUBDIVIDE_ANGLE, mdat.bc->GetReal(MAX_ANGLE));
                  		
                  	//Subdivision Command
                  	SendModelingCommand(MCOMMAND_SUBDIVIDE, mdat);
                    
                  
                  
                  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 05/06/2010 at 13:04, xxxxxxxx wrote:

                    MAX_ANGLE is equal to pi   and subAMount is a real that the user can adjust.   🙂

                    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 05/06/2010 at 13:11, xxxxxxxx wrote:

                      try catching the crash with

                      if(SendModelingCommand(MCOMMAND_SUBDIVIDE, mdat))
                      {
                      GePrint("done");
                      }
                      else
                      {
                      GePrint("failed");
                      }

                      just to be on the safe side..

                      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 05/06/2010 at 13:44, xxxxxxxx wrote:

                        Here's my subdivision code now...

                        Still crashing.

                        //SUBDIVISION
                          
                        		Real subAmount;
                        		subAmount = mcd2.bc->GetLong(SPACEROCK_SUBDIVISIONS);
                        		mcd2.mode = MODIFY_ALL;
                        		mcd2.doc = hh->GetDocument();
                          
                        		if(SendModelingCommand(MCOMMAND_SUBDIVIDE, mcd2))
                        		{
                        			GePrint("done");
                        			mcd2.bc->SetBool(MDATA_SUBDIVIDE_HYPER, TRUE);
                        			mcd2.bc->SetLong(MDATA_SUBDIVIDE_SUB, subAmount);
                        			mcd2.bc->SetReal(MDATA_SUBDIVIDE_ANGLE, pi);
                        			//Subdivision Command
                        			SendModelingCommand(MCOMMAND_SUBDIVIDE, mcd2);
                        		} 
                        		else
                        		{
                        			GePrint("failed");
                        		}
                        

                        Any thoughts?

                        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 05/06/2010 at 13:55, xxxxxxxx wrote:

                          hey, dont call SendModelingCommand twice.. its already called in the if condition!

                          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 05/06/2010 at 14:06, xxxxxxxx wrote:

                            well.. that was a good thought and a good catch but unfortunately it's still crashing .. this one is a bit of a thorn today.  LOL

                            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 05/06/2010 at 14:14, xxxxxxxx wrote:

                              another thing could be worth a try, to set the Parameters for an extra BaseContainer like i did it in my example:

                              BaseContainer bc;
                                        bc.SetReal(MDATA_OPTIMIZE_TOLERANCE, tolerance);
                                        bc.SetReal(MDATA_OPTIMIZE_POINTS, TRUE);
                                        bc.SetReal(MDATA_OPTIMIZE_POLYGONS, TRUE);
                                        bc.SetReal(MDATA_OPTIMIZE_UNUSEDPOINTS, TRUE);
                                        cd.bc = &bc;

                              and in the if (SendModelingCommand... call "cd.op->Message(MSG_UPDATE, NULL);"

                              Oh, wait, i didnt see you setting mcd2.op to your object, maybe thats the main problem

                              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 05/06/2010 at 14:21, xxxxxxxx wrote:

                                yeah I added that in after I sent the message..  that didn't work.. I'
                                ll try your other suggestion though.   Thanks,

                                ~Shawn

                                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 05/06/2010 at 14:31, xxxxxxxx wrote:

                                  alternatively, did you try CallCommand(14047); ?? maybe that works... but i dont know how you set the parameters in this case..

                                  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 05/06/2010 at 15:15, xxxxxxxx wrote:

                                    Awesome..  It works.   Used your different basecontainer suggestion.

                                    //SUBDIVISION
                                    		Real subAmount = bc->GetReal(SPACEROCK_SUBDIVISIONS);
                                      
                                    		BaseContainer bc2;
                                    		
                                    		bc2.SetBool(MDATA_SUBDIVIDE_HYPER, TRUE);
                                    		bc2.SetLong(MDATA_SUBDIVIDE_SUB, subAmount);
                                    		bc2.SetReal(MDATA_SUBDIVIDE_ANGLE, pi);
                                      
                                    		mcd2.bc = &bc2;
                                    		mcd2.op = polyCube;
                                    		mcd2.mode = MODIFY_ALL;
                                    		mcd2.doc = hh->GetDocument();
                                    		
                                      
                                    		if(SendModelingCommand(MCOMMAND_SUBDIVIDE, mcd2))
                                    		{
                                    			GePrint("done");	 
                                    		} 
                                    		else
                                    		{
                                    			GePrint("failed");
                                    		}
                                      
                                    
                                    

                                    Thanks again.  I'm calling it a night.   Thanks for your help.

                                    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 05/06/2010 at 15:18, xxxxxxxx wrote:

                                      Hi, i did a quick test on subdividing and it works here.. dont ask me why it needs to create the dependency list twice, but if i dont do it, the plugin is updating everytime something changes in the editor even if you turn the camera and such.. if someone can tell my why, i'd be happy.

                                      anyways, here is what is working for me:

                                        
                                      #define pluginID 1000001  
                                      #define pluginName "testObject"  
                                      #include "c4d.h"  
                                      #include "c4d_symbols.h"  
                                        
                                      class testObject : public ObjectData  
                                      {  
                                        INSTANCEOF(testObject,ObjectData);  
                                      private:  
                                      public:  
                                        virtual BaseObject* GetVirtualObjects(PluginObject *op, HierarchyHelp *hh);  
                                        static NodeData *Alloc(void) { return gNew testObject; }  
                                      };  
                                        
                                      BaseObject *testObject::GetVirtualObjects(PluginObject *op, HierarchyHelp *hh)  
                                      {        
                                        BaseDocument* doc = op->GetDocument();  
                                        ModelingCommandData cd;  
                                        Bool dirty;  
                                        BaseObject* main = BaseObject::Alloc(Onull);  
                                        if (!main) goto Error;  
                                        
                                        BaseObject* child = op->GetDown();  
                                        if (!child) goto Error;  
                                        op->NewDependenceList();  
                                        op->AddDependence(hh,child);  
                                        
                                        dirty = op->CheckCache(hh) || op->IsDirty(DIRTY_MATRIX|DIRTY_DATA|DIRTY_CHILDREN);  
                                        dirty = dirty || !op->CompareDependenceList();  
                                        
                                        if (!dirty)   
                                        {  
                                            blDelete(main);          
                                            op->TouchDependenceList();          
                                            return op->GetCache(hh);  
                                        }  
                                        
                                        BaseObject* clone = op->GetAndCheckHierarchyClone(hh,child,HCLONE_ASPOLY,&dirty,0,false);//static_cast<PolygonObject*>(child->GetClone(0,0));  
                                        if (clone)  
                                        {  
                                            GePrint ("cloned");  
                                            if (clone->GetType()==Opolygon)  
                                            {          
                                                GePrint("polygonobject detected");  
                                                cd.doc = doc;  
                                                cd.op = clone;  
                                                BaseContainer bc;  
                                                bc.SetBool(MDATA_SUBDIVIDE_HYPER, true);  
                                                bc.SetReal(MDATA_SUBDIVIDE_ANGLE, 90);  
                                                bc.SetLong(MDATA_SUBDIVIDE_SUB, 2);  
                                                cd.bc = &bc;  
                                                if(SendModelingCommand(MCOMMAND_SUBDIVIDE, cd))  
                                                {  
                                                    GePrint("modeling command sent: MCOMMAND_SUBDIVIDE");  
                                                }   
                                                else   
                                                {  
                                                    GePrint("failed");  
                                                }  
                                                clone->InsertUnderLast(main);  
                                            }  
                                            else  
                                            {  
                                                blDelete(clone);  
                                            }  
                                        }  
                                        op->NewDependenceList();  
                                        op->AddDependence(hh,child);  
                                        op->TouchDependenceList();      
                                        return main;  
                                        
                                      Error:  
                                        if (main) blDelete(main);  
                                        return NULL;  
                                      }  
                                        
                                        
                                        
                                      // be sure to use a unique ID obtained from www.plugincafe.com  
                                      Bool Register_testObject(void)  
                                      {  
                                        GePrint("- testObject");  
                                        return RegisterObjectPlugin(pluginID,pluginName,OBJECT_GENERATOR|OBJECT_INPUT,testObject::Alloc,"OtestObject","orgaLine.tif",0);  
                                      }  
                                      

                                      hope this helps

                                      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 05/06/2010 at 15:19, xxxxxxxx wrote:

                                        *G i was late again 🙂

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