kishenpj
kishenpj
About Me
I am a highly skilled VFX artist with over 10 years of experience in simulation, procedural setups and FX development; primarily using Houdini. Beyond simulations, I have strong proficiency in building python tools, compositing, lighting, crowds and look development, contributing to both the artisti... more
I am a highly skilled VFX artist with over 10 years of experience in simulation, procedural setups and FX development; primarily using Houdini. Beyond simulations, I have strong proficiency in building python tools, compositing, lighting, crowds and look development, contributing to both the artistic and technical aspects of production.
With a diverse background across film, television and gaming, I bring extensive experience in delivering high-quality visual effects across various industries.
Currently based in Montreal Canada, as a permanent resident, I am open to freelance and long-term opportunities. Please feel free to connect and discuss potential collaborations. less
EXPERTISE
VFX Artist
INDUSTRY
Advertising / Motion Graphics | Education | Film/TV
Houdini Skills
ADVANCED
Procedural Modeling | Environments | Digital Assets | Solaris | Mantra | Karma | Pyro FX | Fluids | Destruction FX | PDG | VEX | Python
INTERMEDIATE
Hair & Fur | Cloth | Crowds | Muscles | Lighting | Realtime FX
BEGINNER
Character Rigging | Motion Editing | Animation
Availability
I am currently employed at BarnstormVFX
Recent Forum Posts
Reset attribute | solver infection April 18, 2023, 12:16 p.m.
Tanto
You have to reset @age at some point, otherwise the @age>15 condition will remain true.
Yup, you're right. I probably need a coffee.
Just had to add if(@infect==0)@age=0
Thanks!
Reset attribute | solver infection April 18, 2023, 11:28 a.m.
Just a simple infection solver; but I'm trying to reset the "infect" attribute so my grid of points can be infected again. I'm using age attribute to set infectioin to 0 after certain frame. But i need it to feed it back in. How can i do this?
Q: Attribute wrangle > Attribute promote May 25, 2021, 1:09 p.m.
Promote is actually a bit faster as well for some reason. Especially when it comes to multiple attributes.
Pasting my final vex, incase anyone's curious. Packed into an hda.

wrangle 1 :
wrangle 2:
Pasting my final vex, incase anyone's curious. Packed into an hda.
wrangle 1 :
int runover = chi("../runover"); string att = chs("../attributes"); string atts[] = split(att,' '); foreach(string i; atts){ float val = runover==1?prim(0, i, @primnum):point(0, i, @ptnum); adddetailattrib(0, i + "_min", 1e10); adddetailattrib(0, i + "_max", -1e10); setdetailattrib(0, i+"_min", val, "min"); setdetailattrib(0, i+"_max", val, "max"); }
wrangle 2:
int runover = chi("../runover"); string att = chs("../attributes"); string atts[] = split(att,' '); foreach(string j; atts){ float val = runover==1?prim(0, j, @primnum):point(0, j, @ptnum); float min = detail(0, j+"_min"); float max = detail(0, j+"_max"); if(ch("../toggle_fit")==1){ float fit = fit(val,min,max,0,1); setpointattrib(0, j, @ptnum, fit, "set"); } if(ch("../toggle_promote")==1){ setpointattrib(0, j+"_min", @ptnum, min, "set"); setpointattrib(0, j+"_max", @ptnum, max, "set"); } if(ch("../toggle_avg")==1){ float avg = avg(min, max); setpointattrib(0, j+"_avg", @ptnum, avg, "set"); } }