In this tutorial Moeen will be going through how to create a Doctor Strange-style portal effect in Houdini. It's VEX heavy and can be a lot to take in but we're trying to make it easier for everyone by going through it over at our blog post. We'll try to keep our next tutorial a little less VEX intense for anybody who is trying to avoid VEX like the plague. But, for now, we'll get you thinking with portals.

The music used in the intro: Charles the First (ft.Clozee) - The Mist

For more in-depth explanation: https://www.ninebetween.com/single-post/DoctorStrangePortalTutorialHoudini 

VEX documentation: http://www.sidefx.com/docs/houdini/vex/functions/index.html

CREATED BY

MOEEN SAYED

Visual Effects artist for over 4 years and Houdini tutorial content creator. Co-founder of Nine Between, a South African Visual Effects Studio. Currently based in Johannesburg, South Africa.

More from Moeen Sayed

COMMENTS

  • niczoom 6 years ago  | 

    Thanks for the tutorial. I found the VEX very informative and have picked up some helpful tips! Spoken well, nice and clear.

  • MarceloSousa 6 years ago  | 

    I reaky like this videos, they help very much!
    But... I can't reder the shader, the render seems like a particles default shader....

  • absorbentghost 5 years, 11 months ago  | 

    Can we get the scene files to go along these?

  • forrestvfx 5 years, 4 months ago  | 

    Great tutorial!

  • luscho2005 5 years ago  | 

    dont get it alt ´+ E right

  • luscho2005 5 years ago  | 

    float xdir = sin(@time*3)/2;
    float ydir = cos(@Time*3)/2;
    vector direction = set(xdir,ydir,0);
    float r = fit01(rand(@ptnum*@Frame),0.1,0,5);
    @N+=cross(@N,direction)*r;

    did I something wrong?

  • luscho2005 5 years ago  | 

    is there anithing wrong cannt find something but mine Portal is looking wear after this

    float timer = 2*@Time-@curveu;
    @brightness=chramp('timing_ramp',timer);
    @N=fit01(@brightness, 0.4, 0.6);


    whole expression
    float flare = fit01(abs(sin(@Time)),0.5,1);
    @N *= flare;

    float xdir = sin(@time*3)/2;
    float ydir = cos(@Time*3)/2;
    vector direction = set(xdir,ydir,0);
    float r = fit01(rand(@ptnum*@Frame),0.1,0.5);
    @N+=cross(@N,direction)*r;

    float timer = 2*@Time-@curveu;
    @brightness=chramp('timing_ramp',timer);
    @N=fit01(@brightness, 0.4, 0.6);

    • Moeen 5 years ago  | 

      Hi Luscho,

      The issue is likely due to:

      float xdir = sin(@time*3)/2;

      VEX is case sensitive so you need to ensure that @time is @Time.
      Try this and see if it helps:

      float xdir = sin(@Time*3)/2;

      Hope that helps :)

  • Yann Nicolas 3 years, 3 months ago  | 

    Hi, this link isn't avalaible anymore:

    https://www.ninebetween.com/single-post/DoctorStrangePortalTutorialHoudini

    Where can we find the more in-depth explanation you mention?
    BTW, your Houly Challenge serie is phenomenal!

Please log in to leave a comment.