Jump to content

RBD fractured object questions!


asnowcappedromance

Recommended Posts

hi guys!

i am working on a nice simulation of many arrows flying through the sky and hitting the ground.

Some arrows hit the ground and stick there (i already got that part) and some arrows shall

collide with the ground instead of getting stuck.

I copied my arrow with a copy SOP to particles which describe the flight path.

Then i created a new group based on the rule: if($LIFE >.5 && $TY < 1, 1, 0)

This is the group for the arrows that should be simulated by the DOP Network.

After that, i isolated this group by deleting all other arrows that aren't meant

for the DOP simulation and created a new group for each arrow by using the connectivity SOP

and the partition SOP.

Now the arrows are ready for the DOP simulation.

Inside the DOP Network i put down a RBDfracturedobject and loaded my DOP_OUT geometry in.

here the problems begin:

As each group is created at a different time, how do i tell the RBDfracturedobject when to create

each arrow?

Would be nice to get some tips, i'm new to DOPs, so i'm sure this won't be my last question to this ;))

all the best,

Manuel

Link to comment
Share on other sites

of course let them collide with the ground ;)

later on i want to add behaviours for different surfaces, say wood and stone, of course the arrows

would not run through stone so they should bounce off.

still got no idea how to feed groups into the RBDfracturedobject that are created at different times!

Link to comment
Share on other sites

ok. Made some progress, but not with the RBDs unfortunately -.-

I started working on a feature i want to implement into my arrow setup,

which is the idea that some arrows snap off as they collide with the ground.

I do the breaking with a foreach SOP and then calculate an attribute "lowest point"

of each broken piece.

My initial idea was to use this attribute later on as the constrained location of

a RBD Pin Contraint, so as the arrows break off, the pieces swing off with the breakpoint

as their new pivot.

BUT again i have to solve the problem that the pieces have to enter the RBD simulation

each at a different time. So i need an expression for the creation frame of the RBDFractured

Object, right?

It can't be that difficult, in the past i did a similar thing with 3ds Max' thinking particles

where it was quite easy to activate dynamics for objects only when they enter a certain group.

I attach a hip file, please have a look at it, it would be really great if somebody

could give me a helping hand!

(note the hipfile is not the whole arrow simulation, only the part that i'm currently trying

to solve!)

regards,

Manu

tubes_break_off.hipnc

Link to comment
Share on other sites

I've not been able to look at your hip file in detail, so apologies if this isn't what you are aiming for. I'd approach this by doing your animation in dops, using e.g the point position node and a copydata solver to animate your arrows. You can then create a group in dops, using a dops expression to switch to an rbd solver for arrows that you want to crash into the ground. Fractured objects are a bit harder because I guess you are going to need to tie both bits of the fractured object to a single animated point.

As it happens I'm working on a tutorial that's going to use that technique (for replicating a Cinema 4d mograph effect rather than for arrows hitting the ground) but I think the same technique might work here.

Link to comment
Share on other sites

I've not been able to look at your hip file in detail, so apologies if this isn't what you are aiming for. I'd approach this by doing your animation in dops, using e.g the point position node and a copydata solver to animate your arrows. You can then create a group in dops, using a dops expression to switch to an rbd solver for arrows that you want to crash into the ground. Fractured objects are a bit harder because I guess you are going to need to tie both bits of the fractured object to a single animated point.

As it happens I'm working on a tutorial that's going to use that technique (for replicating a Cinema 4d mograph effect rather than for arrows hitting the ground) but I think the same technique might work here.

hi Peter,

thank you so much for your effort to help me out, right now i'm a little short in time, but

tonight i'm going to see if this is taking me any further, although i'm not sure about

animating this whole thing only in DOPs because i worked out tons of expressions for the setup

and was really happy that things are running so smooth until now ;)

regards,

Manuel

Link to comment
Share on other sites

hi everyone!

I'm making some progress here so i don't want to withheld the scene from you,

feel free to have a look at it.

Still there are a lot of things i couldn't resolve yet :)

In the meantime i could bring the arrows into my DOP simulation by following

