Jump to content

Procedural Skin Pores


Shyralon

Recommended Posts

Hello everyone!

For a university project I am attempting to build a system for procedural skin pores inspired by the work weta did on Gemini Man, based on this article here and the corresponding talk I saw at Siggraph.

https://www.fxguide.com/fxfeatured/face-it-will-gemini-man/

In the article they essentially mention "growing" the pore based on previously placed curves, more or less like "grooming" the skin pores.

I feel like I have a basic idea on how to approach this, but also I am quite new to Houdini so there are a couple of things which are unclear to me right now - maybe someone has some ideas on how to approach this?

Mainly I am unsure about how to approach the actual connection of the pores. (here is an image taken from the article - talking about the third step)

gemini_man_skin.thumb.png.d36727a1972d4059b88aecad3f6cf80f.png

Right now I would approach it as some kind of "get closest points to current pore" while talking the flow of the curves into account, then connect them with a tubelike mesh and subtract this from the surface.

But I have no idea how to actually take the flow of the guide curves into this, so I would love to hear some ideas for this.

Second approach I thought about this would be to actually simulate the pores as particles moving along the surface and calculate some kind of vector field from the guides to guide them.

No idea if any of this makes any sense as I am too new to Houdini to properly judge this, so I would be super grateful for any thoughts and advise on this :)

Link to comment
Share on other sites

  • 2 weeks later...

Also found a (rather low quality) recording of the talk I am refering to (roughly from minute 02:10 on)

In this talk he states that for the connection each pore looks for the nearest point in the direction of the two nearest curve and then one beyond.

So my approach right now (testing this takes time as I still struggle with vex syntax) is: get nearest point using the "nearestpoint" function, build vector from current point to each of the nearpoints. Then build direction vector from the nearest two curve points and do a dot product to check if the point matches the directionvector best, and connect these points with a curve once that is done. All in a point wrangle. After that I resample the curve, project to the surface using minpos and subtract as a VDB.

Does that make sense or is there a better way?

 

Edited by Shyralon
  • Like 1
Link to comment
Share on other sites

  • 2 months later...
  • 1 month later...

@abvfx Hey, sorry for the late reply, kinda forgot about this thread!

yes, I did make some progress. Pretty much got it working, but there are still a couple of errors happening when I try it on more complex meshes and also it is very slow (but already know where I can optimize)

 

skin_wip.png

  • Like 2
Link to comment
Share on other sites

  • 1 year later...
  • 2 weeks later...

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...