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
EXPERTISE
VFX Artist
INDUSTRY
Advertising / Motion Graphics  | Education  | Film/TV

Connect

LOCATION
Montreal, Canada

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 :
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");
    }
}