Fluid Simulation Setup tool
Wir werden ein Tool veröffentlichen, das automatisch das Setup der Houdini Fluid Simulation Base erstellt.
Sie können Flip oder Pyro wählen.
Bitte ändern Sie es nach Ihren Wünschen.
Houdini Artikel
** Control_Dynamics Houdini 01
** usw. Ich fand das Setup mühsam, also benutze es bitte zum gemeinsamen Lernen.
Klicken Sie hier für Control_Dynamics Houdini 01
http://qiita.com/ts_bros/items/c8c9ace7863e8b93df4c
Fluid Simulation Setup
[Python]
#Function Select Fluid Base
#Create Dialog Function
Dialog = hou.ui.readMultiInput(message =" -User Guide-\n\
=================\n :Fluid_Simulation_Setup\n =================\n\
-Compute Setup Simulation-\n\n :Flip = Flip Based Setup\n :Pyro = Pyro Based Setup\
\n\n\
FLIP = BlueColor\n Pyro = RedColor\n =================\n",input_labels = [" -DopName-","\
-GridSize-"],help ="\
-Main Detail-\n :Simulation Node\n",title = "\
Houdini_FluidSimulation_Setup_Tool",initial_contents =["\
Sim","1"],buttons=["Flip","Pyro","Cancel"]);
#Create Base Node Function
obj = hou.node("/obj");
Namespace = Dialog[1];
GridScale = Namespace[1];
print Namespace
#Get Section Function
#Dialog return
#Flip =0,Pyro = 1,Cacnel = 2, -Dopname- is list[1];
#Convert Namelist to list
typename = Namespace[0];
#======Fase for Click Flip======#
if Dialog[0]==0:
Flipnode = obj.createNode("geo",run_init_scripts=0);
Flipnode.setName(typename);
#Flip SetNode Color
FlipColor = hou.Color((0.0,0.6,1.0));
Flipnode.setColor(FlipColor);
#Best Position
Flipnode.moveToGoodPosition();
#Fase OBJ Node End
#get Sop Node
Fpath = Flipnode.path();
Fnode = hou.node(Fpath);
#++ ++#
#function For Sop
#Create BoundingSource for Box Sop
Boundsop = Fnode.createNode("box","BoundArea");
Boundsop.setPosition([-2.1,0.9]);
#Set Color
boundcol = hou.Color((1.0,0.8,0.0));
Boundsop.setColor(boundcol);
#++ ++#
#Edit Def Parameter
#Edit Def Parameter
Boundsop.setParms({"sizex":GridScale,"sizey":GridScale,"sizez":GridScale});
Boundsop.setParmExpressions({"ty":"ch('sizey')/2"});
#Export Parms Variables
boundsizex = Boundsop.parm("sizex");
boundsizey = Boundsop.parm("sizey");
boundsizez = Boundsop.parm("sizez");
boundtrx = Boundsop.parm("tx");
boundtry = Boundsop.parm("ty");
boundtrz = Boundsop.parm("tz");
#Create Dop network
Fdop = Fnode.createNode("dopnet");
#Set Name
Fdop.setName(typename+'_network');
#===============================================#
#++ ++#
#Create into Dop
#Create Solver Asset
#Get Simulation Dop nodepath
Doppath = Fdop.path();
dpnode = hou.node(Doppath);
#++ ++#
#Create dopnode
#Delete DefNode
out = '/output';
outpath = Doppath+out;
outnode =hou.node(outpath);
outnode.destroy();
#Create Flip Object node
Flipobj = dpnode.createNode("flipobject","FLIP");
fppath = Flipobj.path();
#Edtit Parm
Flipobj.setParms({"closedends":1});
Flipobj.setParms({"visprim":3});
#++ ++#
#Edit Flipobj Parm
FPathparm = Flipobj.parm("soppath");
FPathparm.set("");
#create FlipSolver Node
Flipsolver = Flipobj.createOutputNode("flipsolver",'Flip_Solver');
Flipsolver.setPosition([1,-1.5]);
#++ ++#
#Edit FliSolver Parm
Flipsolver.setParms({"limit_sizex":boundsizex,"limit_sizey":boundsizey,"limit_sizez":boundsizez});
Flipsolver.setParms({"limit_tx":boundtrx,"limit_ty":boundtry,"limit_tz":boundtrz});
Flipsolver.setParms({"vislimitcolorr":1.0,"vislimitcolorg":0.0,"vislimitcolorb":0.0});
#Create Gravity dop
Gravitydop = Flipsolver.createOutputNode("gravity","Gravity");
Gravitydop.setPosition([1.4,-3.0]);
#create null dop
dpnull = Gravitydop.createOutputNode("null","OUT");
dplColor = hou.Color((1.0,1.0,0.4));
dpnull.setPosition([1.4,-4.4]);
dpnull.setColor(dplColor);
dpnull.setDisplayFlag(1);
#===============================================#
#Create Dop Importsop
Dpio = Fnode.createNode("dopimportfield","Sim_Data");
Dpio.setPosition([-1.9,-1.4]);
#++ ++#
#Edit Def Parameter
#Get Simulation Dop nodepath
Doppath = Fdop.path();
Dpiopathnet = Dpio.parm('doppath');
Dpiopathnet.set(Doppath);
#Get Simulation Dop node
getdpobj = fppath;
Dpionode = Dpio.parm("dopnode");
Dpionode.set( getdpobj);
#Create Filecache Node
cachenode = Dpio.createOutputNode("filecache");
cachenode.setName(typename+"_cahce");
#Create Nullsop
nullsop = cachenode.createOutputNode("null","Sim_OUT");
nullsop.setPosition([-1.5,-3.5]);
nullCol = hou.Color((1.0,0.4,0.4));
nullsop.setColor(nullCol);
#Set Display Flag
nullsop.setDisplayFlag(1);
Boundsop.setRenderFlag(0);
Boundsop.setTemplateFlag(1);
#========= Fase for Click Flip EnD =========#
#======Fase for Click Pyro======#
if Dialog[0]==1:
Pyronode = obj.createNode("geo",run_init_scripts=0);
Pyronode.setName(typename);
#Flip SetNode Color
PyroColor = hou.Color((1.0,0.4,0.4));
Pyronode.setColor(PyroColor);
#Best Position
Pyronode.moveToGoodPosition();
#Fase OBJ Node End
#get Sop Node
Ppath = Pyronode.path();
Pnode = hou.node(Ppath);
#++ ++#
#function For Sop
#Create BoundingSource for Box Sop
Boundsop = Pnode.createNode("box","BoundArea");
Boundsop.setPosition([-2.1,0.9]);
#Set Color
boundcol = hou.Color((1.0,0.8,0.0));
Boundsop.setColor(boundcol);
#++ ++#
#Edit Def Parameter
Boundsop.setParms({"sizex":GridScale,"sizey":GridScale,"sizez":GridScale});
Boundsop.setParmExpressions({"ty":"ch('sizey')/2"});
#Export Parms Variables
boundsizex = Boundsop.parm("sizex");
boundsizey = Boundsop.parm("sizey");
boundsizez = Boundsop.parm("sizez");
boundtrx = Boundsop.parm("tx");
boundtry = Boundsop.parm("ty");
boundtrz = Boundsop.parm("tz");
#Create Dop network
Pdop = Pnode.createNode("dopnet");
#Set Name
Pdop.setName(typename+'_network');
#===============================================#
#++ ++#
#Create into Dop
#Create Solver Asset
#Get Simulation Dop nodepath
Doppath = Pdop.path();
dpnode = hou.node(Doppath);
#++ ++#
#Create dopnode
#Delete DefNode
out = '/output';
outpath = Doppath+out;
outnode =hou.node(outpath);
outnode.destroy();
#Create Pyro Object node
Pyroobj = dpnode.createNode("smokeobject","Pyro");
Pppath = Pyroobj.path();
#++ ++#
#Edit Parameter
#Size,Center,ClosedBound
Pyroobj.setParms({"sizex":boundsizex,"sizey":boundsizey,"sizez":boundsizez});
Pyroobj.setParms({"tx":boundtrx,"ty":boundtry,"tz":boundtrz});
Pyroobj.setParms({"closedends":1});
#Visualizer volume
Pyroobj.setParms({"multifield_densityfield":'density'});
Pyroobj.setParms({"multifield_showguide":1});
Pyroobj.setParms({"density_showguide":0});
#create PyroSolver Node
Pyrosolver = Pyroobj.createOutputNode("pyrosolver",'Pyro_Solver');
Pyrosolver.setPosition([2,-1.9]);
#create Resize Node
dpresize = dpnode.createNode("gasresizefluiddynamic","Resize_Grid");
dpresize.setPosition([2.0,0.7]);
Pyrosolver.setInput(1,dpresize);
#create null dop
dpnull = Pyrosolver.createOutputNode("null","OUT");
dplColor = hou.Color((1.0,1.0,0.4));
dpnull.setPosition([2.0,-3.0]);
dpnull.setColor(dplColor);
dpnull.setDisplayFlag(1);
#===============================================#
#Create Dop Importsop
Dpio = Pnode.createNode("dopimportfield","Sim_Data");
Dpio.setPosition([-1.9,-1.4]);
#++ ++#
#Edit Def Parameter
#Get Simulation Dop nodepath
Doppath = Pdop.path();
Dpiopathnet = Dpio.parm('doppath');
Dpiopathnet.set(Doppath);
#Get Simulation Dop node
getdpobj = Pppath;
Dpionode = Dpio.parm("dopnode");
Dpionode.set(getdpobj);
#Create Filecache Node
cachenode = Dpio.createOutputNode("filecache");
cachenode.setName(typename+"_cahce");
#Create Nullsop
nullsop = cachenode.createOutputNode("null","Sim_OUT");
nullsop.setPosition([-1.5,-3.5]);
nullCol = hou.Color((1.0,0.4,0.4));
nullsop.setColor(nullCol);
#Set Display Flag
nullsop.setDisplayFlag(1);
Boundsop.setRenderFlag(0);
Boundsop.setTemplateFlag(1);
#========= Fase for Click Pyro EnD =========#
if Dialog[0]==2:
None;
Ich benutze: Popup-Fenster.
Recommended Posts