Jump to content
sunantha

points filled in a deforming object

Recommended Posts

see attached.

Its a hacky nearest-point-on-surface solution. Dunno how it would work with a character.

Thanks cpb. I will study your hip file.

cheers

s

Share this post


Link to post
Share on other sites

...

If you don't mind can you please explain me how things work in the vopsop, esp the matrix bits.

...

the matrix bits are simply Transformation matrices

in compute_transform VOP, the rotation matrix is computed and applied to points then the translation vector is computed

then those informations are transfered to rest points with attrib transfer SOP

and in apply_transform VOP the Transformation Matrix is computed which consists of rotations and translation and is applied to rest points to deform them

there is also a switch in apply_transform VOP which I suppose should switch between transforms from transfer_transform_near/transfer_transform_far, but according to the condition the transfer_transform_near is never used (or i've missed something)

you can simplify this by computing whole transformation matrix in compute_transform and export it as matrix(16 floats) attribute called Transform or something

then in Attrib transfer SOP transfer just Transform attribute

and in apply_transform just multiply P with that attribute

look at the file

testRat_fix2.hipnc

Share this post


Link to post
Share on other sites

the matrix bits are simply Transformation matrices

in compute_transform VOP, the rotation matrix is computed and applied to points then the translation vector is computed

then those informations are transfered to rest points with attrib transfer SOP

and in apply_transform VOP the Transformation Matrix is computed which consists of rotations and translation and is applied to rest points to deform them

there is also a switch in apply_transform VOP which I suppose should switch between transforms from transfer_transform_near/transfer_transform_far, but according to the condition the transfer_transform_near is never used (or i've missed something)

you can simplify this by computing whole transformation matrix in compute_transform and export it as matrix(16 floats) attribute called Transform or something

then in Attrib transfer SOP transfer just Transform attribute

and in apply_transform just multiply P with that attribute

look at the file

Thank you so much for your time anim, I really appreciated it.

There are a few things that I still don't quite understand.

1. What is the AttribReorient doing in there?

2. In the compute_tranform, I think I understand it better now. The only thing I don't quite get is the subtract bit.

3. In the apply_transform, what are dot and compare doing in there?

sorry to bother you again with some stupid questions.

Your help will be really appreciated.

cheers

s

Share this post


Link to post
Share on other sites

1. What is the AttribReorient doing in there?

it is for computing the rotation difference between the rest and deformed geometry by comparing their topology (normals,tangents, ...) and reorienting vector attributes according to that information

2. In the compute_tranform, I think I understand it better now. The only thing I don't quite get is the subtract bit.

it's just position difference between deformed P and rotated rest P, you can imagine it as translation offset which needs to be done on the points to get to correct deformed position after being rotated by matrix

3. In the apply_transform, what are dot and compare doing in there?

this i do not understand either, as i wrote in previous post and notice that in that post i simplified the asset so it does not contain dot and compare and many other nodes anymore (hopefully with the same effect)

Dot product of two identical non-zero vectors is allways 1 as far as i know, so i think it was ment to be used differently

Share this post


Link to post
Share on other sites

it is for computing the rotation difference between the rest and deformed geometry by comparing their topology (normals,tangents, ...) and reorienting vector attributes according to that information

it's just position difference between deformed P and rotated rest P, you can imagine it as translation offset which needs to be done on the points to get to correct deformed position after being rotated by matrix

this i do not understand either, as i wrote in previous post and notice that in that post i simplified the asset so it does not contain dot and compare and many other nodes anymore (hopefully with the same effect)

Dot product of two identical non-zero vectors is allways 1 as far as i know, so i think it was ment to be used differently

Thank you anim, you've been such a great help. Thanks pclaes for pointing out to the asset.

Last but not least, thanks to everyone who's tried to help.

cheers

s

Share this post


Link to post
Share on other sites

hi all i know this is an old thread (really quite old now) but this technique by @anim is really quite effective.  I'm wondering how i would go about applying this technique to an alembic mesh i've brought in?  Right now in the network there is a channel sop thats bringing in a vertex cache from the locked geometry inside the scene.

 

I've setup an alembic anim and i'm just trying to plug it into the sane network with the isooffset, scatter and then the mesh deform network.

however it breaks because of the chop network outside of the setup and i dont know how to get around that.

 

essentially i'm after the same technique where a volume of points moves with the deforming mesh as opposed to jittering around inside.

 

I can lock points to a surface thats fairly straight forward but locking a 'volume' of points inside a deforming geometry seems to be quite a bit harder ?

 

any advice ppl?

cheers

ant

Share this post


Link to post
Share on other sites

@sepu hahahaha yep exactly thanks!

 

I managed to get something working using a vdb from polygons then scattering points in that then point Deform. Is this the same trick?

Share this post


Link to post
Share on other sites

yep iso offset is just the old school of doing that, VDB are newer and faster. 

  • Like 1

Share this post


Link to post
Share on other sites

woohoo! so happy this decade old thread was updated with current VDB method. thanks all!

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×