Jump to content

Zbrush-like details in Houdini


RTHMan

Recommended Posts

Do you want to creat the patern from a scattering approach or do you want a "height texture bombing" a model with one of these patterns with scattering?

Both are possible anyway, be Houdini is not the right platform to eat billions of polygons as morning pancake, i don't encourage you to push it too much ...

 

________________________________________________________________

Vincent Thomas   (VFX and Art since 1998)
Senior Env and Lighting  artist & Houdini generalist & Creative Concepts

 http://fr.linkedin.com/in/vincentthomas

Link to comment
Share on other sites

30 minutes ago, vinyvince said:

Both are possible anyway, be Houdini is not the right platform to eat billions of polygons as morning pancake, i don't encourage you to push it too much ...

 

________________________________________________________________

Vincent Thomas   (VFX and Art since 1998)
Senior Env and Lighting  artist & Houdini generalist & Creative Concepts

 http://fr.linkedin.com/in/vincentthomas

That's disappointing. Thanks for the advice.

Link to comment
Share on other sites

#define PI          3.1415926535897931
#pragma label       Theta       "Maximum Theta"
#pragma label       spread      "Overall Spread"
#pragma label       DATA        "Data Points"
#pragma label       kd          "Diffuse"
#pragma label       ks          "Specular"
#pragma label       bump        "Bump"

surface
qrotation_field
(   float   Theta   = 2.0,
            spread  = 3,
            kd      = 1,
            ks      = 0.5,
            bump    = 0.1;
    string  DATA    = "$HIP/../VEX/Reading-Data-Points/_datapoints1.bgeo.sc")
{
    float d, Np, theta, pFratt, factor, pspread;
    vector _P, pP, axis, pVratt;
    vector4 Q;
    string group;
    
    _P = ptransform("space:camera", "space:world", P);

    theta = snoise(_P + 0.9, 1, 0.75, 1)*4.5;
    axis = snoise(_P + 0.05, 1, 0.05, 1);
    Q = quaternion(theta, axis);
    _P = qrotate(Q, _P);
    
    for(int g = 0; g < 2; g++){
        group = concat("group", itoa(g));
        int p[] = expandpointgroup(DATA, group);
        Np = len(p);
        factor = g + 1;
        for (int i = 0; i < Np; i++){
            pP = point(DATA, "P", p[i]);
            axis = point(DATA, "N", p[i]);
            pFratt = point(DATA, "fratt", p[i]);
            pVratt = point(DATA, "vratt", p[i]);
            pspread = pFratt*spread/factor;
            d = distance2(pP, _P);
            d = exp(-d*d/pspread);
            theta = 2*PI*(pFratt*2 - 1)*d*Theta/factor;
            Q = quaternion(theta, axis);
            _P = qrotate(Q, _P - pP) + pP;
        }
    }

    vector outColor = snoise(_P*0.25, 1, 0.25, 1);

    vector Nn = normalize(computenormal(P + min(outColor)*bump, N, Ng));
    
    vector diff = diffuse(Nn)*outColor*dot(normalize(-I), N);

    vector spec = specular(Nn, normalize(-I), fit01(min(outColor), 0.5, 0.1))*0.1;
    spec += specular(N, normalize(-I), 0.05);

    Cf = diff*kd + spec*ks;
}

Make New Asset SHOP_surface and have fun  (you have those files on GITHUB) ...it reads points and attributes that exist on that POINTS ..Just use imaginations ..
Just example ...

Link to comment
Share on other sites

Thank you Konstantin, but there are other things I also want.

1. To use curves to influence the formation of the cells.

2. To add textures to the cells and in between the cells.

3. To edit the radius of the cells.

4. To use different alphas for the cells like these images.

60841978402f1_Sharpshape.jpg.36d4b88f209e199f0d19de39eab8995f.jpg60841980432f3_Roundshape.jpg.a314e7fccccba9305aa8a5a34ab6a82a.jpg60841992da677_Softshape.jpg.f258b64cbb153a88ccdf0b87488f6992.jpg

Edited by Bennell
  • Downvote 1
Link to comment
Share on other sites

1 hour ago, Bennell said:

Thank you Konstantin, but there are other things I also want.

1. To use curves to influence the formation of the cells.

2. To add textures to the cells and in between the cells.

3. To edit the radius of the cells.

4. To use different alphas for the cells like these images.

Well, then you have quite a bit of research ahead of you. Maybe this helps:

  1. orient along curve SOP + primuv() can sample tangent directions from curves.
  2. 'texture bombing' adds structures based on image maps
  3. editing the pscale attribute along with pcfind_radius() changes radii
  4. the smooth()-function allows for different roll-offs.

I have published lots of examples here and also some tutorials about this.

  • Like 2
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...