C4DLounge.eu - Cinema 4D Gebruikers Forum  

Go Back   C4DLounge.eu - Cinema 4D Gebruikers Forum > RESOURCES > Vragen >>> > Plugins & Scripts/Python/Coffee/Xpresso

Reply
 
Thread Tools Display Modes
  #1  
Old 6th June 2013
casimirsmets casimirsmets is offline
Junior Member
 
Join Date: Apr 2013
Posts: 5
Default PYTHON/ Sliders veranderen mijn objecten niet meer

Hey,

Ik heb mijn functies om objecten te creŽren in een andere file geplaatst.
Zij worden toegepast wanneer er op een knop geduwd wordt. In dezelfde Command-methode moeten die objecten aangepast worden, aan de hand van een aantal sliders.

Het werkte allemaal goed, tot ik de functies verplaatst heb naar een andere file. De file load goed, de functies ook, en de objecten worden aangemaakt zoals het hoort. Maar als ik de sliders aanpas, veranderen de objecten niet meer, wat ze wel deden voor ik de functies verplaatste.

Eerst gaf het een Error: "global L_Foot isn't defined". Dan heb ik de objecten nog een keer gedefinieŽrd in mijn basisfile, en de error was weg, maar de objecten passen nog altijd niet aan met de sliders.

Hier is een deel van mijn code:


def Command(self, id, msg): #Commands

if (id == 10002): #Button Create Character
GENDER = self.GetLong(10001)
print GENDER
doc = c4d.documents.GetActiveDocument()
AddLeftFoot(doc)
AddRightFoot(doc)
AddLeftToes(doc)
AddRightToes(doc)
AddLeftLeg(doc)
AddRightLeg(doc)
AddLeftThigh(doc)
AddRightThigh(doc)
AddHip(doc)
AddBody(doc)
AddLeftArm(doc)
AddRightArm(doc)
AddLeftUpperArm(doc)
AddRightUpperArm(doc)
AddLeftLowerArm(doc)
AddRightLowerArm(doc)
AddLeftWrist(doc)
AddRightWrist(doc)
c4d.CallCommand(17105) # Gouraud Shading (Lines)
c4d.CallCommand(12148) # Frame Geometry
c4d.EventAdd()

#Sliders#



########################################################################################################################################################
### Left_Foot SLiderCode
########################################################################################################################################################


L_Foot = c4d.PolygonObject(8, 6)

if id in (FOOT_X_SLIDER, FOOT_Y_SLIDER, FOOT_Z_SLIDER, FOOT_AXIS_X_SLIDER, LEG_X_SLIDER, LEG_Z_SLIDER):
FOOT_X = self.GetReal(FOOT_X_SLIDER)
FOOT_Y = self.GetReal(FOOT_Y_SLIDER)
FOOT_Z = self.GetReal(FOOT_Z_SLIDER)
FOOT_AXIS_X = self.GetReal(FOOT_AXIS_X_SLIDER)
LEG_X = self.GetReal(LEG_X_SLIDER)
LEG_Z = self.GetReal(LEG_Z_SLIDER)
L_Foot.SetPoint(0, c4d.Vector((FOOT_AXIS_X -FOOT_X/2.0), (ZERO), (-LEG_Z/2.0 -(FOOT_Z -LEG_Z) +(FOOT_X -LEG_X)/2.0)))
L_Foot.SetPoint(1, c4d.Vector((FOOT_AXIS_X -FOOT_X/2.0), (FOOT_Y), (-LEG_Z/2.0 -(FOOT_Z -LEG_Z) +(FOOT_X -LEG_X)/2.0)))
L_Foot.SetPoint(2, c4d.Vector((FOOT_AXIS_X +FOOT_X/2.0), (ZERO), (-LEG_Z/2.0 -(FOOT_Z -LEG_Z) +(FOOT_X -LEG_X)/2.0)))
L_Foot.SetPoint(3, c4d.Vector((FOOT_AXIS_X +FOOT_X/2.0), (FOOT_Y), (-LEG_Z/2.0 -(FOOT_Z -LEG_Z) +(FOOT_X -LEG_X)/2.0)))
L_Foot.SetPoint(4, c4d.Vector((FOOT_AXIS_X +FOOT_X/2.0), (ZERO), (LEG_Z/2.0 +(FOOT_X -LEG_X)/2.0)))
L_Foot.SetPoint(5, c4d.Vector((FOOT_AXIS_X +FOOT_X/2.0), (FOOT_Y), (LEG_Z/2.0 +(FOOT_X -LEG_X)/2.0)))
L_Foot.SetPoint(6, c4d.Vector((FOOT_AXIS_X -FOOT_X/2.0), (ZERO), (LEG_Z/2.0 +(FOOT_X -LEG_X)/2.0)))
L_Foot.SetPoint(7, c4d.Vector((FOOT_AXIS_X -FOOT_X/2.0), (FOOT_Y), (LEG_Z/2.0 +(FOOT_X -LEG_X)/2.0)))
L_Foot.Message(c4d.MSG_UPDATE)
c4d.EventAdd()


Weet iemand hoe ik dit het best oplos?

Bij voorbaat dank voor al dan niet enige antwoorden

Groetjes,

Casimir
Reply With Quote
  #2  
Old 6th June 2013
roobol roobol is offline
Admin Team
 
Join Date: Mar 2009
Posts: 1,970
Default

Hmm..., dit lijkt me de ultieme test voor Douwe......
__________________
http://www.roobol.be
Reply With Quote
  #3  
