C4DLounge.eu - Cinema 4D Gebruikers Forum  

Go Back   C4DLounge.eu - Cinema 4D Gebruikers Forum > RESOURCES > Recources, Tips >>> > Plugins & Scripts/Python

Reply
 
Thread Tools Display Modes
  #1  
Old 22nd January 2015
Hermenator Hermenator is offline
Member
 
Join Date: Nov 2014
Location: Delft, Nederland
Posts: 48
Default Generator Gadgets & Tags

Hallo allemaal,

Wellicht uit nood geboren (ik heb Prime en dus geen MoGraph) ben ik wat met Python gaan spelen. Ik ben begonnen met gewone scripts, omdat ik simpelweg niet beter wist. Het heeft even geduurd voordat ik de Python Generator en Tag ontdekte, maar sindsdien is mijn enthousiasme alleen maar toegenomen! De integratie met Cinema 4D werkt super soepel, en de mogelijkheden zijn schier eindeloos als je eenmaal je weg een beetje kent in de Python SDK voor Cinema.

Om de in mijn ogen wat onderbelichte Generator wat meer onder de aandacht te brengen leek het me een leuk idee om, in navolging van Kees' "Xpresso Doedels", een nieuw draadje genaamd "Generator Gadgets" te beginnen. Hier zal ik zo af en toe een nieuwe gadget presenteren welke gebaseerd is op de PyGenerator of de PyTag. Als anderen zich geïnspireerd voelen om hier ook hun gadgets te posten, graag! Hoe meer interactie, hoe beter. Ook de PyEffector heeft mijn interesse, dus als iemand daar een idee voor heeft (Douwe?) -> posten graag! Ik kan de files wel bekijken in de demo versie, maar daarin niks maken/opslaan. Dat wordt dus sparen voor iig de "Broadcast" versie:-)

Voor deze keer de 'indexfinder' die ik een tijdje geleden gemaakt heb. Iedereen die weleens een scriptje schrijft, loopt er vroeg of laat tegenaan: Waar zit welke vertex/polygon? Douwe toonde mij in deze thread een oplossing met MoText, maar die was vooral esthetisch bedoeld en daardoor nogal traag. Deze indexfinder doet niet meer dan de naam zegt, hij geeft je de index van een bepaald punt of polygon, maar doet dat razendsnel. Wellicht heeft iemand anders hier ook wat aan.

Groeten,

Hermen

PS: Vraagje: Weet iemand hoe je je eigen creaties in de content manager kunt opslaan? Heb ooit ergens gelezen dat dat kon, maar hoe ookalweer… Alvast bedankt!
Attached Images
File Type: jpg indexfinder.jpg (176.9 KB, 22 views)
Attached Files
File Type: c4d indexfinder.c4d (150.0 KB, 15 views)

Last edited by Hermenator; 22nd January 2015 at 14:39.
Reply With Quote
  #2  
Old 22nd January 2015
douwe's Avatar
douwe douwe is offline
Admin Team
 
Join Date: Feb 2010
Posts: 1,874
Default

Je hebt gelijk dat die Generators onderbelicht zijn, en het gros van de gebruikers heeft geen idee wat een krachtig dingetje dat wel is.

Tof experiment, je indexfinder. Zeker omdat ie het ook met primitieven doet.
Toch zou select-and-click-functionaliteit in de viewport nog een stuk handiger zijn.

Dit is daarvoor de omslachtige manuele weg :
Om precies te weten wat het indexnummer is van een vertex (of poly) bij een primitief,
kan je deze via een Correction Deformer selecteren en in de Structure Manager het ID uitlezen.

- ( Snel springen in de Structure Manager kan met N ( jump next selection ). )
- ( In Move Mode kan je ook dubbelklikken op een Vertex en dan popt er een venstertje op met de ID en Positie-coords )

Als je deze omweg zou kunnen automatiseren, heb je iets heel cools gedaan !

Over je vraagje : selecteer je generator in je Object Manager en kies daar File / Save Object Preset.

Veel succes met dit topic !
Reply With Quote
  #3  
Old 22nd January 2015
Hermenator Hermenator is offline
Member
 
Join Date: Nov 2014
Location: Delft, Nederland
Posts: 48
Default

Ha Douwe,

Super die tips, weer wat geleerd. Aanwijzen en klikken kan dus al. Het zou niet zo heel moeilijk moeten zijn om met zoiets als "GetSelectedPoints/Polygons() dit in een generator/tag te stoppen, maar of het dan nog veel meerwaarde heeft… Ik heb het tenslotte ook niet iedere dag nodig:-). Maar, goed idee, en als ik er in de toekomst tegenaan loop zal ik het zeker verder uitwerken!

Groet,

Hermen

PS: Save preset = cool!
Reply With Quote
  #4  
Old 22nd January 2015
roobol roobol is offline
Admin Team
 
Join Date: Mar 2009
Posts: 1,589
Default

Een superleuk initiatief, staat in mijn bookmarks :-)
__________________
http://www.roobol.be
Reply With Quote
  #5  
Old 22nd January 2015
Petertje's Avatar
Petertje Petertje is offline
Senior Member
 
Join Date: Mar 2012
Posts: 1,272
Default

Snap er nog geen bal van, maar net als met de Xpress Doedels... super interessant !
Reply With Quote
  #6  
Old 24th January 2015
Hermenator Hermenator is offline
Member
 
Join Date: Nov 2014
Location: Delft, Nederland
Posts: 48
Default

