Flickering on animation

   2577   7   1
User Avatar
Member
340 posts
Joined: June 2017
Offline
I've been trying to UV map a sweep model of a square knot, and I added a rotation over time to the cross section (circle). Most of the time it animates ok, but for certain frames, I get an ugly artifact (see attachment). I'm not sure what I am doing wrong.
Attachment Not Found

Attachments:
HoudiniSweepIssue.jpg (642.7 KB)
SquareKnotOneWhite.hiplc (653.5 KB)

User Avatar
Member
340 posts
Joined: June 2017
Offline
I was partially able to solve this, but I don't know why this is so much more complicated than Cinema 4D's sweep nurb. In C4D, a sweep allows spine control (for varying thickness) easily, creates UV's automatically, and doesn't have to do strange things like start with an open circle of 359 degrees and exchanging U and V coordinates to avoid ugly seams. If one adds a polycap, it creates ugly renders like above. I have to select the end loop and create groups to have it behave properly. Here is a fix with notes to show the issues and an updated file. Please, SideFx, make this easier - if you want to market Houdini to modelers.


Attachment Not Found
Edited by Island - April 20, 2018 21:47:07

Attachments:
HoudiniSquareKnot.jpg (460.3 KB)
SquareKnot.hiplc (728.9 KB)

User Avatar
Member
483 posts
Joined: Dec. 2006
Offline
You have to distinguish between point and vertice attributes.
Usually it is better to have the UV attribute as vertice attribute,
because shared points, like your “begin/end” point will try
to share the same UV coordinate if UV is assigned as point attribute.

If you do not like to repeat creating all the nodes,
you can create an digital asset :-)

Attachments:
simple_uv.hip (270.1 KB)

English is not my native language, sorry in advance for any misunderstanding :-)
User Avatar
Member
340 posts
Joined: June 2017
Offline
That is VERY helpful. Rotating one Uv texture -90 degrees made the need to map v coordinates from u coordinates not necessary. The digital asset idea will make this process easier and I liked that your method doesn’t require a 359 degree open arc and adjusting the fuse distance.

Is there a way in uv transform to put in an expression that scales the y axis by arclen circle divided by arclen curve?
User Avatar
Member
483 posts
Joined: Dec. 2006
Offline
arclen("../" + opinput(".", 0),0,0,1)

should give the length of the first input, which can be used to scale the UVs.

“arclen spline” in the “texture type” select should do the same…
(but not working here)
Edited by matthias_k - April 23, 2018 03:13:26

Attachments:
simple_uv.hip (272.9 KB)

English is not my native language, sorry in advance for any misunderstanding :-)
User Avatar
Member
340 posts
Joined: June 2017
Offline
Thank you again. I would never in a million years have been able to come up with that expression on my own with SideFx help and Google.
User Avatar
Member
483 posts
Joined: Dec. 2006
Offline
:-) many thanks


arclen("../" + opinput(".", 0),0,0,1)
is same as:
arclen("../NodeToGetValueFrom",0,0,1)

which one to choose, depends on your needs

arclen:
http://www.sidefx.com/docs/houdini/expressions/arclen.html [www.sidefx.com]

opinput in action:
http://www.sidefx.com/docs/houdini/expressions/opinput.html [www.sidefx.com]
Edited by matthias_k - April 23, 2018 11:44:25
English is not my native language, sorry in advance for any misunderstanding :-)
User Avatar
Member
340 posts
Joined: June 2017
Offline
The description in your link above for arclen was not particularly intuitive, but your solution was very helpful. The index of a curve and way of expressing what node was being measured were not things that I could have figured out with the links.
  • Quick Links