Plugin Problem
-
On 07/02/2013 at 08:42, xxxxxxxx wrote:
I like to write a code for a procedural rock generator plugin and i don´t know what i am doing wrong.
Im new in python programming, so im confused about how to make my plugin work.Here´s my problem:
The code for the object creation is working fine, but the sliders and the last button don´t come in to effect.
Here´s my code so far:
import os
import sys
import c4d
from c4d import plugins, utils, gui,documents
from c4d.modules import mographPLUGIN_ID = 1029753
global doc
doc = c4d.documents.GetActiveDocument()UI Daten
UI_Initial_Mesh_Subdivisions = 10000
UI_HyperNURBS_Subdivisions = 10001
UI_Rock_SIZE = 10002
UI_Displacement1_Height = 10003
UI_Noise1_Type = 10004
UI_Noise1_Size = 10005
UI_Random_Seed1 = 10006
UI_Formula_x = 10007
UI_Formula_y = 10008
UI_Formula_z = 10009
UI_Displacement2_Height = 10010
UI_Noise2_Type = 10011
UI_Noise2_Size = 10012
UI_Random_Seed2 = 10013
UI_Generate_Mesh = 10014
UI_Generate_Initial_Rock = 10015Groups
Group1 = 20001
Group2 = 20002
Group3 = 20003
Group4 = 20004Combo Box Daten
Combo_1 = 20005
Combo_1_ch_0 = 31000
Combo_1_ch_1 = 31001
Combo_1_ch_2 = 31002
Combo_1_ch_3 = 31003
Combo_1_ch_4 = 31004
Combo_1_ch_5 = 31005
Combo_1_ch_6 = 31006
Combo_1_ch_7 = 31007
Combo_1_ch_8 = 31008
Combo_1_ch_9 = 31009
Combo_1_ch_10 = 31010
Combo_1_ch_11 = 31011
Combo_1_ch_12 = 31012
Combo_1_ch_13 = 31013
Combo_1_ch_14 = 31014
Combo_1_ch_15 = 31015
Combo_1_ch_16 = 31016
Combo_1_ch_17 = 31017
Combo_1_ch_18 = 31018
Combo_1_ch_19 = 31019
Combo_1_ch_20 = 31020
Combo_1_ch_21 = 31021
Combo_1_ch_22 = 31022
Combo_1_ch_23 = 31023
Combo_1_ch_24 = 31024
Combo_1_ch_25 = 31025
Combo_1_ch_26 = 31026
Combo_1_ch_27 = 31027
Combo_1_ch_28 = 31028
Combo_1_ch_29 = 31029
Combo_1_ch_30 = 31030
Combo_1_ch_31 = 31031Combo_2 = 20006
Combo_2_ch_0 = 32000
Combo_2_ch_1 = 32001
Combo_2_ch_2 = 32002
Combo_2_ch_3 = 32003
Combo_2_ch_4 = 32004
Combo_2_ch_5 = 32005
Combo_2_ch_6 = 32006
Combo_2_ch_7 = 32007
Combo_2_ch_8 = 32008
Combo_2_ch_9 = 32009
Combo_2_ch_10 = 32010
Combo_2_ch_11 = 32011
Combo_2_ch_12 = 32012
Combo_2_ch_13 = 32013
Combo_2_ch_14 = 32014
Combo_2_ch_15 = 32015
Combo_2_ch_16 = 32016
Combo_2_ch_17 = 32017
Combo_2_ch_18 = 32018
Combo_2_ch_19 = 32019
Combo_2_ch_20 = 32020
Combo_2_ch_21 = 32021
Combo_2_ch_22 = 32022
Combo_2_ch_23 = 32023
Combo_2_ch_24 = 32024
Combo_2_ch_25 = 32025
Combo_2_ch_26 = 32026
Combo_2_ch_27 = 32027
Combo_2_ch_28 = 32028
Combo_2_ch_29 = 32029
Combo_2_ch_30 = 32030
Combo_2_ch_31 = 32031class ProceduralRockGeneratorDialog(c4d.gui.GeDialog) :
def CreateLayout(self) :
self.SetTitle("Procedural Rock Generator")self.AddButton(UI_Generate_Initial_Rock, c4d.BFH_LEFT | c4d.BFV_TOP | c4d.BFH_SCALEFIT, 600, 15, "Generate Initial Rock")
#Group 1 with 2 columns "Resolution"
self.GroupBegin(Group1, c4d.BFH_SCALEFIT | c4d.BFV_SCALEFIT, 2, 0, "Resolution")
self.GroupBorderSpace(5, 5, 5, 5)
self.GroupBorder(c4d.BORDER_GROUP_IN)
self.AddStaticText(0, c4d.BFH_LEFT, 0, 0, "Initial Mesh Subdivisions:", 0)
self.AddEditSlider(UI_Initial_Mesh_Subdivisions, c4d.BFH_SCALEFIT, 0, 0)
self.AddStaticText(0, c4d.BFH_LEFT, 0, 0, "Hyper Nurbs Subdisvisions:", 0)
self.AddEditSlider(UI_HyperNURBS_Subdivisions, c4d.BFH_SCALEFIT, 0, 0)
self.GroupEnd()#Group 2 with 2 columns "Basic Rock Shape"
self.GroupBegin(Group2, c4d.BFH_SCALEFIT | c4d.BFV_SCALEFIT, 2, 0, "Basic Rock Shape")
self.GroupBorderSpace(5, 5, 5, 5)
self.GroupBorder(c4d.BORDER_GROUP_IN)
self.AddStaticText(0, c4d.BFH_LEFT, 0, 0, "Rock Size:", 0)
self.AddEditSlider(UI_Rock_SIZE, c4d.BFH_SCALEFIT, 0, 0)
self.AddStaticText(0, c4d.BFH_LEFT, 0, 0, "Displacement Height:", 0)
self.AddEditSlider(UI_Displacement1_Height, c4d.BFH_SCALEFIT, 0, 0)
self.AddStaticText(0, c4d.BFH_LEFT, 0, 0, "Noise Type:", 0)
self.AddComboBox(Combo_1, c4d.BFH_SCALEFIT, 0, 0)
self.AddChild(Combo_1 ,Combo_1_ch_0,'Box Noise')
self.AddChild(Combo_1,Combo_1_ch_1,'Blistered Turbulence')
self.AddChild(Combo_1,Combo_1_ch_2,'Buya')
self.AddChild(Combo_1,Combo_1_ch_3,'Cell Noise')
self.AddChild(Combo_1,Combo_1_ch_4,'Cranal')
self.AddChild(Combo_1,Combo_1_ch_5,'Dents')
self.AddChild(Combo_1,Combo_1_ch_6,'Displaced Turbulence')
self.AddChild(Combo_1,Combo_1_ch_7,'FBM')
self.AddChild(Combo_1,Combo_1_ch_8,'Hama')
self.AddChild(Combo_1,Combo_1_ch_9,'Luka')
self.AddChild(Combo_1,Combo_1_ch_10,'Mod Noise')
self.AddChild(Combo_1,Combo_1_ch_11,'Hama')
self.AddChild(Combo_1,Combo_1_ch_12,'Noise')
self.AddChild(Combo_1,Combo_1_ch_13,'Nutous')
self.AddChild(Combo_1,Combo_1_ch_14,'Ober')
self.AddChild(Combo_1,Combo_1_ch_15,'Pezo')
self.AddChild(Combo_1,Combo_1_ch_16,'Poxo')
self.AddChild(Combo_1,Combo_1_ch_17,'Sema')
self.AddChild(Combo_1,Combo_1_ch_18,'Stupl')
self.AddChild(Combo_1,Combo_1_ch_19,'Turbulence')
self.AddChild(Combo_1,Combo_1_ch_20,'VL Noise')
self.AddChild(Combo_1,Combo_1_ch_21,'Wavy Turbulence')
self.AddChild(Combo_1,Combo_1_ch_22,'Cell Voronoi')
self.AddChild(Combo_1,Combo_1_ch_23,'Displaced Voronoi')
self.AddChild(Combo_1,Combo_1_ch_24,'Sparse Convolution')
self.AddChild(Combo_1,Combo_1_ch_25,'Voronoi 1')
self.AddChild(Combo_1,Combo_1_ch_26,'Voronoi 2')
self.AddChild(Combo_1,Combo_1_ch_27,'Voronoi 3')
self.AddChild(Combo_1,Combo_1_ch_28,'Zada')
self.AddChild(Combo_1,Combo_1_ch_29,'Fire')
self.AddChild(Combo_1,Combo_1_ch_30,'Electric')
self.AddChild(Combo_1,Combo_1_ch_31,'Gaseous')
self.AddStaticText(0, c4d.BFH_LEFT, 0, 0, "Noise Size:", 0)
self.AddEditSlider(UI_Noise1_Size, c4d.BFH_SCALEFIT, 0, 0)
self.AddStaticText(0, c4d.BFH_LEFT, 0, 0, "Random Seed:", 0)
self.AddEditSlider(UI_Random_Seed1, c4d.BFH_SCALEFIT, 0, 0)
self.AddStaticText(0, c4d.BFH_LEFT, 0, 0, "Scale X:", 0)
self.AddEditSlider(UI_Formula_x, c4d.BFH_SCALEFIT, 0, 0)
self.AddStaticText(0, c4d.BFH_LEFT, 0, 0, "Scale Y:", 0)
self.AddEditSlider(UI_Formula_y, c4d.BFH_SCALEFIT, 0, 0)
self.AddStaticText(0, c4d.BFH_LEFT, 0, 0, "Scale Z:", 0)
self.AddEditSlider(UI_Formula_z, c4d.BFH_SCALEFIT, 0, 0)
self.GroupEnd()#Group 3 with 2 columns "Rock Details"
self.GroupBegin(Group3, c4d.BFH_SCALEFIT | c4d.BFV_SCALEFIT, 2, 0, "Rock Details")
self.GroupBorderSpace(5, 5, 5, 5)
self.GroupBorder(c4d.BORDER_GROUP_IN)
self.AddStaticText(0, c4d.BFH_LEFT, 0, 0, "Displacement Height:", 0)
self.AddEditSlider(UI_Displacement2_Height, c4d.BFH_SCALEFIT, 0, 0)
self.AddStaticText(0, c4d.BFH_LEFT, 0, 0, "Noise Type:", 0)
self.AddComboBox(Combo_2, c4d.BFH_SCALEFIT, 0, 0)
self.AddChild(Combo_2,Combo_2_ch_0,'Box Noise')
self.AddChild(Combo_2,Combo_2_ch_1,'Blistered Turbulence')
self.AddChild(Combo_2,Combo_2_ch_2,'Buya')
self.AddChild(Combo_2,Combo_2_ch_3,'Cell Noise')
self.AddChild(Combo_2,Combo_2_ch_4,'Cranal')
self.AddChild(Combo_2,Combo_2_ch_5,'Dents')
self.AddChild(Combo_2,Combo_2_ch_6,'Displaced Turbulence')
self.AddChild(Combo_2,Combo_2_ch_7,'FBM')
self.AddChild(Combo_2,Combo_2_ch_8,'Hama')
self.AddChild(Combo_2,Combo_2_ch_9,'Luka')
self.AddChild(Combo_2,Combo_2_ch_10,'Mod Noise')
self.AddChild(Combo_2,Combo_2_ch_11,'Hama')
self.AddChild(Combo_2,Combo_2_ch_12,'Noise')
self.AddChild(Combo_2,Combo_2_ch_13,'Nutous')
self.AddChild(Combo_2,Combo_2_ch_14,'Ober')
self.AddChild(Combo_2,Combo_2_ch_15,'Pezo')
self.AddChild(Combo_2,Combo_2_ch_16,'Poxo')
self.AddChild(Combo_2,Combo_2_ch_17,'Sema')
self.AddChild(Combo_2,Combo_2_ch_18,'Stupl')
self.AddChild(Combo_2,Combo_2_ch_19,'Turbulence')
self.AddChild(Combo_2,Combo_2_ch_20,'VL Noise')
self.AddChild(Combo_2,Combo_2_ch_21,'Wavy Turbulence')
self.AddChild(Combo_2,Combo_2_ch_22,'Cell Voronoi')
self.AddChild(Combo_2,Combo_2_ch_23,'Displaced Voronoi')
self.AddChild(Combo_2,Combo_2_ch_24,'Sparse Convolution')
self.AddChild(Combo_2,Combo_2_ch_25,'Voronoi 1')
self.AddChild(Combo_2,Combo_2_ch_26,'Voronoi 2')
self.AddChild(Combo_2,Combo_2_ch_27,'Voronoi 3')
self.AddChild(Combo_2,Combo_2_ch_28,'Zada')
self.AddChild(Combo_2,Combo_2_ch_29,'Fire')
self.AddChild(Combo_2,Combo_2_ch_30,'Electric')
self.AddChild(Combo_2,Combo_2_ch_31,'Gaseous')
self.AddStaticText(0, c4d.BFH_LEFT, 0, 0, "Noise Size:", 0)
self.AddEditSlider(UI_Noise2_Size, c4d.BFH_SCALEFIT, 0, 0)
self.AddStaticText(0, c4d.BFH_LEFT, 0, 0, "Random Seed:", 0)
self.AddEditSlider(UI_Random_Seed2, c4d.BFH_SCALEFIT, 0, 0)
self.GroupEnd()self.AddButton(UI_Generate_Mesh, c4d.BFH_LEFT | c4d.BFV_TOP | c4d.BFH_SCALEFIT, 600, 15, "Generate Rock Mesh")
return Truedef InitValues(self) :
self.SetReal(UI_Initial_Mesh_Subdivisions, 50, min=0, max=400, step=1, format=c4d.FORMAT_REAL)
self.SetReal(UI_HyperNURBS_Subdivisions, 1, min=1, max=6, step=1, format=c4d.FORMAT_REAL)
self.SetReal(UI_Rock_SIZE, 195, min=1, max=1000, step=1, format=c4d.FORMAT_REAL)
self.SetReal(UI_Displacement1_Height, 227, min=0, max=500, step=1, format=c4d.FORMAT_REAL)
self.SetLong(Combo_1,Combo_1_ch_23)
self.SetReal(UI_Noise1_Size, 18, min=0, max=40, step=1, format=c4d.FORMAT_PERCENT)
self.SetReal(UI_Random_Seed1, 658, min=1, max=1000, step=1, format=c4d.FORMAT_REAL)
self.SetReal(UI_Formula_x, 1, min=1, max=5, step=0.1, format=c4d.FORMAT_REAL)
self.SetReal(UI_Formula_y, 1, min=1, max=5, step=0.1, format=c4d.FORMAT_REAL)
self.SetReal(UI_Formula_z, 1, min=1, max=5, step=0.1, format=c4d.FORMAT_REAL)
self.SetReal(UI_Displacement2_Height, 5, min=0, max=500, step=1, format=c4d.FORMAT_REAL)
self.SetLong(Combo_2,Combo_2_ch_9)
self.SetReal(UI_Noise2_Size, 2.57, min=0, max=40, step=1, format=c4d.FORMAT_PERCENT)
self.SetReal(UI_Random_Seed2, 660, min=1, max=1000, step=1, format=c4d.FORMAT_REAL)return True
def Command(self,id,msg) :
if (id == UI_Generate_Initial_Rock) :
doc = c4d.documents.GetActiveDocument()c4d.CallCommand(12202) # Set standart Camera in Editor Window
c4d.CallCommand(12091) # Set Gouraud-Shading in Editor Window
c4d.CallCommand(13620) # Set Editor Window to Single View# Create the HyperNURBS
h = c4d.BaseObject(c4d.Osds) # Create new HyperNURBS
h[c4d.SDSOBJECT_SUBEDITOR_CM] = 2 # Set Editor subdivision to 2
h[c4d.SDSOBJECT_SUBRAY_CM] = 3 # Set Render subdivision to 3
h.SetName('Hypernurbs')
doc.InsertObject(h)
# Create the sphere
s = c4d.BaseObject(c4d.Osphere) # Create new sphere
s[c4d.PRIM_SPHERE_TYPE] = 2 # Set sphere type to Hexaeder
s[c4d.PRIM_SPHERE_SUB] = 50 # Set sphere segments to 50
s[c4d.PRIM_SPHERE_RAD] = 200 # Set sphere radius to 200
s.SetName('Sphere')
doc.InsertObject(s)
# Create the Displacer deformer 1
c4d.CallCommand(1018685) # Create new displacer deformer
d1 = doc.SearchObject('Displacer')
d1[c4d.MGDISPLACER_DISPLACEMENT_HEIGHT] = 227 # Set displacement height to 227cm
d1[c4d.MGDISPLACER_DISPLACEMENTMODE]=0 # Set Displacementmode to Intensity
d1[c4d.MGDISPLACER_POLYNORMALMODE]=1 # Set Polynormalmode to Sphere
d1.SetName('Displacer1')# Assingn the noise shadet to the displace deformer 1
mat1 = d1
shd1 = c4d.BaseList2D(c4d.Xnoise)
shd1[c4d.SLA_NOISE_SEED] = 658
shd1[c4d.SLA_NOISE_NOISE] = 2025
shd1[c4d.SLA_NOISE_OCTAVES] = 1
shd1[c4d.SLA_NOISE_GLOBAL_SCALE] = 18mat1[c4d.ID_MG_SHADER_SHADER] = shd1
mat1.InsertShader(shd1)
mat1.Message(c4d.MSG_UPDATE)# Create the Formula deformer
c4d.CallCommand(5146) # Create new Formula deformer
f = doc.SearchObject('Formel')
f[c4d.ID_BASEOBJECT_VISIBILITY_EDITOR]=1 # Set Formula deformer to invisible
f[c4d.FORMULAOBJECT_EFFECT]=0 # Set Effect to Manual
fxWert_x = 'x*' + str((self.GetReal(UI_Formula_x)))
fxWert_y = 'y*' + str((self.GetReal(UI_Formula_y)))
fxWert_z = 'z*' + str((self.GetReal(UI_Formula_z)))
f[c4d.FORMULAOBJECT_FX]=fxWert_x
f[c4d.FORMULAOBJECT_FY]=fxWert_y
f[c4d.FORMULAOBJECT_FZ]=fxWert_z
f.SetName('Formula')# Create the Displacer deformer 2
c4d.CallCommand(1018685) # Create new displacer deformer
d2 = doc.SearchObject('Displacer')
d2[c4d.MGDISPLACER_DISPLACEMENT_HEIGHT] = 5 # Set displacement height to 5cm
d2.SetName('Displacer2')# Assingn the noise shader to the displace deformer 2
mat2 = d2
shd2 = c4d.BaseList2D(c4d.Xnoise)
shd2[c4d.SLA_NOISE_SEED] = 660
shd2[c4d.SLA_NOISE_NOISE] = 2010
shd2[c4d.SLA_NOISE_OCTAVES] = 20
shd2[c4d.SLA_NOISE_GLOBAL_SCALE] = 2.57mat2[c4d.ID_MG_SHADER_SHADER] = shd2
mat2.InsertShader(shd2)
mat2.Message(c4d.MSG_UPDATE)# Insertions
s.InsertUnder(h)
d2.InsertUnder(s)
f.InsertUnder(s)
d1.InsertUnder(s)# Layer
c4d.CallCommand(100004738) # Create a new layer
c4d.CallCommand(100004748) # Alles aufklappen in der Objektliste
c4d.CallCommand(100004766) # Select all Objects
c4d.CallCommand(100004736) # Assign all Objects to the layer
c4d.CallCommand(12148) # Zoom on Geometry in Editor Window
c4d.CallCommand(100004767) # Deselect all######################### Hide the layer in menu ##########################
#doc = c4d.documents.GetActiveDocument()
#root = doc.GetLayerObjectRoot()#Gets the layer manager
#LayersList = root.GetChildren()
#toggled = 0
#for layers in LayersList:# if layers.GetBit(c4d.BIT_ACTIVE) :# if the layer is selected
# layer_data = layers.GetLayerData(doc)
# layer_data['manager'] = not layer_data['manager']
# layers.SetLayerData(doc,layer_data)
# toggled=1
# c4d.EventAdd()##########################################################################
return Trueif id == UI_Generate_Mesh:
doc = c4d.documents.GetActiveDocument()
rock = doc.SearchObject('Hypernurbs')
rock.SetName('Rock')
c4d.CallCommand(12236) # Grundobjekt kovertieren
c4d.CallCommand(100004739) # Delete all Layers
c4d.EventAdd()
return Trueif id == Combo_1:
if (self.GetLong(Combo_1) == Combo_1_ch_0) :
shd1[c4d.SLA_NOISE_NOISE] = 2001elif (self.GetLong(Combo_1) == Combo_1_ch_1) :
shd1[c4d.SLA_NOISE_NOISE] = 2002
elif (self.GetLong(Combo_1) == Combo_1_ch_2) :
shd1[c4d.SLA_NOISE_NOISE] = 2003
elif (self.GetLong(Combo_1) == Combo_1_ch_3) :
shd1[c4d.SLA_NOISE_NOISE] = 2004
elif (self.GetLong(Combo_1) == Combo_1_ch_4) :
shd1[c4d.SLA_NOISE_NOISE] = 2005
elif (self.GetLong(Combo_1) == Combo_1_ch_5) :
shd1[c4d.SLA_NOISE_NOISE] = 2006
elif (self.GetLong(Combo_1) == Combo_1_ch_6) :
shd1[c4d.SLA_NOISE_NOISE] = 2007
elif (self.GetLong(Combo_1) == Combo_1_ch_7) :
shd1[c4d.SLA_NOISE_NOISE] = 2008
elif (self.GetLong(Combo_1) == Combo_1_ch_8) :
shd[c4d.SLA_NOISE_NOISE] = 2009
elif (self.GetLong(Combo_1) == Combo_1_ch_9) :
shd1[c4d.SLA_NOISE_NOISE] = 2010
elif (self.GetLong(Combo_1) == Combo_1_ch_10) :
shd1[c4d.SLA_NOISE_NOISE] = 2011
elif (self.GetLong(Combo_1) == Combo_1_ch_11) :
shd1[c4d.SLA_NOISE_NOISE] = 2012elif (self.GetLong(Combo_1) == Combo_1_ch_12) :
shd1[c4d.SLA_NOISE_NOISE] = 2013elif (self.GetLong(Combo_1) == Combo_1_ch_13) :
shd1[c4d.SLA_NOISE_NOISE] = 2014elif (self.GetLong(Combo_1) == Combo_1_ch_14) :
shd1[c4d.SLA_NOISE_NOISE] = 2015elif (self.GetLong(Combo_1) == Combo_1_ch_15) :
shd1[c4d.SLA_NOISE_NOISE] = 2016elif (self.GetLong(Combo_1) == Combo_1_ch_16) :
shd1[c4d.SLA_NOISE_NOISE] = 2017elif (self.GetLong(Combo_1) == Combo_1_ch_17) :
shd1[c4d.SLA_NOISE_NOISE] = 2019elif (self.GetLong(Combo_1) == Combo_1_ch_18) :
shd1[c4d.SLA_NOISE_NOISE] = 2020elif (self.GetLong(Combo_1) == Combo_1_ch_19) :
shd1[c4d.SLA_NOISE_NOISE] = 2021elif (self.GetLong(Combo_1) == Combo_1_ch_20) :
shd1[c4d.SLA_NOISE_NOISE] = 2022elif (self.GetLong(Combo_1) == Combo_1_ch_21) :
shd1[c4d.SLA_NOISE_NOISE] = 2023elif (self.GetLong(Combo_1) == Combo_1_ch_22) :
shd1[c4d.SLA_NOISE_NOISE] = 2024elif (self.GetLong(Combo_1) == Combo_1_ch_23) :
shd1[c4d.SLA_NOISE_NOISE] = 2025elif (self.GetLong(Combo_1) == Combo_1_ch_24) :
shd1[c4d.SLA_NOISE_NOISE] = 2026elif (self.GetLong(Combo_1) == Combo_1_ch_25) :
shd1[c4d.SLA_NOISE_NOISE] = 2027elif (self.GetLong(Combo_1) == Combo_1_ch_26) :
shd1[c4d.SLA_NOISE_NOISE] = 2028elif (self.GetLong(Combo_1) == Combo_1_ch_27) :
shd1[c4d.SLA_NOISE_NOISE] = 2029elif (self.GetLong(Combo_1) == Combo_1_ch_28) :
shd1[c4d.SLA_NOISE_NOISE] = 2030elif (self.GetLong(Combo_1) == Combo_1_ch_29) :
shd1[c4d.SLA_NOISE_NOISE] = 2031elif (self.GetLong(Combo_1) == Combo_1_ch_30) :
shd1[c4d.SLA_NOISE_NOISE] = 2032elif (self.GetLong(Combo_1) == Combo_1_ch_31) :
shd1[c4d.SLA_NOISE_NOISE] = 2033
return Trueif id == Combo_2:
if (self.GetLong(Combo_2) == Combo_2_ch_0) :
shd2[c4d.SLA_NOISE_NOISE] = 2001elif (self.GetLong(Combo_2) == Combo_2_ch_1) :
shd2[c4d.SLA_NOISE_NOISE] = 2002elif (self.GetLong(Combo_2) == Combo_2_ch_2) :
shd2[c4d.SLA_NOISE_NOISE] = 2003elif (self.GetLong(Combo_2) == Combo_2_ch_3) :
shd2[c4d.SLA_NOISE_NOISE] = 2004elif (self.GetLong(Combo_2) == Combo_2_ch_4) :
shd2[c4d.SLA_NOISE_NOISE] = 2005elif (self.GetLong(Combo_2) == Combo_2_ch_5) :
shd2[c4d.SLA_NOISE_NOISE] = 2006elif (self.GetLong(Combo_2) == Combo_2_ch_6) :
shd2[c4d.SLA_NOISE_NOISE] = 2007elif (self.GetLong(Combo_2) == Combo_2_ch_7) :
shd2[c4d.SLA_NOISE_NOISE] = 2008elif (self.GetLong(Combo_2) == Combo_2_ch_8) :
shd2[c4d.SLA_NOISE_NOISE] = 2009elif (self.GetLong(Combo_2) == Combo_2_ch_9) :
shd2[c4d.SLA_NOISE_NOISE] = 2010elif (self.GetLong(Combo_2) == Combo_2_ch_10) :
shd2[c4d.SLA_NOISE_NOISE] = 2011elif (self.GetLong(Combo_2) == Combo_2_ch_11) :
shd2[c4d.SLA_NOISE_NOISE] = 2012elif (self.GetLong(Combo_2) == Combo_2_ch_12) :
shd2[c4d.SLA_NOISE_NOISE] = 2013elif (self.GetLong(Combo_2) == Combo_2_ch_13) :
shd2[c4d.SLA_NOISE_NOISE] = 2014elif (self.GetLong(Combo_2) == Combo_2_ch_14) :
shd2[c4d.SLA_NOISE_NOISE] = 2015elif (self.GetLong(Combo_2) == Combo_2_ch_15) :
shd2[c4d.SLA_NOISE_NOISE] = 2016elif (self.GetLong(Combo_2) == Combo_2_ch_16) :
shd2[c4d.SLA_NOISE_NOISE] = 2017elif (self.GetLong(Combo_2) == Combo_2_ch_17) :
shd2[c4d.SLA_NOISE_NOISE] = 2019elif (self.GetLong(Combo_2) == Combo_2_ch_18) :
shd2[c4d.SLA_NOISE_NOISE] = 2020elif (self.GetLong(Combo_2) == Combo_2_ch_19) :
shd2[c4d.SLA_NOISE_NOISE] = 2021elif (self.GetLong(Combo_2) == Combo_2_ch_20) :
shd2[c4d.SLA_NOISE_NOISE] = 2022elif (self.GetLong(Combo_2) == Combo_2_ch_21) :
shd2[c4d.SLA_NOISE_NOISE] = 2023elif (self.GetLong(Combo_2) == Combo_2_ch_22) :
shd2[c4d.SLA_NOISE_NOISE] = 2024elif (self.GetLong(Combo_2) == Combo_2_ch_23) :
shd2[c4d.SLA_NOISE_NOISE] = 2025elif (self.GetLong(Combo_2) == Combo_2_ch_24) :
shd2[c4d.SLA_NOISE_NOISE] = 2026elif (self.GetLong(Combo_1) == Combo_2_ch_25) :
shd2[c4d.SLA_NOISE_NOISE] = 2027elif (self.GetLong(Combo_2) == Combo_2_ch_26) :
shd2[c4d.SLA_NOISE_NOISE] = 2028elif (self.GetLong(Combo_2) == Combo_2_ch_27) :
shd2[c4d.SLA_NOISE_NOISE] = 2029elif (self.GetLong(Combo_2) == Combo_2_ch_28) :
shd2[c4d.SLA_NOISE_NOISE] = 2030elif (self.GetLong(Combo_2) == Combo_2_ch_29) :
shd2[c4d.SLA_NOISE_NOISE] = 2031elif (self.GetLong(Combo_2) == Combo_2_ch_30) :
shd2[c4d.SLA_NOISE_NOISE] = 2032elif (self.GetLong(Combo_2) == Combo_2_ch_31) :
shd2[c4d.SLA_NOISE_NOISE] = 2033
return Trueh[c4d.SDSOBJECT_SUBRAY_CM] = self.GetReal(UI_HyperNURBS_Subdivisions)
s[c4d.PRIM_SPHERE_SUB] = self.GetReal(UI_Initial_Mesh_Subdivisions)
s[c4d.PRIM_SPHERE_RAD] = self.GetReal(UI_Rock_SIZE)d1[c4d.MGDISPLACER_DISPLACEMENT_HEIGHT] = self.GetReal(UI_Displacement1_Height)
d2[c4d.MGDISPLACER_DISPLACEMENT_HEIGHT] = self.GetReal(UI_Displacement2_Height)
shd1[c4d.SLA_NOISE_GLOBAL_SCALE] = self.GetReal(UI_Noise1_Size)
shd1[c4d.SLA_NOISE_SEED] = self.GetReal(UI_Random_Seed1)
shd2[c4d.SLA_NOISE_GLOBAL_SCALE] = self.GetReal(UI_Noise2_Size)
shd2[c4d.SLA_NOISE_SEED] = self.GetReal(UI_Random_Seed2)#fxWert_x = (self.GetReal(UI_Formula_x))
#fxWert_y = (self.GetReal(UI_Formula_y))
#fxWert_z = (self.GetReal(UI_Formula_z))#f[c4d.FORMULAOBJECT_FX] = 'x*'fxWert_x
#f[c4d.FORMULAOBJECT_FY] = 'y*'fxWert_x
#f[c4d.FORMULAOBJECT_FZ] = 'z*'fxWert_xreturn True
class ProceduralRockGenerator(c4d.plugins.CommandData) :
dialog = None
def Init(self, op) :
return Truedef Message(self, type, data) :
return Truedef Execute(self, doc) :
if self.dialog is None:
self.dialog = ProceduralRockGeneratorDialog()
return self.dialog.Open(dlgtype=c4d.DLG_TYPE_ASYNC, pluginid=PLUGIN_ID, defaultw=400, defaulth=160)if __name__ == '__main__':
bmp = c4d.bitmaps.BaseBitmap()
dir, file = os.path.split(__file__)
fn = os.path.join(dir, "res", "Icon.tif")
bmp.InitWith(fn)
print "Procedural Rock Generator loaded."
result = plugins.RegisterCommandPlugin(PLUGIN_ID, "ProceduralRockGenerator", 0, bmp, "ProceduralRockGenerator", ProceduralRockGenerator()) -
On 07/02/2013 at 13:13, xxxxxxxx wrote:
You need to use a getter to use the dialog's values.
Example:
Wrongh[c4d.SDSOBJECT_SUBEDITOR_CM] = 2
Correct
h[c4d.SDSOBJECT_SUBEDITOR_CM] = self.GetLong(UI_HyperNURBS_Subdivisions)
-ScottA
-
On 07/02/2013 at 13:21, xxxxxxxx wrote:
Scott, I don't see what exactly is wrong with theese two examples. They have different intentions,
he even added a comment "Set Editor subdivision to 2".
16fingers, I currently don't have the time to look at your code in detail, but what I noticed
immediately, is that you don't use the NOISE_ constants but the integer IDs instead. There are
constants like NOISE_BOX_NOISE, see the c4d.utils.noise.C4DNoise class for a list of these.You might also want to look at the c4d.utils.noise.C4DNoise.CreateMenuContainer() method.
-
On 07/02/2013 at 13:38, xxxxxxxx wrote:
The answer I posted is correct.
He's using hard coded values in the command() method where he should be using getters.Don't make me take away your phone young man.
-ScottA
-
On 07/02/2013 at 13:49, xxxxxxxx wrote:
> >> He's using hard coded values in the command() method where he should be using getters.
Yes, he does. But don't you think he is aware of this fact? He even added a comment that states
exactly what the line does. It was probably not his intention to use the value from the UI.
~~h[c4d.SDSOBJECT_SUBEDITOR_CM] = 2 # Set Editor subdivision to 2
~~
~~
~~
I understand what you mean, but in my eyes, you've chosen the wrong line.Uhh, I'm a dumbass. These comments are almost everywhere and he's using fixed values
everywhere. Sorry for complaining.s = c4d.BaseObject(c4d.Osphere) # Create new sphere s[c4d.PRIM_SPHERE_TYPE] = 2 # Set sphere type to Hexaeder s[c4d.PRIM_SPHERE_SUB] = 50 # Set sphere segments to 50 s[c4d.PRIM_SPHERE_RAD] = 200 # Set sphere radius to 200 s.SetName('Sphere') doc.InsertObject(s)
16fingers, as Scott said, you need to obtain the values from the dialog. You're assigning fixed
values to the sphere in this excerpt.See the related GetReal(), GetLong(), GetBool(), etc. methods from the GeDialog class.
-Niklas
-
On 07/02/2013 at 14:17, xxxxxxxx wrote:
Lol,
You had me very worried there Nik.
You are pretty much always correct. And you had me questioning myself.Put that phone down and focus darn it!...
-ScottA
-
On 08/02/2013 at 03:21, xxxxxxxx wrote:
Thank you guys for the tips.
I replaced the fixed values and i´m using the getters now.
The objects are created correctly and they also get the initial values but they still don´t change if i´m moving the sliders.Do i need some kind of update code for aplying the slider values?
import os import sys import c4d from c4d import plugins, utils, gui,documents from c4d.modules import mograph PLUGIN_ID = 1029753 global doc doc = c4d.documents.GetActiveDocument() # UI Daten UI_Initial_Mesh_Subdivisions = 10000 UI_HyperNURBS_Subdivisions = 10001 UI_Rock_SIZE = 10002 UI_Displacement1_Height = 10003 UI_Noise1_Type = 10004 UI_Noise1_Size = 10005 UI_Random_Seed1 = 10006 UI_Formula_x = 10007 UI_Formula_y = 10008 UI_Formula_z = 10009 UI_Displacement2_Height = 10010 UI_Noise2_Type = 10011 UI_Noise2_Size = 10012 UI_Random_Seed2 = 10013 UI_Generate_Mesh = 10014 UI_Generate_Initial_Rock = 10015 # Groups Group1 = 20001 Group2 = 20002 Group3 = 20003 Group4 = 20004 # Combo Box Daten Combo_1 = 20005 Combo_1_ch_0 = 31000 Combo_1_ch_1 = 31001 Combo_1_ch_2 = 31002 Combo_1_ch_3 = 31003 Combo_1_ch_4 = 31004 Combo_1_ch_5 = 31005 Combo_1_ch_6 = 31006 Combo_1_ch_7 = 31007 Combo_1_ch_8 = 31008 Combo_1_ch_9 = 31009 Combo_1_ch_10 = 31010 Combo_1_ch_11 = 31011 Combo_1_ch_12 = 31012 Combo_1_ch_13 = 31013 Combo_1_ch_14 = 31014 Combo_1_ch_15 = 31015 Combo_1_ch_16 = 31016 Combo_1_ch_17 = 31017 Combo_1_ch_18 = 31018 Combo_1_ch_19 = 31019 Combo_1_ch_20 = 31020 Combo_1_ch_21 = 31021 Combo_1_ch_22 = 31022 Combo_1_ch_23 = 31023 Combo_1_ch_24 = 31024 Combo_1_ch_25 = 31025 Combo_1_ch_26 = 31026 Combo_1_ch_27 = 31027 Combo_1_ch_28 = 31028 Combo_1_ch_29 = 31029 Combo_1_ch_30 = 31030 Combo_1_ch_31 = 31031 Combo_2 = 20006 Combo_2_ch_0 = 32000 Combo_2_ch_1 = 32001 Combo_2_ch_2 = 32002 Combo_2_ch_3 = 32003 Combo_2_ch_4 = 32004 Combo_2_ch_5 = 32005 Combo_2_ch_6 = 32006 Combo_2_ch_7 = 32007 Combo_2_ch_8 = 32008 Combo_2_ch_9 = 32009 Combo_2_ch_10 = 32010 Combo_2_ch_11 = 32011 Combo_2_ch_12 = 32012 Combo_2_ch_13 = 32013 Combo_2_ch_14 = 32014 Combo_2_ch_15 = 32015 Combo_2_ch_16 = 32016 Combo_2_ch_17 = 32017 Combo_2_ch_18 = 32018 Combo_2_ch_19 = 32019 Combo_2_ch_20 = 32020 Combo_2_ch_21 = 32021 Combo_2_ch_22 = 32022 Combo_2_ch_23 = 32023 Combo_2_ch_24 = 32024 Combo_2_ch_25 = 32025 Combo_2_ch_26 = 32026 Combo_2_ch_27 = 32027 Combo_2_ch_28 = 32028 Combo_2_ch_29 = 32029 Combo_2_ch_30 = 32030 Combo_2_ch_31 = 32031 # class ProceduralRockGeneratorDialog(c4d.gui.GeDialog) : def CreateLayout(self) : self.SetTitle("Procedural Rock Generator") self.AddButton(UI_Generate_Initial_Rock, c4d.BFH_LEFT | c4d.BFV_TOP | c4d.BFH_SCALEFIT, 600, 15, "Generate Initial Rock") #Group 1 with 2 columns "Resolution" self.GroupBegin(Group1, c4d.BFH_SCALEFIT | c4d.BFV_SCALEFIT, 2, 0, "Resolution") self.GroupBorderSpace(5, 5, 5, 5) self.GroupBorder(c4d.BORDER_GROUP_IN) self.AddStaticText(0, c4d.BFH_LEFT, 0, 0, "Initial Mesh Subdivisions:", 0) self.AddEditSlider(UI_Initial_Mesh_Subdivisions, c4d.BFH_SCALEFIT, 0, 0) self.AddStaticText(0, c4d.BFH_LEFT, 0, 0, "Hyper Nurbs Subdisvisions:", 0) self.AddEditSlider(UI_HyperNURBS_Subdivisions, c4d.BFH_SCALEFIT, 0, 0) self.GroupEnd() #Group 2 with 2 columns "Basic Rock Shape" self.GroupBegin(Group2, c4d.BFH_SCALEFIT | c4d.BFV_SCALEFIT, 2, 0, "Basic Rock Shape") self.GroupBorderSpace(5, 5, 5, 5) self.GroupBorder(c4d.BORDER_GROUP_IN) self.AddStaticText(0, c4d.BFH_LEFT, 0, 0, "Rock Size:", 0) self.AddEditSlider(UI_Rock_SIZE, c4d.BFH_SCALEFIT, 0, 0) self.AddStaticText(0, c4d.BFH_LEFT, 0, 0, "Displacement Height:", 0) self.AddEditSlider(UI_Displacement1_Height, c4d.BFH_SCALEFIT, 0, 0) self.AddStaticText(0, c4d.BFH_LEFT, 0, 0, "Noise Type:", 0) self.AddComboBox(Combo_1, c4d.BFH_SCALEFIT, 0, 0) self.AddChild(Combo_1 ,Combo_1_ch_0,'Box Noise') self.AddChild(Combo_1,Combo_1_ch_1,'Blistered Turbulence') self.AddChild(Combo_1,Combo_1_ch_2,'Buya') self.AddChild(Combo_1,Combo_1_ch_3,'Cell Noise') self.AddChild(Combo_1,Combo_1_ch_4,'Cranal') self.AddChild(Combo_1,Combo_1_ch_5,'Dents') self.AddChild(Combo_1,Combo_1_ch_6,'Displaced Turbulence') self.AddChild(Combo_1,Combo_1_ch_7,'FBM') self.AddChild(Combo_1,Combo_1_ch_8,'Hama') self.AddChild(Combo_1,Combo_1_ch_9,'Luka') self.AddChild(Combo_1,Combo_1_ch_10,'Mod Noise') self.AddChild(Combo_1,Combo_1_ch_11,'Hama') self.AddChild(Combo_1,Combo_1_ch_12,'Noise') self.AddChild(Combo_1,Combo_1_ch_13,'Nutous') self.AddChild(Combo_1,Combo_1_ch_14,'Ober') self.AddChild(Combo_1,Combo_1_ch_15,'Pezo') self.AddChild(Combo_1,Combo_1_ch_16,'Poxo') self.AddChild(Combo_1,Combo_1_ch_17,'Sema') self.AddChild(Combo_1,Combo_1_ch_18,'Stupl') self.AddChild(Combo_1,Combo_1_ch_19,'Turbulence') self.AddChild(Combo_1,Combo_1_ch_20,'VL Noise') self.AddChild(Combo_1,Combo_1_ch_21,'Wavy Turbulence') self.AddChild(Combo_1,Combo_1_ch_22,'Cell Voronoi') self.AddChild(Combo_1,Combo_1_ch_23,'Displaced Voronoi') self.AddChild(Combo_1,Combo_1_ch_24,'Sparse Convolution') self.AddChild(Combo_1,Combo_1_ch_25,'Voronoi 1') self.AddChild(Combo_1,Combo_1_ch_26,'Voronoi 2') self.AddChild(Combo_1,Combo_1_ch_27,'Voronoi 3') self.AddChild(Combo_1,Combo_1_ch_28,'Zada') self.AddChild(Combo_1,Combo_1_ch_29,'Fire') self.AddChild(Combo_1,Combo_1_ch_30,'Electric') self.AddChild(Combo_1,Combo_1_ch_31,'Gaseous') self.AddStaticText(0, c4d.BFH_LEFT, 0, 0, "Noise Size:", 0) self.AddEditSlider(UI_Noise1_Size, c4d.BFH_SCALEFIT, 0, 0) self.AddStaticText(0, c4d.BFH_LEFT, 0, 0, "Random Seed:", 0) self.AddEditSlider(UI_Random_Seed1, c4d.BFH_SCALEFIT, 0, 0) self.AddStaticText(0, c4d.BFH_LEFT, 0, 0, "Scale X:", 0) self.AddEditSlider(UI_Formula_x, c4d.BFH_SCALEFIT, 0, 0) self.AddStaticText(0, c4d.BFH_LEFT, 0, 0, "Scale Y:", 0) self.AddEditSlider(UI_Formula_y, c4d.BFH_SCALEFIT, 0, 0) self.AddStaticText(0, c4d.BFH_LEFT, 0, 0, "Scale Z:", 0) self.AddEditSlider(UI_Formula_z, c4d.BFH_SCALEFIT, 0, 0) self.GroupEnd() #Group 3 with 2 columns "Rock Details" self.GroupBegin(Group3, c4d.BFH_SCALEFIT | c4d.BFV_SCALEFIT, 2, 0, "Rock Details") self.GroupBorderSpace(5, 5, 5, 5) self.GroupBorder(c4d.BORDER_GROUP_IN) self.AddStaticText(0, c4d.BFH_LEFT, 0, 0, "Displacement Height:", 0) self.AddEditSlider(UI_Displacement2_Height, c4d.BFH_SCALEFIT, 0, 0) self.AddStaticText(0, c4d.BFH_LEFT, 0, 0, "Noise Type:", 0) self.AddComboBox(Combo_2, c4d.BFH_SCALEFIT, 0, 0) self.AddChild(Combo_2,Combo_2_ch_0,'Box Noise') self.AddChild(Combo_2,Combo_2_ch_1,'Blistered Turbulence') self.AddChild(Combo_2,Combo_2_ch_2,'Buya') self.AddChild(Combo_2,Combo_2_ch_3,'Cell Noise') self.AddChild(Combo_2,Combo_2_ch_4,'Cranal') self.AddChild(Combo_2,Combo_2_ch_5,'Dents') self.AddChild(Combo_2,Combo_2_ch_6,'Displaced Turbulence') self.AddChild(Combo_2,Combo_2_ch_7,'FBM') self.AddChild(Combo_2,Combo_2_ch_8,'Hama') self.AddChild(Combo_2,Combo_2_ch_9,'Luka') self.AddChild(Combo_2,Combo_2_ch_10,'Mod Noise') self.AddChild(Combo_2,Combo_2_ch_11,'Hama') self.AddChild(Combo_2,Combo_2_ch_12,'Noise') self.AddChild(Combo_2,Combo_2_ch_13,'Nutous') self.AddChild(Combo_2,Combo_2_ch_14,'Ober') self.AddChild(Combo_2,Combo_2_ch_15,'Pezo') self.AddChild(Combo_2,Combo_2_ch_16,'Poxo') self.AddChild(Combo_2,Combo_2_ch_17,'Sema') self.AddChild(Combo_2,Combo_2_ch_18,'Stupl') self.AddChild(Combo_2,Combo_2_ch_19,'Turbulence') self.AddChild(Combo_2,Combo_2_ch_20,'VL Noise') self.AddChild(Combo_2,Combo_2_ch_21,'Wavy Turbulence') self.AddChild(Combo_2,Combo_2_ch_22,'Cell Voronoi') self.AddChild(Combo_2,Combo_2_ch_23,'Displaced Voronoi') self.AddChild(Combo_2,Combo_2_ch_24,'Sparse Convolution') self.AddChild(Combo_2,Combo_2_ch_25,'Voronoi 1') self.AddChild(Combo_2,Combo_2_ch_26,'Voronoi 2') self.AddChild(Combo_2,Combo_2_ch_27,'Voronoi 3') self.AddChild(Combo_2,Combo_2_ch_28,'Zada') self.AddChild(Combo_2,Combo_2_ch_29,'Fire') self.AddChild(Combo_2,Combo_2_ch_30,'Electric') self.AddChild(Combo_2,Combo_2_ch_31,'Gaseous') self.AddStaticText(0, c4d.BFH_LEFT, 0, 0, "Noise Size:", 0) self.AddEditSlider(UI_Noise2_Size, c4d.BFH_SCALEFIT, 0, 0) self.AddStaticText(0, c4d.BFH_LEFT, 0, 0, "Random Seed:", 0) self.AddEditSlider(UI_Random_Seed2, c4d.BFH_SCALEFIT, 0, 0) self.GroupEnd() self.AddButton(UI_Generate_Mesh, c4d.BFH_LEFT | c4d.BFV_TOP | c4d.BFH_SCALEFIT, 600, 15, "Generate Rock Mesh") return True def InitValues(self) : self.SetLong(UI_Initial_Mesh_Subdivisions, 50, min=0, max=400, step=True) self.SetLong(UI_HyperNURBS_Subdivisions, 1, min=1, max=6, step=True) self.SetLong(UI_Rock_SIZE, 195, min=1, max=1000, step=True) self.SetReal(UI_Displacement1_Height, 227, min=0, max=500, step=1, format=c4d.FORMAT_REAL) self.SetLong(Combo_1,Combo_1_ch_23) self.SetLong(UI_Noise1_Size, 18, min=0, max=40, step=True) self.SetLong(UI_Random_Seed1, 658, min=1, max=1000, step=True) self.SetReal(UI_Formula_x, 1, min=1, max=5, step=0.1, format=c4d.FORMAT_REAL) self.SetReal(UI_Formula_y, 1, min=1, max=5, step=0.1, format=c4d.FORMAT_REAL) self.SetReal(UI_Formula_z, 1, min=1, max=5, step=0.1, format=c4d.FORMAT_REAL) self.SetLong(UI_Displacement2_Height, 5, min=0, max=500, step=True) self.SetLong(Combo_2,Combo_2_ch_9) self.SetLong(UI_Noise2_Size, 2, min=0, max=40, step=True) self.SetLong(UI_Random_Seed2, 660, min=1, max=1000, step=True) return True def Command(self,id,msg) : if (id == UI_Generate_Initial_Rock) : doc = c4d.documents.GetActiveDocument() c4d.CallCommand(12202) # Set standart Camera in Editor Window c4d.CallCommand(12091) # Set Gouraud-Shading in Editor Window c4d.CallCommand(13620) # Set Editor Window to Single View # Create the HyperNURBS h = c4d.BaseObject(c4d.Osds) # Create new HyperNURBS h[c4d.SDSOBJECT_SUBEDITOR_CM] = 2 # Set Editor subdivision to 2 h[c4d.SDSOBJECT_SUBRAY_CM] = self.GetLong(UI_HyperNURBS_Subdivisions) # Set Render subdivisions h.SetName('Hypernurbs') doc.InsertObject(h) # Create the sphere s = c4d.BaseObject(c4d.Osphere) # Create new sphere s[c4d.PRIM_SPHERE_TYPE] = 2 # Set sphere type to Hexaeder s[c4d.PRIM_SPHERE_SUB] = self.GetLong(UI_Initial_Mesh_Subdivisions) # Set sphere segments s[c4d.PRIM_SPHERE_RAD] = self.GetLong(UI_Rock_SIZE) # Set sphere radius s.SetName('Sphere') doc.InsertObject(s) # Create the Displacer deformer 1 c4d.CallCommand(1018685) # Create new displacer deformer d1 = doc.SearchObject('Displacer') d1[c4d.MGDISPLACER_DISPLACEMENT_HEIGHT] = self.GetReal(UI_Displacement1_Height) # Set displacement height d1[c4d.MGDISPLACER_DISPLACEMENTMODE]=0 # Set Displacementmode to Intensity d1[c4d.MGDISPLACER_POLYNORMALMODE]=1 # Set Polynormalmode to Sphere d1.SetName('Displacer1') # Assingn the noise shadet to the displace deformer 1 mat1 = d1 shd1 = c4d.BaseList2D(c4d.Xnoise) shd1[c4d.SLA_NOISE_SEED] = self.GetLong(UI_Random_Seed1) shd1[c4d.SLA_NOISE_NOISE] = 2025 shd1[c4d.SLA_NOISE_OCTAVES] = 1 shd1[c4d.SLA_NOISE_GLOBAL_SCALE] = self.GetLong(UI_Noise1_Size) mat1[c4d.ID_MG_SHADER_SHADER] = shd1 mat1.InsertShader(shd1) mat1.Message(c4d.MSG_UPDATE) # Create the Formula deformer c4d.CallCommand(5146) # Create new Formula deformer f = doc.SearchObject('Formel') f[c4d.ID_BASEOBJECT_VISIBILITY_EDITOR]=1 # Set Formula deformer to invisible f[c4d.FORMULAOBJECT_EFFECT]=0 # Set Effect to Manual fxWert_x = 'x*' + str((self.GetReal(UI_Formula_x))) fxWert_y = 'y*' + str((self.GetReal(UI_Formula_y))) fxWert_z = 'z*' + str((self.GetReal(UI_Formula_z))) f[c4d.FORMULAOBJECT_FX]=fxWert_x f[c4d.FORMULAOBJECT_FY]=fxWert_y f[c4d.FORMULAOBJECT_FZ]=fxWert_z f.SetName('Formula') # Create the Displacer deformer 2 c4d.CallCommand(1018685) # Create new displacer deformer d2 = doc.SearchObject('Displacer') d2[c4d.MGDISPLACER_DISPLACEMENT_HEIGHT] = self.GetLong(UI_Displacement2_Height) # Set displacement height d2.SetName('Displacer2') # Assingn the noise shader to the displace deformer 2 mat2 = d2 shd2 = c4d.BaseList2D(c4d.Xnoise) shd2[c4d.SLA_NOISE_SEED] = self.GetLong(UI_Random_Seed2) shd2[c4d.SLA_NOISE_NOISE] = 2010 shd2[c4d.SLA_NOISE_OCTAVES] = 20 shd2[c4d.SLA_NOISE_GLOBAL_SCALE] = self.GetLong(UI_Noise2_Size) mat2[c4d.ID_MG_SHADER_SHADER] = shd2 mat2.InsertShader(shd2) mat2.Message(c4d.MSG_UPDATE) # Insertions s.InsertUnder(h) d2.InsertUnder(s) f.InsertUnder(s) d1.InsertUnder(s) # Layer c4d.CallCommand(100004738) # Create a new layer c4d.CallCommand(100004748) # Alles aufklappen in der Objektliste c4d.CallCommand(100004766) # Select all Objects c4d.CallCommand(100004736) # Assign all Objects to the layer c4d.CallCommand(12148) # Zoom on Geometry in Editor Window c4d.CallCommand(100004767) # Deselect all ######################### Hide the layer in menu ########################## #doc = c4d.documents.GetActiveDocument() #root = doc.GetLayerObjectRoot()#Gets the layer manager #LayersList = root.GetChildren() #toggled = 0 #for layers in LayersList: # if layers.GetBit(c4d.BIT_ACTIVE) :# if the layer is selected # layer_data = layers.GetLayerData(doc) # layer_data['manager'] = not layer_data['manager'] # layers.SetLayerData(doc,layer_data) # toggled=1 # c4d.EventAdd() ########################################################################## return True if id == UI_Generate_Mesh: doc = c4d.documents.GetActiveDocument() rock = doc.SearchObject('Hypernurbs') rock.SetName('Rock') c4d.CallCommand(12236) # Grundobjekt kovertieren c4d.CallCommand(100004739) # Delete all Layers c4d.EventAdd() return True if id == Combo_1: if (self.GetLong(Combo_1) == Combo_1_ch_0) : shd1[c4d.SLA_NOISE_NOISE] = 2001 elif (self.GetLong(Combo_1) == Combo_1_ch_1) : shd1[c4d.SLA_NOISE_NOISE] = 2002 elif (self.GetLong(Combo_1) == Combo_1_ch_2) : shd1[c4d.SLA_NOISE_NOISE] = 2003 elif (self.GetLong(Combo_1) == Combo_1_ch_3) : shd1[c4d.SLA_NOISE_NOISE] = 2004 elif (self.GetLong(Combo_1) == Combo_1_ch_4) : shd1[c4d.SLA_NOISE_NOISE] = 2005 elif (self.GetLong(Combo_1) == Combo_1_ch_5) : shd1[c4d.SLA_NOISE_NOISE] = 2006 elif (self.GetLong(Combo_1) == Combo_1_ch_6) : shd1[c4d.SLA_NOISE_NOISE] = 2007 elif (self.GetLong(Combo_1) == Combo_1_ch_7) : shd1[c4d.SLA_NOISE_NOISE] = 2008 elif (self.GetLong(Combo_1) == Combo_1_ch_8) : shd[c4d.SLA_NOISE_NOISE] = 2009 elif (self.GetLong(Combo_1) == Combo_1_ch_9) : shd1[c4d.SLA_NOISE_NOISE] = 2010 elif (self.GetLong(Combo_1) == Combo_1_ch_10) : shd1[c4d.SLA_NOISE_NOISE] = 2011 elif (self.GetLong(Combo_1) == Combo_1_ch_11) : shd1[c4d.SLA_NOISE_NOISE] = 2012 elif (self.GetLong(Combo_1) == Combo_1_ch_12) : shd1[c4d.SLA_NOISE_NOISE] = 2013 elif (self.GetLong(Combo_1) == Combo_1_ch_13) : shd1[c4d.SLA_NOISE_NOISE] = 2014 elif (self.GetLong(Combo_1) == Combo_1_ch_14) : shd1[c4d.SLA_NOISE_NOISE] = 2015 elif (self.GetLong(Combo_1) == Combo_1_ch_15) : shd1[c4d.SLA_NOISE_NOISE] = 2016 elif (self.GetLong(Combo_1) == Combo_1_ch_16) : shd1[c4d.SLA_NOISE_NOISE] = 2017 elif (self.GetLong(Combo_1) == Combo_1_ch_17) : shd1[c4d.SLA_NOISE_NOISE] = 2019 elif (self.GetLong(Combo_1) == Combo_1_ch_18) : shd1[c4d.SLA_NOISE_NOISE] = 2020 elif (self.GetLong(Combo_1) == Combo_1_ch_19) : shd1[c4d.SLA_NOISE_NOISE] = 2021 elif (self.GetLong(Combo_1) == Combo_1_ch_20) : shd1[c4d.SLA_NOISE_NOISE] = 2022 elif (self.GetLong(Combo_1) == Combo_1_ch_21) : shd1[c4d.SLA_NOISE_NOISE] = 2023 elif (self.GetLong(Combo_1) == Combo_1_ch_22) : shd1[c4d.SLA_NOISE_NOISE] = 2024 elif (self.GetLong(Combo_1) == Combo_1_ch_23) : shd1[c4d.SLA_NOISE_NOISE] = 2025 elif (self.GetLong(Combo_1) == Combo_1_ch_24) : shd1[c4d.SLA_NOISE_NOISE] = 2026 elif (self.GetLong(Combo_1) == Combo_1_ch_25) : shd1[c4d.SLA_NOISE_NOISE] = 2027 elif (self.GetLong(Combo_1) == Combo_1_ch_26) : shd1[c4d.SLA_NOISE_NOISE] = 2028 elif (self.GetLong(Combo_1) == Combo_1_ch_27) : shd1[c4d.SLA_NOISE_NOISE] = 2029 elif (self.GetLong(Combo_1) == Combo_1_ch_28) : shd1[c4d.SLA_NOISE_NOISE] = 2030 elif (self.GetLong(Combo_1) == Combo_1_ch_29) : shd1[c4d.SLA_NOISE_NOISE] = 2031 elif (self.GetLong(Combo_1) == Combo_1_ch_30) : shd1[c4d.SLA_NOISE_NOISE] = 2032 elif (self.GetLong(Combo_1) == Combo_1_ch_31) : shd1[c4d.SLA_NOISE_NOISE] = 2033 return True if id == Combo_2: if (self.GetLong(Combo_2) == Combo_2_ch_0) : shd2[c4d.SLA_NOISE_NOISE] = 2001 elif (self.GetLong(Combo_2) == Combo_2_ch_1) : shd2[c4d.SLA_NOISE_NOISE] = 2002 elif (self.GetLong(Combo_2) == Combo_2_ch_2) : shd2[c4d.SLA_NOISE_NOISE] = 2003 elif (self.GetLong(Combo_2) == Combo_2_ch_3) : shd2[c4d.SLA_NOISE_NOISE] = 2004 elif (self.GetLong(Combo_2) == Combo_2_ch_4) : shd2[c4d.SLA_NOISE_NOISE] = 2005 elif (self.GetLong(Combo_2) == Combo_2_ch_5) : shd2[c4d.SLA_NOISE_NOISE] = 2006 elif (self.GetLong(Combo_2) == Combo_2_ch_6) : shd2[c4d.SLA_NOISE_NOISE] = 2007 elif (self.GetLong(Combo_2) == Combo_2_ch_7) : shd2[c4d.SLA_NOISE_NOISE] = 2008 elif (self.GetLong(Combo_2) == Combo_2_ch_8) : shd2[c4d.SLA_NOISE_NOISE] = 2009 elif (self.GetLong(Combo_2) == Combo_2_ch_9) : shd2[c4d.SLA_NOISE_NOISE] = 2010 elif (self.GetLong(Combo_2) == Combo_2_ch_10) : shd2[c4d.SLA_NOISE_NOISE] = 2011 elif (self.GetLong(Combo_2) == Combo_2_ch_11) : shd2[c4d.SLA_NOISE_NOISE] = 2012 elif (self.GetLong(Combo_2) == Combo_2_ch_12) : shd2[c4d.SLA_NOISE_NOISE] = 2013 elif (self.GetLong(Combo_2) == Combo_2_ch_13) : shd2[c4d.SLA_NOISE_NOISE] = 2014 elif (self.GetLong(Combo_2) == Combo_2_ch_14) : shd2[c4d.SLA_NOISE_NOISE] = 2015 elif (self.GetLong(Combo_2) == Combo_2_ch_15) : shd2[c4d.SLA_NOISE_NOISE] = 2016 elif (self.GetLong(Combo_2) == Combo_2_ch_16) : shd2[c4d.SLA_NOISE_NOISE] = 2017 elif (self.GetLong(Combo_2) == Combo_2_ch_17) : shd2[c4d.SLA_NOISE_NOISE] = 2019 elif (self.GetLong(Combo_2) == Combo_2_ch_18) : shd2[c4d.SLA_NOISE_NOISE] = 2020 elif (self.GetLong(Combo_2) == Combo_2_ch_19) : shd2[c4d.SLA_NOISE_NOISE] = 2021 elif (self.GetLong(Combo_2) == Combo_2_ch_20) : shd2[c4d.SLA_NOISE_NOISE] = 2022 elif (self.GetLong(Combo_2) == Combo_2_ch_21) : shd2[c4d.SLA_NOISE_NOISE] = 2023 elif (self.GetLong(Combo_2) == Combo_2_ch_22) : shd2[c4d.SLA_NOISE_NOISE] = 2024 elif (self.GetLong(Combo_2) == Combo_2_ch_23) : shd2[c4d.SLA_NOISE_NOISE] = 2025 elif (self.GetLong(Combo_2) == Combo_2_ch_24) : shd2[c4d.SLA_NOISE_NOISE] = 2026 elif (self.GetLong(Combo_1) == Combo_2_ch_25) : shd2[c4d.SLA_NOISE_NOISE] = 2027 elif (self.GetLong(Combo_2) == Combo_2_ch_26) : shd2[c4d.SLA_NOISE_NOISE] = 2028 elif (self.GetLong(Combo_2) == Combo_2_ch_27) : shd2[c4d.SLA_NOISE_NOISE] = 2029 elif (self.GetLong(Combo_2) == Combo_2_ch_28) : shd2[c4d.SLA_NOISE_NOISE] = 2030 elif (self.GetLong(Combo_2) == Combo_2_ch_29) : shd2[c4d.SLA_NOISE_NOISE] = 2031 elif (self.GetLong(Combo_2) == Combo_2_ch_30) : shd2[c4d.SLA_NOISE_NOISE] = 2032 elif (self.GetLong(Combo_2) == Combo_2_ch_31) : shd2[c4d.SLA_NOISE_NOISE] = 2033 return True #h[c4d.SDSOBJECT_SUBRAY_CM] = self.GetReal(UI_HyperNURBS_Subdivisions) #s[c4d.PRIM_SPHERE_SUB] = self.GetReal(UI_Initial_Mesh_Subdivisions) #s[c4d.PRIM_SPHERE_RAD] = self.GetReal(UI_Rock_SIZE) #d1[c4d.MGDISPLACER_DISPLACEMENT_HEIGHT] = self.GetReal(UI_Displacement1_Height) #d2[c4d.MGDISPLACER_DISPLACEMENT_HEIGHT] = self.GetReal(UI_Displacement2_Height) #shd1[c4d.SLA_NOISE_GLOBAL_SCALE] = self.GetReal(UI_Noise1_Size) #shd1[c4d.SLA_NOISE_SEED] = self.GetReal(UI_Random_Seed1) #shd2[c4d.SLA_NOISE_GLOBAL_SCALE] = self.GetReal(UI_Noise2_Size) #shd2[c4d.SLA_NOISE_SEED] = self.GetReal(UI_Random_Seed2) #fxWert_x = (self.GetReal(UI_Formula_x)) #fxWert_y = (self.GetReal(UI_Formula_y)) #fxWert_z = (self.GetReal(UI_Formula_z)) #f[c4d.FORMULAOBJECT_FX] = 'x*'fxWert_x #f[c4d.FORMULAOBJECT_FY] = 'y*'fxWert_x #f[c4d.FORMULAOBJECT_FZ] = 'z*'fxWert_x return True class ProceduralRockGenerator(c4d.plugins.CommandData) : dialog = None def Init(self, op) : return True def Message(self, type, data) : return True def Execute(self, doc) : if self.dialog is None: self.dialog = ProceduralRockGeneratorDialog() return self.dialog.Open(dlgtype=c4d.DLG_TYPE_ASYNC, pluginid=PLUGIN_ID, defaultw=400, defaulth=160) if __name__ == '__main__': bmp = c4d.bitmaps.BaseBitmap() dir, file = os.path.split(__file__) fn = os.path.join(dir, "res", "Icon.tif") bmp.InitWith(fn) print "Procedural Rock Generator loaded." result = plugins.RegisterCommandPlugin(PLUGIN_ID, "ProceduralRockGenerator", 0, bmp, "ProceduralRockGenerator", ProceduralRockGenerator())
-
On 08/02/2013 at 03:29, xxxxxxxx wrote:
Hi 16fingers,
think about it twice. When you want the objects to change when a slider has been modified, this
needs to be reflected in your code. It does not magically happen, you have to develop it, write code
so that it does what you want.You're probably better off writing an ObjectData plugin when you want the changes to be reflected
while dragging (which is implicit since you will automatically generate new objects whenever a
property changes in the AM).-Niklas
-
On 08/02/2013 at 08:50, xxxxxxxx wrote:
The code in your command() method is being used to grab the slider values and use them to create your object. Not to change it after it's been created.
Think of it like a duck laying an egg.!
Smile
[URL-REMOVED]-ScottA
[URL-REMOVED] @maxon: This section contained a non-resolving link which has been removed.