Het begon allemaal met een simpele Cloner. Na de lezing van Douwe op de Maxon User Day over wat je allemaal met MoGraph en Python kon doen, dacht ik: "Nou, eerst maar eens zo'n cloner, dat moet toch niet zo moeilijk zijn?"

In principe is het dat ook niet, en een simpele 'Clone to Object' Cloner was dan ook snel gemaakt. Maar als je echt alle functionaliteit wilt hebben van de gewone Cloner, dan wordt het wel complex. Zo'n dynamische user-interface bijvoorbeeld, of de 'blend' mogelijkheid, maken die Cloner toch nog steeds begerenswaardig. Om maar te zwijgen van alle MoGrapg functionaliteit ...

Het doel was echter voor mij om af en toe snel even een hoop kopieën te maken, van bijv. de kolommen van een gebouw. Ik vind het ook echt raar dat Maxon niet op z'n minst een Cloner in Visualize heeft zitten! Alsof die architecten elke kolom apart ontwerpen zeker…

Maar goed, ik dwaal af. Die simpele eerste cloner heb ik nog wat verder uitgewerkt, en hij kan nu ook met splines overweg. Dus voor iedereen die weleens wat wil kopiëren maar geen Broadcast of Studio heeft: De Py Cloner!

Laat het ajb weten als je er een bug in aantreft, (of extra functionaliteit wenst), dan zal ik kijken wat ik kan doen.

Groeten,

Hermen

PS: 'Linear' en 'Radial' mode zijn nog niet uitgewerkt, ookal staan ze al wel in de user-interface. Kun je in principe ook met 'Grid-mode' of op een cirkel bereiken, vandaar...
Attached Images
File Type: jpg PyCloner.jpg (192.4 KB, 13 views)
Attached Files
File Type: c4d PyCloner.c4d (190.5 KB, 8 views)
Reply With Quote
  #7  
Old 25th January 2015
douwe's Avatar
douwe douwe is offline
Admin Team
 
Join Date: Feb 2010
Posts: 1,874
Default


Rock it, Herm !
Dit belooft een gouden draadje te worden.

Tip voor eventueel nog wat meer functionaliteit :
Vervang MakeEditable door de volgende snippet en je kan ook clonen op moederobjecten die worden vervormd

Code:
def CSTO(obj):
    try:    # Use Cache if present for parametric objects
        defcache = obj.GetCache().GetDeformCache()
        obj = defcache if defcache else obj.GetCache()
        return obj
    
    except: # else use DeformCache or Polygon Function for point objects
        dobj = obj.GetDeformCache()# if using a deformer
        if dobj is not None:
            return dobj
        else:
            pobj = u.SendModelingCommand(
                            command = c4d.MCOMMAND_CURRENTSTATETOOBJECT,
                            list    = [obj.GetClone()],
                            mode    = c4d.MODELINGCOMMANDMODE_ALL,
                            doc     = doc)

            for c in pobj[0].GetChildren():
                c.Remove()
            if pobj[0].CheckType(c4d.Opolygon) is True:
                return pobj[0]
    return None

Keep 'em coming !!
d
Reply With Quote
  #8  
Old 25th January 2015
Hermenator Hermenator is offline
Member
 
Join Date: Nov 2014
Location: Delft, Nederland
Posts: 48
Default

OK, Douwe, works like a breeze!

Maar nou moet je me toch even iets uitleggen. 'op' is het enige argument van 'MakeEditable'. Waarnaar verwijst 'obj' dan in de eerste regel na 'try:' ? En wanneer treedt de 'except' clause in werking?

In ieder geval bedankt, de geüpdatet cloner is hierbij attached, 'ns kijken hoever we komen, straks gaan we de standaard cloner nog voorbij, haha!

Gr,

Hermen
Attached Files
File Type: c4d PyCloner_0001.c4d (217.6 KB, 15 views)
Reply With Quote
  #9  
Old 25th January 2015
douwe's Avatar
douwe douwe is offline
Admin Team
 
Join Date: Feb 2010
Posts: 1,874
Default

goed gespot ! onoplettendheid van me, ik had niet elke "obj" van de oorspronkelijke snippet in "op" veranderd.
Ik heb de code in mijn vorige post geupdate.

de try zoekt naar parametrische objecten, de except treedt in bij bewerkbare objecten.
credits gaan trouwens weer naar reeds vernoemde Lennart.

werkt ook nog niet als een breeze, want nog niet spline-vriendelijk. Daar kan je voorlopig best nog een omwegje rond bouwen.


d
Reply With Quote
  #10  
Old 26th January 2015
Hermenator Hermenator is offline
Member
 
Join Date: Nov 2014
Location: Delft, Nederland
Posts: 48
Default

Volgens mij heb ik de CSTO nu wat spline-vriendelijker gemaakt.
Bovendien kan je de Cloner nu ook onder bijvoorbeeld een Loft-object hangen, die dan elke clone als afzonderlijke spline herkent.

In mijn volgende post een leuke toepassing daarvan…

Stay tuned,

Hermen
Attached Files
File Type: c4d PyCloner_0002.c4d (216.8 KB, 12 views)
Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is On

Forum Jump


All times are GMT +2. The time now is 03:46.


Powered by vBulletin® Version 3.8.1
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Met trots gehost door Webdesign bureau Graphic Violence.
(c) C4DLounge.eu . All documents on this forum are owned by their respective creators and may not be sold or republished in any way.