Old 6th June 2013
roobol roobol is offline
Admin Team
 
Join Date: Mar 2009
Posts: 1,970
Default

Uit nieuwsgierigheid, komt dit uit het MakeHuman project?
__________________
http://www.roobol.be
Reply With Quote
  #4  
Old 6th June 2013
Dweemes Dweemes is offline
Admin Team
 
Join Date: Jun 2010
Posts: 2,369
Default

komt volgens mij uit het "MakeAlien" project.
En als Douwe hierop kan antwoorden, dan weten we gelijk waar hij vandaan komt...
__________________
dw
Reply With Quote
  #5  
Old 6th June 2013
roobol roobol is offline
Admin Team
 
Join Date: Mar 2009
Posts: 1,970
Default

http://www.makehuman.org/content/download.html

Is nog in alfa en tamelijk crashy, maar de geometry is in principe niet slecht. De bijbehorende rig is bruikbaar na aanpassingen, de UV map beslist niet.

Ga ik in het verlof wat mee spelen......
__________________
http://www.roobol.be
Reply With Quote
  #6  
Old 6th June 2013
roobol roobol is offline
Admin Team
 
Join Date: Mar 2009
Posts: 1,970
Default

Ogen op steeltjes, ŤŤhkes....
Attached Files
File Type: zip testbody.c4d.zip (411.3 KB, 7 views)
__________________
http://www.roobol.be
Reply With Quote
  #7  
Old 6th June 2013
douwe's Avatar
douwe douwe is offline
Admin Team
 
Join Date: Feb 2010
Posts: 1,911
Default

casimir,
Eerst en vooral voor de goede orde :
Vermits deze post in het open forum staat mag je ervan uit gaan dat ik het lees als ik tijd heb; niet nodig van me er ook nog eens over te pm'en. Ik had deze post trouwens gisteren ook reeds op het plugincafe al gelezen, net als je andere posts daar de laatste tijd.

Het lijkt er op dat je een paar essentiŽle basics van programmeren (in Python) nog niet helemaal snapt, en je het jezelf dus vaak onnodig moeilijk maakt. Daarom ook kunnen we alleen maar een beetje proberen te "raden" waar precies je probleem zit, op basis van die enkele losse flarden code zonder veel context.

Dat verklaart wellicht ook waarom er elders weinig antwoord komt.

Over naar dit concrete draadje dan maar :
Ik vermoed dat je met een "scope" probleem zit.
Je roept je variabele aan vanop een plek waarop hij niet bestaat / geen waarde heeft.
Ik wil je dus met zachte dwang aanraden om je een beetje te verdiepen in globale versus lokale variabelen.

Misschien doet deze flard reeds een lichtje branden :

Code:
L_Foot = "" # declares L_Foot in global scope
def teenentander():
	global L_Foot # tells python that the local variable 'L_Foot' refers to the global 'L_Foot'
	L_Foot = c4d.PolygonObject(8, 6)
teenentander()
print L_Foot

Quote:
A global variable is a variable defined in the 'main' program. Such variables are said to have 'global' scope.
A local variable is a variable defined within a function. Such variables are said to have local 'scope'.
Functions can access global variables and modify them.
Quote:
To use a global variable, first create it globally (outside of all classes and functions), then declare it as global locally (with global keyword) so you can assign to it.
Belangrijke opmerking nog :
Quote:
Modifying global variables in a function is considered poor programming practice. It is better to send a variable in as a parameter (or have it be returned in the 'return' statement).
Ik hoop dat je hiermee verder kan.

@roobol: @dweemes :
Ik denk dat casimir betrokken is bij het maken van een app/game. Deze plugin dient wellicht om snel en makkelijk figuurtjes mee te genereren in c4d.
Dat MakeHuman project ziet er interessant uit ja, kees.

cheers,
d
Reply With Quote
  #8  
Old 6th June 2013
Leopard1975's Avatar
Leopard1975 Leopard1975 is offline
Erelid
 
Join Date: Jan 2012
Location: Biddinghuizen, Flevoland
Posts: 891
Send a message via Skype™ to Leopard1975
Default

Pffff... En dan zit ik hier nog te zweten op de TP lessen van Kees...
__________________
Every artist was first an amateur.
Reply With Quote
  #9  
Old 7th June 2013
roobol roobol is offline
Admin Team
 
Join Date: Mar 2009
Posts: 1,970
Default

Geen schrik, Richard; Python komt pas in animatie 4 :-)))
__________________
http://www.roobol.be
Reply With Quote
  #10  
Old 7th June 2013
casimirsmets casimirsmets is offline
Junior Member
 
Join Date: Apr 2013
Posts: 5
Default

Dank je Douwe!

Je hebt het inderdaad juist als je zegt dat ik wat basics van programmeren mis. Ik heb voor plugins te maken al heel wat veranderd tussen c++, coffee en python, dus voor mij is het zeer verwarrend momenteel. Ik zal me nog wat verdiepen in Python!

En het klinkt wel logisch wat je daar zegt over die variabelen, dank u!

En wat betreft waarom ik het maak, het is niet voor een app/game, maar de rest heb je wel juist. Het komt dus helemaal niet uit het MakeHuman of MakeAlien project

Groetjes,

Casimir
Reply With Quote
Reply

Tags
plugin, python

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 17:24.


Powered by vBulletin® Version 3.8.1
Copyright ©2000 - 2020, 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.