This is an old question of mine, for which I have never found an decent answer. Its like in whole Houdini community, noone knows how to make particle flow conform to a spline inside POPNET. So that a volumetric (i.e. tube shaped) stream conforms to a spline. How is this done?
I have tried the following approach. First I created a straight flow on POP.
Then fed the POP through POP_SOP into Geometry. Then deformed the flow using Lattice_SOP with lattice target being conformed to desiredf curve shape. It deforms the POP_SOP, except that motion vector of the particle remains unchanged. The streak particlel's orinentation does not change but remain pointed forward insted of along the spline. THat would work for metaball stream, but not for particle instancing.
Thank you.
DaveR
How to make particles flow along a spline? Old question.
45759 33 4- Dave_ah
- Member
- 436 posts
- Joined: July 2005
- Offline
- Stremik
- Member
- 170 posts
- Joined: July 2005
- Offline
- Dave_ah
- Member
- 436 posts
- Joined: July 2005
- Offline
- Dave_ah
- Member
- 436 posts
- Joined: July 2005
- Offline
In POPs there is Position POP which I would set with Path option. But, all particles from previopus POP in the net, would be collapsed into a single point. Now my questiuon, which NOONE has ever answered, is how to to make the stream look like its flowing along the curve.
To illustrate do the following.
Create path geo object.
Create POP net.
In pop net create Location POP.
Append Position_POP with Path option and choose path curve.
Now playback. All the particles, regardless of position, or time of creation at sourcr is place on same place along the curve making it look like a single point moving along path. I never understood or found documentation (SESI's bad!) on how to make a curve flow effect! And no one seems to know!
DR
To illustrate do the following.
Create path geo object.
Create POP net.
In pop net create Location POP.
Append Position_POP with Path option and choose path curve.
Now playback. All the particles, regardless of position, or time of creation at sourcr is place on same place along the curve making it look like a single point moving along path. I never understood or found documentation (SESI's bad!) on how to make a curve flow effect! And no one seems to know!
DR
- michael
- Member
- 66 posts
- Joined: July 2005
- Offline
- Dave_ah
- Member
- 436 posts
- Joined: July 2005
- Offline
Thats not it either. I don't want the particles to slide on the surface of the sweep surface. Besides I am in 5.5 which does not have slide as option in Collision SOP. I want the particles to be INSIDE the sweep surface following the path of the curve with the volumetric stream having the radius +- of the swept surface. If the sweep surface is a bend straw, and particle stream is the liquid being sucked through . Thats what I am looking to get. Yet despite everything, I cannot find away to do it. AND NOONE ELSE SEEMS TO KNOW EITHER. The effect is same as Curve_Flow effect in MAYA.
Why is this so hard?
DR
Why is this so hard?
DR
- EigenAlex
- Member
- 639 posts
- Joined: July 2005
- Offline
Hi David,
What you might want to do may be to use Attractor POP and Point SOP (for Attractor attributes) to make the particle flow along a curve. This method is rather tricky, as it requires quite a bit of balancing act so that the particles won't overshoot beyond the influence radius and fly off into space. This method will probably be difficult if it's a high speed flow.
If, however, your particle animation doesn't show the particles flow beyond the end point of the tube or something, an easier and more controllable method is to to get the particles to creep (Creep SOP or POP) on the tube with random offsets based on the particle ID.
You might want to try the combination of those above. If you're up for it, you can write this out in to VEX POP or something.
Unfortunately, there isn't a one button solutions of this in Houdini as in Maya. At least not that I know of.
Hope that helped.
-Alex
PS: Are you in Asia right now? Or might have been my fuzzy memory these days…
What you might want to do may be to use Attractor POP and Point SOP (for Attractor attributes) to make the particle flow along a curve. This method is rather tricky, as it requires quite a bit of balancing act so that the particles won't overshoot beyond the influence radius and fly off into space. This method will probably be difficult if it's a high speed flow.
If, however, your particle animation doesn't show the particles flow beyond the end point of the tube or something, an easier and more controllable method is to to get the particles to creep (Creep SOP or POP) on the tube with random offsets based on the particle ID.
You might want to try the combination of those above. If you're up for it, you can write this out in to VEX POP or something.
Unfortunately, there isn't a one button solutions of this in Houdini as in Maya. At least not that I know of.
Hope that helped.
-Alex
PS: Are you in Asia right now? Or might have been my fuzzy memory these days…
- keyframe
- Member
- 1533 posts
- Joined: July 2005
- Offline
Here's one that works for me.
Try sourcing the following cmd file:
————————————————————————-
# Automatically generated script: Friday February 20, 12:30
\set noalias = 1
set saved_path = `execute(“oppwf”)`
opcf /obj
# Node geo1
opadd -n geo geo1
oplocate -x 0.970588 -y 2.92353 geo1
opparm geo1 stdswitcher ( 0 0 0 0 0 ) keeppos ( off ) pre_xform ( clean ) xOrd ( srt ) rOrd ( xyz ) t ( 0 0 0 ) r ( 0 0 0 ) s ( 1 1 1 ) p ( 0 0 0 ) scale ( 1 ) lookatpath ( “” ) lookup ( on ) pathobjpath ( “” ) roll ( 0 ) pos ( 0 ) uparmtype ( arc ) pathorient ( 1 ) up ( 0 1 0 ) bank ( 1 ) shadespace ( “” ) dispspace ( “” ) shop_surfacepath ( “” ) shop_photonpath ( “” ) shop_displacepath ( “” ) lightmask ( * ) reflectmask ( * ) smooth ( on ) nobackface ( off ) autogen ( off ) reflmap ( ‘/tmp/$OS.rat’ ) reflres ( 128 ) shading_switcher ( 0 0 0 ) ri_color ( off ) ri_Cs ( 1 1 1 ) ri_Os ( 1 1 1 ) ri_Xmit ( opaque ) ri_Photon ( matte ) rishader ( ‘“plastic”’ ) ridisplace ( “” ) riinterior ( “” ) shop_surfaceshadowpath ( “” ) shop_fogpath ( “” ) shop_backgroundpath ( “” ) shop_photonvolumepath ( “” ) shop_contourpath ( “” ) soundmat ( “” ) soundchop ( “” ) genshader ( “” ) gendisplace ( “” ) geninterior ( “” ) material ( “” ) instancepath ( “” ) ptinstance ( off ) partinstancepath ( “” ) detail ( off ) detail_file ( “” ) detail_autoarchive ( off ) detail_mantraproc ( “” ) detail_ribproc ( “” ) detail_blur ( off ) detail_min ( -1 -1 -1 ) detail_max ( 1 1 1 ) shop_geometrypath ( “” ) blur ( inherit ) tdisplay ( off ) display ( 1 ) tmatte ( off ) matte ( 0 ) tphantom ( off ) phantom ( 0 ) trbounce ( off ) rbounce ( 1 ) ttbounce ( off ) tbounce ( 10 ) trclip ( off ) rclip ( 0.001 ) tdbound ( off ) dbound ( 0 ) tshadequality ( off ) shadequality ( 1 ) lod ( 1 ) causticmode ( 3 ) gillummode ( 3 ) preinclude ( “” ) postinclude ( “” ) shadowquality ( 1 ) reflectquality ( 1 ) rest ( “” ) active ( 1 ) mass ( 1 ) bounce ( 0.5 ) fdynamic ( 0.1 ) fstatic ( 0.2 ) com ( 0 0 0 ) velocity ( 0 0 0 ) angvelaxis ( 0 0 1 ) angvelangle ( 0 ) popgeo ( _render_SOP_ ) cglod ( 1 ) itensor ( points ) itsamples ( 100 ) geochanges ( off ) use_dcolor ( off ) dcolor ( 1 1 1 ) picking ( on ) pickscript ( “” )
chlock geo1 -*
opcolor -c 0.7 0.7 0.7 geo1
opset -d off -r off -h off -f off -y off -t off -l off -s off -u off -c off -C off -p off -e on -b off -S on -x off geo1
opcf geo1
# Node curve2
opadd -n curve curve2
oplocate -x 0 -y 0 curve2
opparm curve2 type ( poly ) method ( cv ) coords ( “” ) stdswitcher ( 0 0 ) close ( off ) normalize ( off ) order ( 4 ) param ( uniform ) tolerance ( 0.01 ) smooth ( 0 ) csharp ( off ) keepgeo ( off )
chlock curve2 -*
opcolor -c 0.7 0.7 0.7 curve2
opset -d off -r off -h off -f off -y off -t off -l off -s off -u off -c off -C off -p off -e on -b off curve2
# Node fit2
opadd -n fit fit2
oplocate -x 0 -y 0 fit2
opparm fit2 group ( “” ) stdswitcher ( 0 0 0 ) method ( approx ) type ( nurbs ) surftype ( quads ) orderu ( 4 ) orderv ( 4 ) tol ( 0.01 ) smooth ( 0 ) multipleu ( off ) multiplev ( off ) scope ( global ) dataparmu ( chrdlen ) dataparmv ( chrdlen ) closeu ( ifprimwu ) closev ( ifprimwv ) corners ( off )
chlock fit2 -*
opcolor -c 0.7 0.7 0.7 fit2
opset -d off -r off -h off -f off -y off -t off -l off -s off -u off -c off -C off -p off -e on -b off fit2
# Node popnet2
opadd -n popnet popnet2
oplocate -x 0 -y 0 popnet2
opparm popnet2 stdswitcher ( 0 0 0 ) timestart ( 0 ) timepreroll ( 0 ) initialstate ( “” ) oversample ( 1 ) maxparticles ( 0 ) rmunused ( on ) restthreshold ( 1e-04 ) contacttol ( 0.01 ) maxdivisions ( 4 ) constrainttime ( 0.5 ) solvertype ( euler ) path1 ( “” ) path2 ( “” ) path3 ( “” ) path4 ( “” )
chlock popnet2 -*
opcolor -c 0.7 0.7 0.7 popnet2
opset -d off -r off -h off -f off -y off -t off -l off -s off -u off -c off -C off -p off -e on -b off popnet2
# Node lattice2
opadd -n lattice lattice2
oplocate -x 0 -y 0 lattice2
opparm lattice2 group ( “” ) stdswitcher ( 0 0 ) divs ( 3 3 3 ) restgroup ( “” ) kernel ( wyvill ) radius ( 1 )
chlock lattice2 -*
opcolor -c 0.7 0.7 0.7 lattice2
opset -d off -r off -h off -f off -y off -t off -l off -s off -u off -c off -C off -p off -e on -b off lattice2
# Node add3
opadd -n add add3
oplocate -x 0 -y 0 add3
opparm add3 stdswitcher ( 0 0 ) keep ( off ) points ( 1 ) remove ( off ) switcher ( 0 0 ) prims ( 1 ) group ( “” ) add ( all ) inc ( 2 ) closedall ( off ) usept0 ( off ) pt0 ( 0 0 0 ) weight0 ( 1 ) prim0 ( “” ) closed0 ( off )
chlock add3 -*
opcolor -c 0.7 0.7 0.7 add3
opset -d off -r off -h off -f off -y off -t off -l off -s off -u off -c off -C off -p off -e on -b off add3
# Node copy2
opadd -n copy copy2
oplocate -x 0 -y 0 copy2
opparm copy2 sourceGrp ( “” ) templateGrp ( “” ) stdswitcher ( 0 0 ) ncy ( 1 ) nml ( on ) cum ( on ) xOrd ( srt ) rOrd ( xyz ) t ( 0 0 0 ) r ( 0 0 0 ) s ( 1 1 1 ) p ( 0 0 0 ) scale ( 1 ) vlength ( on ) newg ( off ) copyg ( ‘copyGroup$CY’ ) stamp ( off ) param1 ( “” ) val1 ( 0 ) param2 ( “” ) val2 ( 0 ) param3 ( “” ) val3 ( 0 ) param4 ( “” ) val4 ( 0 ) param5 ( “” ) val5 ( 0 ) param6 ( “” ) val6 ( 0 ) param7 ( “” ) val7 ( 0 ) param8 ( “” ) val8 ( 0 ) param9 ( “” ) val9 ( 0 ) param10 ( “” ) val10 ( 0 ) param11 ( “” ) val11 ( 0 ) param12 ( “” ) val12 ( 0 ) param13 ( “” ) val13 ( 0 ) param14 ( “” ) val14 ( 0 ) param15 ( “” ) val15 ( 0 ) param16 ( “” ) val16 ( 0 ) param17 ( “” ) val17 ( 0 ) param18 ( “” ) val18 ( 0 ) param19 ( “” ) val19 ( 0 ) param20 ( “” ) val20 ( 0 ) param21 ( “” ) val21 ( 0 ) param22 ( “” ) val22 ( 0 ) param23 ( “” ) val23 ( 0 ) param24 ( “” ) val24 ( 0 ) param25 ( “” ) val25 ( 0 ) param26 ( “” ) val26 ( 0 ) param27 ( “” ) val27 ( 0 ) param28 ( “” ) val28 ( 0 ) param29 ( “” ) val29 ( 0 ) param30 ( “” ) val30 ( 0 ) param31 ( “” ) val31 ( 0 ) param32 ( “” ) val32 ( 0 ) param33 ( “” ) val33 ( 0 ) param34 ( “” ) val34 ( 0 ) param35 ( “” ) val35 ( 0 ) param36 ( “” ) val36 ( 0 ) param37 ( “” ) val37 ( 0 ) param38 ( “” ) val38 ( 0 ) param39 ( “” ) val39 ( 0 ) param40 ( “” ) val40 ( 0 ) param41 ( “” ) val41 ( 0 ) param42 ( “” ) val42 ( 0 ) param43 ( “” ) val43 ( 0 ) param44 ( “” ) val44 ( 0 ) param45 ( “” ) val45 ( 0 ) param46 ( “” ) val46 ( 0 ) param47 ( “” ) val47 ( 0 ) param48 ( “” ) val48 ( 0 ) param49 ( “” ) val49 ( 0 ) param50 ( “” ) val50 ( 0 ) doattr ( off ) setpt ( * ) setprim ( “” ) setvtx ( “” ) mulpt ( “” ) mulprim ( “” ) mulvtx ( “” ) addpt ( “” ) addprim ( “” ) addvtx ( “” ) subpt ( “” ) subprim ( “” ) subvtx ( “” )
chlock copy2 -*
opcolor -c 0.7 0.7 0.7 copy2
opset -d off -r off -h off -f off -y off -t off -l off -s off -u off -c off -C off -p off -e on -b off copy2
# Node add4
opadd -n add add4
oplocate -x 0 -y 0 add4
opparm add4 stdswitcher ( 0 0 ) keep ( off ) points ( 1 ) remove ( off ) switcher ( 0 0 ) prims ( 1 ) group ( “” ) add ( all ) inc ( 2 ) closedall ( off ) usept0 ( off ) pt0 ( 0 0 0 ) weight0 ( 1 ) prim0 ( “” ) closed0 ( off )
chlock add4 -*
opcolor -c 0.7 0.7 0.7 add4
opset -d off -r off -h off -f off -y off -t off -l off -s off -u off -c off -C off -p off -e on -b off add4
# Node convert4
opadd -n convert convert4
oplocate -x 0 -y 0 convert4
opparm convert4 group ( “” ) fromtype ( all ) totype ( poly ) surftype ( quads ) stdswitcher ( 0 0 ) lodu ( 0.5 ) lodv ( 0.5 ) lodtrim ( 1 ) divu ( 2 ) divv ( 2 ) divtrim ( 1 ) orderu ( 4 ) orderv ( 4 ) pastecoord ( cfeature ) pasteattrib ( afeature ) new ( off ) interphull ( off )
chlock convert4 -*
opcolor -c 0.7 0.7 0.7 convert4
opset -d off -r off -h off -f off -y off -t off -l off -s off -u off -c off -C off -p off -e on -b off convert4
# Node convert5
opadd -n convert convert5
oplocate -x 0 -y 0 convert5
opparm convert5 group ( “” ) fromtype ( all ) totype ( poly ) surftype ( quads ) stdswitcher ( 0 0 ) lodu ( 0.5 ) lodv ( 0.5 ) lodtrim ( 1 ) divu ( 2 ) divv ( 2 ) divtrim ( 1 ) orderu ( 4 ) orderv ( 4 ) pastecoord ( cfeature ) pasteattrib ( afeature ) new ( off ) interphull ( off )
chlock convert5 -*
opcolor -c 0.7 0.7 0.7 convert5
opset -d off -r off -h off -f off -y off -t off -l off -s off -u off -c off -C off -p off -e on -b off convert5
# Node convert6
opadd -n convert convert6
oplocate -x 0 -y 0 convert6
opparm convert6 group ( “” ) fromtype ( all ) totype ( poly ) surftype ( quads ) stdswitcher ( 0 0 ) lodu ( 0.5 ) lodv ( 0.5 ) lodtrim ( 1 ) divu ( 2 ) divv ( 2 ) divtrim ( 1 ) orderu ( 4 ) orderv ( 4 ) pastecoord ( cfeature ) pasteattrib ( afeature ) new ( off ) interphull ( off )
chlock convert6 -*
opcolor -c 0.7 0.7 0.7 convert6
opset -d off -r off -h off -f off -y off -t off -l off -s off -u off -c off -C off -p off -e on -b off convert6
# Node grid2
opadd -n grid grid2
oplocate -x 0 -y 0 grid2
opparm grid2 type ( poly ) surftype ( quads ) orient ( zx ) size ( 1 1 ) t ( 0 0 0 ) rows ( 10 ) cols ( 10 ) orderu ( 4 ) orderv ( 4 ) interpu ( on ) interpv ( on )
chlock grid2 -*
opcolor -c 0.7 0.7 0.7 grid2
opset -d off -r off -h off -f off -y off -t off -l off -s off -u off -c off -C off -p off -e on -b off grid2
# Node curve1
opadd -n curve curve1
oplocate -x -6.64725 -y 6.15666 curve1
opparm curve1 type ( poly ) method ( cv ) coords ( ‘1.04145,0.681164,0 0.636128,0.0919477,0 -0.546057,-0.594846,0 -1.09399,0.189525,0 -0.943872,1.15779,2.1684e-19 0.328385,1.17656,0 0.429715,0.602352,0 -0.140736,-0.061924,0 -0.546057,0.0356532,0 -0.594846,0.699929,0 -0.219549,0.756223,0 -0.234561,0.470998,0 ’ ) stdswitcher ( 0 0 ) close ( off ) normalize ( off ) order ( 4 ) param ( uniform ) tolerance ( 0.01 ) smooth ( 0 ) csharp ( off ) keepgeo ( off )
chlock curve1 -*
opcolor -c 0.7 0.7 0.7 curve1
opset -d off -r off -h off -f off -y off -t off -l off -s off -u off -c off -C off -p off -e on -b off curve1
# Node fit1
opadd -n fit fit1
oplocate -x -6.60019 -y 4.9449 fit1
opparm fit1 group ( “” ) stdswitcher ( 1 1 1 ) method ( approx ) type ( nurbs ) surftype ( quads ) orderu ( 4 ) orderv ( 4 ) tol ( 0.01 ) smooth ( 0.367 ) multipleu ( off ) multiplev ( off ) scope ( global ) dataparmu ( chrdlen ) dataparmv ( chrdlen ) closeu ( ifprimwu ) closev ( ifprimwv ) corners ( off )
chlock fit1 -*
opcolor -c 0.7 0.7 0.7 fit1
opset -d off -r off -h off -f off -y off -t off -l off -s off -u off -c off -C off -p off -e on -b off fit1
# Node popnet1
opadd -n popnet popnet1
oplocate -x -8.76918 -y 5.74568 popnet1
opparm popnet1 stdswitcher ( 0 0 0 ) timestart ( 0 ) timepreroll ( 0 ) initialstate ( “” ) oversample ( 1 ) maxparticles ( 0 ) rmunused ( on ) restthreshold ( 1e-04 ) contacttol ( 0.01 ) maxdivisions ( 4 ) constrainttime ( 0.5 ) solvertype ( euler ) path1 ( “” ) path2 ( “” ) path3 ( “” ) path4 ( “” )
chlock popnet1 -*
opcolor -c 0.7 0.7 0.7 popnet1
opset -d off -r off -h off -f off -y off -t off -l off -s off -u off -c off -C off -p off -e on -b off popnet1
opcf popnet1
# Node source1
opadd -n source source1
oplocate -x 2.07059 -y 2.89412 source1
opparm source1 stdswitcher ( 0 0 0 0 ) emittype ( surfacerandom ) usecontextgeo ( none ) soppath ( /obj/geo1/grid1 ) source ( “” ) ignorexform ( off ) distributionattrib ( area ) threshold ( 1 ) densitymin ( 0 ) usedensity ( off ) impulseactivate ( 1 ) impulserate ( 0 ) constantactivate ( 1 ) constantrate ( 100 ) prob ( 1 1 ) group ( “” ) preservegroup ( off ) life ( 100 ) lifevar ( 0 ) accuratebirths ( off ) attrib ( * ) createlocalvar ( off ) initvel ( set ) inheritvel ( 1 ) vel ( 0 2 0 ) var ( 0 0 0 ) doellipse ( on ) doid ( on ) dogen ( off ) doorigin ( off ) originuse ( indexgeo ) originindex ( 0 ) dospeed ( off )
chlock source1 -*
opcolor -c 0.7 0.7 0.7 source1
opset -d on -r on -h off -f off -y off -t on -l off -s off -u off -c off -C on -p on -e on -b off source1
# Node source2
opadd -n source source2
oplocate -x 0 -y 0 source2
opparm source2 stdswitcher ( 0 0 0 0 ) emittype ( point ) usecontextgeo ( none ) soppath ( “” ) source ( “” ) ignorexform ( off ) distributionattrib ( area ) threshold ( 1 ) densitymin ( 0 ) usedensity ( off ) impulseactivate ( 1 ) impulserate ( 0 ) constantactivate ( 1 ) constantrate ( 100 ) prob ( 1 1 ) group ( “” ) preservegroup ( off ) life ( 100 ) lifevar ( 0 ) accuratebirths ( off ) attrib ( * ) createlocalvar ( off ) initvel ( use )
————————————————————————-
Cheers,
G
Try sourcing the following cmd file:
————————————————————————-
# Automatically generated script: Friday February 20, 12:30
\set noalias = 1
set saved_path = `execute(“oppwf”)`
opcf /obj
# Node geo1
opadd -n geo geo1
oplocate -x 0.970588 -y 2.92353 geo1
opparm geo1 stdswitcher ( 0 0 0 0 0 ) keeppos ( off ) pre_xform ( clean ) xOrd ( srt ) rOrd ( xyz ) t ( 0 0 0 ) r ( 0 0 0 ) s ( 1 1 1 ) p ( 0 0 0 ) scale ( 1 ) lookatpath ( “” ) lookup ( on ) pathobjpath ( “” ) roll ( 0 ) pos ( 0 ) uparmtype ( arc ) pathorient ( 1 ) up ( 0 1 0 ) bank ( 1 ) shadespace ( “” ) dispspace ( “” ) shop_surfacepath ( “” ) shop_photonpath ( “” ) shop_displacepath ( “” ) lightmask ( * ) reflectmask ( * ) smooth ( on ) nobackface ( off ) autogen ( off ) reflmap ( ‘/tmp/$OS.rat’ ) reflres ( 128 ) shading_switcher ( 0 0 0 ) ri_color ( off ) ri_Cs ( 1 1 1 ) ri_Os ( 1 1 1 ) ri_Xmit ( opaque ) ri_Photon ( matte ) rishader ( ‘“plastic”’ ) ridisplace ( “” ) riinterior ( “” ) shop_surfaceshadowpath ( “” ) shop_fogpath ( “” ) shop_backgroundpath ( “” ) shop_photonvolumepath ( “” ) shop_contourpath ( “” ) soundmat ( “” ) soundchop ( “” ) genshader ( “” ) gendisplace ( “” ) geninterior ( “” ) material ( “” ) instancepath ( “” ) ptinstance ( off ) partinstancepath ( “” ) detail ( off ) detail_file ( “” ) detail_autoarchive ( off ) detail_mantraproc ( “” ) detail_ribproc ( “” ) detail_blur ( off ) detail_min ( -1 -1 -1 ) detail_max ( 1 1 1 ) shop_geometrypath ( “” ) blur ( inherit ) tdisplay ( off ) display ( 1 ) tmatte ( off ) matte ( 0 ) tphantom ( off ) phantom ( 0 ) trbounce ( off ) rbounce ( 1 ) ttbounce ( off ) tbounce ( 10 ) trclip ( off ) rclip ( 0.001 ) tdbound ( off ) dbound ( 0 ) tshadequality ( off ) shadequality ( 1 ) lod ( 1 ) causticmode ( 3 ) gillummode ( 3 ) preinclude ( “” ) postinclude ( “” ) shadowquality ( 1 ) reflectquality ( 1 ) rest ( “” ) active ( 1 ) mass ( 1 ) bounce ( 0.5 ) fdynamic ( 0.1 ) fstatic ( 0.2 ) com ( 0 0 0 ) velocity ( 0 0 0 ) angvelaxis ( 0 0 1 ) angvelangle ( 0 ) popgeo ( _render_SOP_ ) cglod ( 1 ) itensor ( points ) itsamples ( 100 ) geochanges ( off ) use_dcolor ( off ) dcolor ( 1 1 1 ) picking ( on ) pickscript ( “” )
chlock geo1 -*
opcolor -c 0.7 0.7 0.7 geo1
opset -d off -r off -h off -f off -y off -t off -l off -s off -u off -c off -C off -p off -e on -b off -S on -x off geo1
opcf geo1
# Node curve2
opadd -n curve curve2
oplocate -x 0 -y 0 curve2
opparm curve2 type ( poly ) method ( cv ) coords ( “” ) stdswitcher ( 0 0 ) close ( off ) normalize ( off ) order ( 4 ) param ( uniform ) tolerance ( 0.01 ) smooth ( 0 ) csharp ( off ) keepgeo ( off )
chlock curve2 -*
opcolor -c 0.7 0.7 0.7 curve2
opset -d off -r off -h off -f off -y off -t off -l off -s off -u off -c off -C off -p off -e on -b off curve2
# Node fit2
opadd -n fit fit2
oplocate -x 0 -y 0 fit2
opparm fit2 group ( “” ) stdswitcher ( 0 0 0 ) method ( approx ) type ( nurbs ) surftype ( quads ) orderu ( 4 ) orderv ( 4 ) tol ( 0.01 ) smooth ( 0 ) multipleu ( off ) multiplev ( off ) scope ( global ) dataparmu ( chrdlen ) dataparmv ( chrdlen ) closeu ( ifprimwu ) closev ( ifprimwv ) corners ( off )
chlock fit2 -*
opcolor -c 0.7 0.7 0.7 fit2
opset -d off -r off -h off -f off -y off -t off -l off -s off -u off -c off -C off -p off -e on -b off fit2
# Node popnet2
opadd -n popnet popnet2
oplocate -x 0 -y 0 popnet2
opparm popnet2 stdswitcher ( 0 0 0 ) timestart ( 0 ) timepreroll ( 0 ) initialstate ( “” ) oversample ( 1 ) maxparticles ( 0 ) rmunused ( on ) restthreshold ( 1e-04 ) contacttol ( 0.01 ) maxdivisions ( 4 ) constrainttime ( 0.5 ) solvertype ( euler ) path1 ( “” ) path2 ( “” ) path3 ( “” ) path4 ( “” )
chlock popnet2 -*
opcolor -c 0.7 0.7 0.7 popnet2
opset -d off -r off -h off -f off -y off -t off -l off -s off -u off -c off -C off -p off -e on -b off popnet2
# Node lattice2
opadd -n lattice lattice2
oplocate -x 0 -y 0 lattice2
opparm lattice2 group ( “” ) stdswitcher ( 0 0 ) divs ( 3 3 3 ) restgroup ( “” ) kernel ( wyvill ) radius ( 1 )
chlock lattice2 -*
opcolor -c 0.7 0.7 0.7 lattice2
opset -d off -r off -h off -f off -y off -t off -l off -s off -u off -c off -C off -p off -e on -b off lattice2
# Node add3
opadd -n add add3
oplocate -x 0 -y 0 add3
opparm add3 stdswitcher ( 0 0 ) keep ( off ) points ( 1 ) remove ( off ) switcher ( 0 0 ) prims ( 1 ) group ( “” ) add ( all ) inc ( 2 ) closedall ( off ) usept0 ( off ) pt0 ( 0 0 0 ) weight0 ( 1 ) prim0 ( “” ) closed0 ( off )
chlock add3 -*
opcolor -c 0.7 0.7 0.7 add3
opset -d off -r off -h off -f off -y off -t off -l off -s off -u off -c off -C off -p off -e on -b off add3
# Node copy2
opadd -n copy copy2
oplocate -x 0 -y 0 copy2
opparm copy2 sourceGrp ( “” ) templateGrp ( “” ) stdswitcher ( 0 0 ) ncy ( 1 ) nml ( on ) cum ( on ) xOrd ( srt ) rOrd ( xyz ) t ( 0 0 0 ) r ( 0 0 0 ) s ( 1 1 1 ) p ( 0 0 0 ) scale ( 1 ) vlength ( on ) newg ( off ) copyg ( ‘copyGroup$CY’ ) stamp ( off ) param1 ( “” ) val1 ( 0 ) param2 ( “” ) val2 ( 0 ) param3 ( “” ) val3 ( 0 ) param4 ( “” ) val4 ( 0 ) param5 ( “” ) val5 ( 0 ) param6 ( “” ) val6 ( 0 ) param7 ( “” ) val7 ( 0 ) param8 ( “” ) val8 ( 0 ) param9 ( “” ) val9 ( 0 ) param10 ( “” ) val10 ( 0 ) param11 ( “” ) val11 ( 0 ) param12 ( “” ) val12 ( 0 ) param13 ( “” ) val13 ( 0 ) param14 ( “” ) val14 ( 0 ) param15 ( “” ) val15 ( 0 ) param16 ( “” ) val16 ( 0 ) param17 ( “” ) val17 ( 0 ) param18 ( “” ) val18 ( 0 ) param19 ( “” ) val19 ( 0 ) param20 ( “” ) val20 ( 0 ) param21 ( “” ) val21 ( 0 ) param22 ( “” ) val22 ( 0 ) param23 ( “” ) val23 ( 0 ) param24 ( “” ) val24 ( 0 ) param25 ( “” ) val25 ( 0 ) param26 ( “” ) val26 ( 0 ) param27 ( “” ) val27 ( 0 ) param28 ( “” ) val28 ( 0 ) param29 ( “” ) val29 ( 0 ) param30 ( “” ) val30 ( 0 ) param31 ( “” ) val31 ( 0 ) param32 ( “” ) val32 ( 0 ) param33 ( “” ) val33 ( 0 ) param34 ( “” ) val34 ( 0 ) param35 ( “” ) val35 ( 0 ) param36 ( “” ) val36 ( 0 ) param37 ( “” ) val37 ( 0 ) param38 ( “” ) val38 ( 0 ) param39 ( “” ) val39 ( 0 ) param40 ( “” ) val40 ( 0 ) param41 ( “” ) val41 ( 0 ) param42 ( “” ) val42 ( 0 ) param43 ( “” ) val43 ( 0 ) param44 ( “” ) val44 ( 0 ) param45 ( “” ) val45 ( 0 ) param46 ( “” ) val46 ( 0 ) param47 ( “” ) val47 ( 0 ) param48 ( “” ) val48 ( 0 ) param49 ( “” ) val49 ( 0 ) param50 ( “” ) val50 ( 0 ) doattr ( off ) setpt ( * ) setprim ( “” ) setvtx ( “” ) mulpt ( “” ) mulprim ( “” ) mulvtx ( “” ) addpt ( “” ) addprim ( “” ) addvtx ( “” ) subpt ( “” ) subprim ( “” ) subvtx ( “” )
chlock copy2 -*
opcolor -c 0.7 0.7 0.7 copy2
opset -d off -r off -h off -f off -y off -t off -l off -s off -u off -c off -C off -p off -e on -b off copy2
# Node add4
opadd -n add add4
oplocate -x 0 -y 0 add4
opparm add4 stdswitcher ( 0 0 ) keep ( off ) points ( 1 ) remove ( off ) switcher ( 0 0 ) prims ( 1 ) group ( “” ) add ( all ) inc ( 2 ) closedall ( off ) usept0 ( off ) pt0 ( 0 0 0 ) weight0 ( 1 ) prim0 ( “” ) closed0 ( off )
chlock add4 -*
opcolor -c 0.7 0.7 0.7 add4
opset -d off -r off -h off -f off -y off -t off -l off -s off -u off -c off -C off -p off -e on -b off add4
# Node convert4
opadd -n convert convert4
oplocate -x 0 -y 0 convert4
opparm convert4 group ( “” ) fromtype ( all ) totype ( poly ) surftype ( quads ) stdswitcher ( 0 0 ) lodu ( 0.5 ) lodv ( 0.5 ) lodtrim ( 1 ) divu ( 2 ) divv ( 2 ) divtrim ( 1 ) orderu ( 4 ) orderv ( 4 ) pastecoord ( cfeature ) pasteattrib ( afeature ) new ( off ) interphull ( off )
chlock convert4 -*
opcolor -c 0.7 0.7 0.7 convert4
opset -d off -r off -h off -f off -y off -t off -l off -s off -u off -c off -C off -p off -e on -b off convert4
# Node convert5
opadd -n convert convert5
oplocate -x 0 -y 0 convert5
opparm convert5 group ( “” ) fromtype ( all ) totype ( poly ) surftype ( quads ) stdswitcher ( 0 0 ) lodu ( 0.5 ) lodv ( 0.5 ) lodtrim ( 1 ) divu ( 2 ) divv ( 2 ) divtrim ( 1 ) orderu ( 4 ) orderv ( 4 ) pastecoord ( cfeature ) pasteattrib ( afeature ) new ( off ) interphull ( off )
chlock convert5 -*
opcolor -c 0.7 0.7 0.7 convert5
opset -d off -r off -h off -f off -y off -t off -l off -s off -u off -c off -C off -p off -e on -b off convert5
# Node convert6
opadd -n convert convert6
oplocate -x 0 -y 0 convert6
opparm convert6 group ( “” ) fromtype ( all ) totype ( poly ) surftype ( quads ) stdswitcher ( 0 0 ) lodu ( 0.5 ) lodv ( 0.5 ) lodtrim ( 1 ) divu ( 2 ) divv ( 2 ) divtrim ( 1 ) orderu ( 4 ) orderv ( 4 ) pastecoord ( cfeature ) pasteattrib ( afeature ) new ( off ) interphull ( off )
chlock convert6 -*
opcolor -c 0.7 0.7 0.7 convert6
opset -d off -r off -h off -f off -y off -t off -l off -s off -u off -c off -C off -p off -e on -b off convert6
# Node grid2
opadd -n grid grid2
oplocate -x 0 -y 0 grid2
opparm grid2 type ( poly ) surftype ( quads ) orient ( zx ) size ( 1 1 ) t ( 0 0 0 ) rows ( 10 ) cols ( 10 ) orderu ( 4 ) orderv ( 4 ) interpu ( on ) interpv ( on )
chlock grid2 -*
opcolor -c 0.7 0.7 0.7 grid2
opset -d off -r off -h off -f off -y off -t off -l off -s off -u off -c off -C off -p off -e on -b off grid2
# Node curve1
opadd -n curve curve1
oplocate -x -6.64725 -y 6.15666 curve1
opparm curve1 type ( poly ) method ( cv ) coords ( ‘1.04145,0.681164,0 0.636128,0.0919477,0 -0.546057,-0.594846,0 -1.09399,0.189525,0 -0.943872,1.15779,2.1684e-19 0.328385,1.17656,0 0.429715,0.602352,0 -0.140736,-0.061924,0 -0.546057,0.0356532,0 -0.594846,0.699929,0 -0.219549,0.756223,0 -0.234561,0.470998,0 ’ ) stdswitcher ( 0 0 ) close ( off ) normalize ( off ) order ( 4 ) param ( uniform ) tolerance ( 0.01 ) smooth ( 0 ) csharp ( off ) keepgeo ( off )
chlock curve1 -*
opcolor -c 0.7 0.7 0.7 curve1
opset -d off -r off -h off -f off -y off -t off -l off -s off -u off -c off -C off -p off -e on -b off curve1
# Node fit1
opadd -n fit fit1
oplocate -x -6.60019 -y 4.9449 fit1
opparm fit1 group ( “” ) stdswitcher ( 1 1 1 ) method ( approx ) type ( nurbs ) surftype ( quads ) orderu ( 4 ) orderv ( 4 ) tol ( 0.01 ) smooth ( 0.367 ) multipleu ( off ) multiplev ( off ) scope ( global ) dataparmu ( chrdlen ) dataparmv ( chrdlen ) closeu ( ifprimwu ) closev ( ifprimwv ) corners ( off )
chlock fit1 -*
opcolor -c 0.7 0.7 0.7 fit1
opset -d off -r off -h off -f off -y off -t off -l off -s off -u off -c off -C off -p off -e on -b off fit1
# Node popnet1
opadd -n popnet popnet1
oplocate -x -8.76918 -y 5.74568 popnet1
opparm popnet1 stdswitcher ( 0 0 0 ) timestart ( 0 ) timepreroll ( 0 ) initialstate ( “” ) oversample ( 1 ) maxparticles ( 0 ) rmunused ( on ) restthreshold ( 1e-04 ) contacttol ( 0.01 ) maxdivisions ( 4 ) constrainttime ( 0.5 ) solvertype ( euler ) path1 ( “” ) path2 ( “” ) path3 ( “” ) path4 ( “” )
chlock popnet1 -*
opcolor -c 0.7 0.7 0.7 popnet1
opset -d off -r off -h off -f off -y off -t off -l off -s off -u off -c off -C off -p off -e on -b off popnet1
opcf popnet1
# Node source1
opadd -n source source1
oplocate -x 2.07059 -y 2.89412 source1
opparm source1 stdswitcher ( 0 0 0 0 ) emittype ( surfacerandom ) usecontextgeo ( none ) soppath ( /obj/geo1/grid1 ) source ( “” ) ignorexform ( off ) distributionattrib ( area ) threshold ( 1 ) densitymin ( 0 ) usedensity ( off ) impulseactivate ( 1 ) impulserate ( 0 ) constantactivate ( 1 ) constantrate ( 100 ) prob ( 1 1 ) group ( “” ) preservegroup ( off ) life ( 100 ) lifevar ( 0 ) accuratebirths ( off ) attrib ( * ) createlocalvar ( off ) initvel ( set ) inheritvel ( 1 ) vel ( 0 2 0 ) var ( 0 0 0 ) doellipse ( on ) doid ( on ) dogen ( off ) doorigin ( off ) originuse ( indexgeo ) originindex ( 0 ) dospeed ( off )
chlock source1 -*
opcolor -c 0.7 0.7 0.7 source1
opset -d on -r on -h off -f off -y off -t on -l off -s off -u off -c off -C on -p on -e on -b off source1
# Node source2
opadd -n source source2
oplocate -x 0 -y 0 source2
opparm source2 stdswitcher ( 0 0 0 0 ) emittype ( point ) usecontextgeo ( none ) soppath ( “” ) source ( “” ) ignorexform ( off ) distributionattrib ( area ) threshold ( 1 ) densitymin ( 0 ) usedensity ( off ) impulseactivate ( 1 ) impulserate ( 0 ) constantactivate ( 1 ) constantrate ( 100 ) prob ( 1 1 ) group ( “” ) preservegroup ( off ) life ( 100 ) lifevar ( 0 ) accuratebirths ( off ) attrib ( * ) createlocalvar ( off ) initvel ( use )
————————————————————————-
Cheers,
G
- EigenAlex
- Member
- 639 posts
- Joined: July 2005
- Offline
- keyframe
- Member
- 1533 posts
- Joined: July 2005
- Offline
- Dave_ah
- Member
- 436 posts
- Joined: July 2005
- Offline
- Dave_ah
- Member
- 436 posts
- Joined: July 2005
- Offline
- keyframe
- Member
- 1533 posts
- Joined: July 2005
- Offline
So, it seems that i'm in-capable of copying and pasting today.
The text below should have followed at the end of the script I posted above, but, well, i screwed it up. *sigh*
Adding the text below at the end of the previous gigantic script should make it happy.
————————-
opcf /obj
opcf geo1
opwire -n curve1 -0 fit1
opcf popnet1
opcf ..
opwire -n popnet1 -0 lattice1
opwire -n convert3 -1 lattice1
opwire -n convert2 -2 lattice1
opwire -n add1 -0 copy1
opwire -n copy1 -0 add2
opwire -n add2 -0 convert1
opwire -n fit1 -0 convert2
opwire -n convert1 -0 convert3
opcf ..
opcf $saved_path
————————-
The text below should have followed at the end of the script I posted above, but, well, i screwed it up. *sigh*
Adding the text below at the end of the previous gigantic script should make it happy.
————————-
opcf /obj
opcf geo1
opwire -n curve1 -0 fit1
opcf popnet1
opcf ..
opwire -n popnet1 -0 lattice1
opwire -n convert3 -1 lattice1
opwire -n convert2 -2 lattice1
opwire -n add1 -0 copy1
opwire -n copy1 -0 add2
opwire -n add2 -0 convert1
opwire -n fit1 -0 convert2
opwire -n convert1 -0 convert3
opcf ..
opcf $saved_path
————————-
- keyframe
- Member
- 1533 posts
- Joined: July 2005
- Offline
Heh…
Well, I did it again.
I just realised what had happend.
It seems that I might have exceeded some maximum length of a reply posting, so the script got cut off.
At any rate, should anyone need a copy of the complete script, as the above will probably NOT work, drop me an email at gene@axyzfx.com
incidentaly, what is the proper protocol for passing around hscript stuff? Do I link to it off-site?
Cheers,
G
Well, I did it again.
I just realised what had happend.
It seems that I might have exceeded some maximum length of a reply posting, so the script got cut off.
At any rate, should anyone need a copy of the complete script, as the above will probably NOT work, drop me an email at gene@axyzfx.com
incidentaly, what is the proper protocol for passing around hscript stuff? Do I link to it off-site?
Cheers,
G
- deecue
- Member
- 412 posts
- Joined: July 2005
- Offline
i think what alex was getting at with the point sop and attractor was to use the forces in the point sop (under the force tab) to control an attractor pop..
but like he said, it's definately a dance between forces to get it to look as you want. after you get comfortable with your forces, you will still probably need to mess around with some post drag/velocity/interaction and such..
here's an example file of it.. i threw some drag on there as well.. but as alex said, the particles can still get off track down the road.. you can see that happening in mine if you let if play through long enough.. but hopefully this will put in a direction you want…
hth,
dave
http://studentpages.scad.edu/~dquiru20/popsonpath.hip [studentpages.scad.edu]
but like he said, it's definately a dance between forces to get it to look as you want. after you get comfortable with your forces, you will still probably need to mess around with some post drag/velocity/interaction and such..
here's an example file of it.. i threw some drag on there as well.. but as alex said, the particles can still get off track down the road.. you can see that happening in mine if you let if play through long enough.. but hopefully this will put in a direction you want…
hth,
dave
http://studentpages.scad.edu/~dquiru20/popsonpath.hip [studentpages.scad.edu]
Dave Quirus
- mikela
- Member
- 27 posts
- Joined: July 2005
- Offline
keyframe, that's a fine soultion. I've never done anything useful with the lattice SOP before, and your example gives me some ideas. The main artifact is that velocity is not constant over the arc of the curve, which could become a problem.
What I would like to do (and just might) is to create a force on particles that scales with distance between the particles and the closest point on the spline and also scales with velocity. If some of the particles still want to fly off, I can create a collision tube around the spline and the particles can either slide or die on collision. I just have to reacquaint myself with point() and nearpoint()…
Mike
What I would like to do (and just might) is to create a force on particles that scales with distance between the particles and the closest point on the spline and also scales with velocity. If some of the particles still want to fly off, I can create a collision tube around the spline and the particles can either slide or die on collision. I just have to reacquaint myself with point() and nearpoint()…
Mike
- Dave_ah
- Member
- 436 posts
- Joined: July 2005
- Offline
Unfourtunatly, I am not seeing anything usefull in your file.
The POPnet1 is empty! I can see POPs in Asset window, but when I go to Particles-Popnet1 it is empty. No nodes.
I am seeing some line of points moving around the curve but the flow is not conformal. As I said I am looking to get equivalent of Maya's Curve Flow effect, and am appaled that it is so hard that nobody knows how to di it!
The POPnet1 is empty! I can see POPs in Asset window, but when I go to Particles-Popnet1 it is empty. No nodes.
I am seeing some line of points moving around the curve but the flow is not conformal. As I said I am looking to get equivalent of Maya's Curve Flow effect, and am appaled that it is so hard that nobody knows how to di it!
- deecue
- Member
- 412 posts
- Joined: July 2005
- Offline
my popnet is inside my obj and not under pops.. select the popnet and hit ‘i’ to go inside of it….
as far as it being a straight flow… you will need to mess around with things in order to get it less linear.. add some interaction to push the particles away from each other..throw in some noise/turbulence by force or attraction. it is also good to note that my particles are being birthed from a primitive circle. so everything is coming out of a single point. if you were to use a multi-point object as a source and larger attract radius, that might help a lot.. play with some other options to get the look you want…i just wanted to make a quick example of particles along a path…
it's not so much that it is sooo hard that no one knows how to do it…it's just that it may take a few operations to get the look and feel you want.. just like most things in houdini.. an answer may not be the easiest push of a button solution, but with the longer methods, you have greater control..
i haven't looked at gene's solution yet, but im about to because it looks very interesting..
dave
as far as it being a straight flow… you will need to mess around with things in order to get it less linear.. add some interaction to push the particles away from each other..throw in some noise/turbulence by force or attraction. it is also good to note that my particles are being birthed from a primitive circle. so everything is coming out of a single point. if you were to use a multi-point object as a source and larger attract radius, that might help a lot.. play with some other options to get the look you want…i just wanted to make a quick example of particles along a path…
it's not so much that it is sooo hard that no one knows how to do it…it's just that it may take a few operations to get the look and feel you want.. just like most things in houdini.. an answer may not be the easiest push of a button solution, but with the longer methods, you have greater control..
i haven't looked at gene's solution yet, but im about to because it looks very interesting..
dave
Dave Quirus
- Dave_ah
- Member
- 436 posts
- Joined: July 2005
- Offline
I am sorry. I must be missing something, or not seeing what you are. Becouse I do not see the particles flowing along a curve at all. I see few points dancing around like a small fly swarm, but otherwise there is no flow aling the curve. I don't even understand what you are trying to do and the logic behind your network. You are emitting points from a Circle_SOP but the stream is NOT circular. It is a point, like in my case. But what is controlling the speed of the particle, since Inherit Velocity in Source1_POP shouild only give you 0 velocity. You are using the Attractor_POP to attract the particle, but I don't understand how its attracting and to what? Center, vertex, which vertex. Makes no sence to me. I don't get what I am looking at, and I don't see how it could work. And it does not in fact work. What is the Drag_POP being used for, and how?
I know there is no simple one button solution, but I have been looking for a way to make particles flow along and around a curve, on and off for a year without any success. Neither do I see any kind of success from anyoneelse trying this. Yours and Gene's efforts are the proof.
There is no logical starting point from which to attack the problem.
The only node that makes sence in this scenario is the Position POP with Path option, but regardless of what I try I cannot get them to randomize, and flow as a stream. All points regardless of position and time of emission and collapsed into a single point position. The documentation is almost non-existent, and NOWHERE I've looked are there any examples. Noone knows! Its maddeningly frustrating. Since its pretty simple to do in Maya and MAX. What gives with Houdini?
I know there is no simple one button solution, but I have been looking for a way to make particles flow along and around a curve, on and off for a year without any success. Neither do I see any kind of success from anyoneelse trying this. Yours and Gene's efforts are the proof.
There is no logical starting point from which to attack the problem.
The only node that makes sence in this scenario is the Position POP with Path option, but regardless of what I try I cannot get them to randomize, and flow as a stream. All points regardless of position and time of emission and collapsed into a single point position. The documentation is almost non-existent, and NOWHERE I've looked are there any examples. Noone knows! Its maddeningly frustrating. Since its pretty simple to do in Maya and MAX. What gives with Houdini?
- Antoine Durr
- Member
- 321 posts
- Joined: July 2005
- Offline
DavidRindner
NOWHERE I've looked are there any examples. Noone knows! Its maddeningly frustrating. Since its pretty simple to do in Maya and MAX. What gives with Houdini?
I'm curious what Maya and MAX do if you particles start going really fast? There is a big difference between particles that are simulated along a straight line and then bent into a curve, vs. particles that are simulated along the curve.
– Antoine
-
- Quick Links