different behaviour with triple n of vertices


#1

Hello,

I have a syflex flag working ok, and I now wanted to increase the resolution of the flag.
So I’ve created an indentical system except for having tripled the number of vertices of the flag.

Well the simulation behaves much differently than before:
the flag seems much heavier and more rubbery now/
I ran a few checks and realised they both have the same mass (syflex->info), and extremely similar stretching shearing and bending ratios. Also the dimensions are exactly the same.

So in conclusion, if the forces and parameters are all the same, what attributes should I vary to counteract the increase of vertices?

…I know it’s a very loooooong shot :slight_smile:

Regards
Luca


#2

Never mind,

I’ve been suggested to use mimic and drive a second (highres) cloth by the first one.

Luca


#3

one thing…
global damping would need to be reduced (if you have it on)


#4

Thanks I’ll keep that in mind.
I wasn’t happy with the wrap-mimic approach so I’ll try going back to the first idea (using a highres cloth and vary the attribute to achieve similar results).

Luca


#5

Does anybody has good tips on how to achieve the motion of the lowres flag with the highres one?
I’m talking of a mesh now with 5 times the number of faces of the lowres.

The biggest problem is that the highres mesh is too rubbery and way heavier than the low res.
but if I lower the highres mass density and stiffness it sways all over the place.

So my suggestion was somehow to get the nice wrinkles of the highres and the movement of the lowres.
I tried by using mimic (get a highres mesh and wrap it around the lowres mesh. Then use this wrapped highres mesh to drive the mimic force of the highres flag).
This system unfortunately generates a “pixelated” highres flag because only one vertex out of four of the lowres flag drives the highres flag.
Also the highres behaviour wouldn’t be as authentic as generated with a genuine simulation.

My next attempt will be of having a lowres flag. Instancing the resulting shape, smoothing it (to have 4 times the number of vertices) and now use it to drive a wrapped matching highres flag mesh.

I’ll keep u posted. In the meantime any suggestion much appreciated :slight_smile:

Thanks
Luca


#6

If you’re still sorting this one out, you might try displacement maps on the (low-res) simulated mesh that you’re happy with. The Syflex site has a flag tutorial http://www.syflex.biz/tut_flag.html that shows a pretty nice result you can get from doing this.


#7

Weird I posted a reply on saturday but it hasn’t appeared on the forum…

That wouldn’t be detailed enough unfortunately. My flag is for a film close up shot that has to stay over 10 secs on screen… …so lots of details!

I found an interesting solution (still tweaking it) that uses a lowres cloth for primary motion + highres cloth mimicking the lowres + a series of animated and static displacement maps.

In regards to the displacement maps I generate a stress animated map that is based on the syStress attribute. It’s a b&w animated texture that shows where the cloth is tighter/more relaxed and I use it to drive different displacement textures.

Regards
Luca


#8

I was wondering if anybody encountered a problem with rendering cached syflex objects using alfred on multiple machines:

I run a script that calls the syflex custom command syGetStress ona frame basis. This script then converts the systress float array to a string that I pass to slim as a primvar. This is then baked as an animated texture via renderman, and applied later on to drive the displacement.

However, no matter what I do the first frame of the lot always renders frame 1.
So for instance if I render chunks of 50 frames per rendermachine, I get blank textures at frames 50, 100, 150 etc. etc.

I’ve tried both by using a script node to execute the script before and after file open, runtime expressions, renderman preFrameScript, but none of them worked.

I tried to understand what’s going on; here’s what I figured out:
maya batch mode is opened at frame 1. Maya loads the scene (ascii format). The script is evaluated at frame 1. Then the rib generation is run for frame 50. For some reasons the script is not evaluated propely; it seems like that the time doesn’t change. After that Maya go to the next frame, and finally the script gets evaluated (and frame 51 is rendered correctly).

I found two workarounds (one is to have a runUp from frame 99 if I render frames 100-600), so that every rendermachine opensup frame 99, and play until the desired render frame. This should force the evaluation of the script. Only disadvantage is that in case of long sequences you get a runUp from 99 to 550 for instance. :slight_smile:

The other workaround is simply to render all on one machine :slight_smile:

I know it’s a friday… :slight_smile:

thanks
Luca


#9

maybe this has nothing to do with anything…

syflex doesn’t solve the first frame… (start frame)

at least cahce is never written out at starframe

I always suggest to solve serial… (no chunks)
then to process anything else after in chunks…


#10

hi,
i just skimmed over all those posts… but i dont think this was mentioned…
i believe syflex calculates the mass per face… thats why when you make it 5 times as many faces, it becomes 5 times as heavy… and throws everthing out…
as jMartin said… its a similar calulation (surface area to face count) for the global damp… so thats relative too…

.j


#11

A nice solution is to sim the low res, and pin a hires to the low.
This will allow you to get similar overall movement from the low, but you have control over the hires, to get more detailed wrinkles,etc…

works great! :smiley:


#12

Hi Howard, could you please tell me more about this approach?
It would be nice to understand how you pin the highres to the low res, if you pin all vertices or just a few.
In fact I never thought to pin a cloth to a deforming polygon…

I usually used the mimic but I don’t like it much as it tends to make the high res cloth a bit “nervous” and jittery as it’s constantly try to “follow” the lowres…

Thanks
Luca


#13

yes, pin just the outter edge of the hires to the low res, and it will follow its overall movement.
since the rest of the hires is hanging and not pinned you then can control its wrinkling or stiffness, etc… :wink:

mimic requires the same topology where pinning doesnt…

…wait a minute, I just realized you work for the Enemy! :wink: no more help!


#14

Yes, we’re working just around the corner, ehehehe.

That’s an interesting solution, because contrary to mimic it’s not dependent on topology :slight_smile:
However what I’m building now is a system where I have a library of highres simulations, and I apply them on top of a pershot basis lowres simulation. This way I only need to compute global movement and collision on the lowres simulation :slight_smile:

Still tacking a few issues but if it works it would be a nice new approach.
Are you on gmail chat?

Regards
Luca


#15

Hi Luca,

Have you tried to convert the lowres mesh to a sub-d (modify->convert-> polygons to subd). And then click the keep original, and press the proxy object. This will create another shape underneath your clothTrs node that is your new subdivided object. Hide the proxy object and now you have a highres flag that will wrinkle nicely. The simulation will be quite fast too, although inaccurate when it comes to collision due to the fact that it is still just simulating a low poly mesh.

Hope this helps

Huy Nguyen


#16

This thread has been automatically closed as it remained inactive for 12 months. If you wish to continue the discussion, please create a new thread in the appropriate forum.