a tip that Graham gave me once:

Setting the Creation Frame of the RBDFracturedObject to $F and deleting each

object group the next frame once it entered the group that's fed into the DOP simulation.

biggest question at the moment:

How can i inherit the arrows motion once they got into DOP simulation???

Making "use deforming geometry" won't work this time because it can't fetch the

SOP geometry's animation data which is deleted one frame after entering the group.

It'd be really great if you could give me some hints and tips, of course i don't want

you to do my work but i'd be glad if you could push me into the right direction!!

If you got questions to the setup i will do my best to answer them guys!

all the best,

Manuel

arrow_scene_edit_03.rar

Link to comment
Share on other sites

If you want to inherit the velocity then you need to transfer the point velocity of your particles along the chain so that DOPs can read it in. I see you've got "Inherit Velocity from Point Velocity" turned on on the RBD object, but the velocity is getting removed when you do your cleanup after your popnet. If you add ^v and add v to the Point attributes copying on the copy_arrows sop you should be able to get the data in and your arrows will assume the arrow velocity.

Link to comment
Share on other sites

hm i'm a little bit bummed out right now, working for hours on this thing and

the progress is not overwhelming ^^

Yeah at least i got the velocity attribute now copied to the isolated "DOP arrows"

and they inherit the motion now - But only for 3 frames, then the velocity

stops and they simply drop straight to the ground as if flying against an invisible wall -.-

Ok, it's gotten pretty late so i call it a day,

latest hipfile is attached!

gn8 everyone ;)

arrow_scene_edit_04.rar

Link to comment
Share on other sites

Hi @all !

I'm really clueless right now and really could use some help,

please please help me debugging my scene!!!

There are 2 main things that don't work out.

a) there is still this problem that the arrows in the DOP simulation only inherit

the motion for 3 frames and then drop straight to the ground.

B) the number of arrows is shortened by -1 when they get sent to the last foreach SOP

(which kills the arrows one frame after they entered the DOP group, for the

RBDfracturedobject's creation frame is set to $F). This isn't intended,

what am i making wrong ?????

The latest file is attached. Simultaniously i'm working on a solution to break some

of the arrows as they hit the ground, inside of the DOP network there is a node called

apply relationships which maybe will help me achieve my goal.

I will update you on this one soon.

Come on guys i bet for some of you this is really a breeze ;))

best wishes,

Manuel

Edit: I made sticky notes inside the SOP and DOP networks so you can easily locate my problems.

arrow_scene_edit_05.hipnc

Edited by asnowcappedromance
Link to comment
Share on other sites

ok hey there,

another post although it seems i keep writing to myself ;)

Didn't solve my problems yet, though I spent some time doing a few RBD dynamic tutorials!

There are 3 things I found in my scene that are weird.

a) `arg(primgrouplist("../../arrow_groups"), opdigits(stamp("../", "FORVALUE", 200)))`

Inside the foreach SOP called "delete_after_onentergrp" there is one delete SOP.

I used this expression in the delete SOP's group field. Like I said, the cooked outcome

of the foreach SOP is reduced by 1 arrow, so something is wrong there, I don't know what.

If I would use the same expression in for example a transform SOP's parameter, everything

workes fine *confused*

Anyway, the foreach node returns a correct outcome after removing the expression, because

the filter expression if( $FF >= $ONENTERGRP + 1, 1, 0) does the job anyway.

B) Now that the amount of arrows is correct, the group names assigned by the "arrow_groups"

partition SOP gets mixed up. Instead of 6 primitive groups from arrow_0 to arrow_5 there

are 6 primitive groups with the numeric suffixes 0,1,1,1,2,4. (look also at the attached jpg)

How is it possible to output the correct groups after the foreach SOP ?

c) one thing I noticed is that if I deactivate the gravity force, the arrows continue their trajectory

for ever (of course). But it seems that the gravity completely bypasses the arrows velocity after 3 frames,

when turned on. There has got to be a way to avoid this ?!

still hoping to get some help of you guys,

all the best,

Manuel

post-5147-126057732877_thumb.jpg

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