Jump to content

rayman

Members
  • Content count

    300
  • Joined

  • Last visited

  • Days Won

    40

rayman last won the day on February 21

rayman had the most liked content!

Community Reputation

366 Excellent

About rayman

  • Rank
    Illusionist

Personal Information

  • Name
    Pavel
  • Location
    Sofia, Bulgaria
  1. Go to geometry wrangle and change Input2 Dop data from 'second' to '$OBJNAME/second'.
  2. Hi, Tim! I'm not very familiar with chops, but there is a quick vex solution to avoid flipping artefacts. All you have to do is to check the dot product between the two quaternion vectors and based on the result to invert one of the vectors before slerp-ing them. Check the attached file - it's kind of a library for proper matrix interpolation I created for my personal projects, and it uses the exact same method. Cheers! Pavel slerpmx.vfl
  3. Hello! I think what we observing here is just wrong matrix interpolation error. I'm not sure if I posted the last version of this setup here, but I switched from computing restP on the fly from pieces matrix to simple pre-computed restP as the results are much more predictable. Fortunately all you have to do is to find these lines: restP = ptransform("space:current", "space:world", @P); restP *= mxinv; and replace them with: restP = v@rest_p; and you should be ready to go. Cheers! Pavel
  4. More collision problems with cloth

    Try to turn off volume based collisions.
  5. FEM - Simulate with Static but Embed Animated

    use point deform after simulation - then you can deform using embeded or simulated geometry. Cheers! Fem Animated Embbed.hipnc
  6. rocket launch

    As far as I know in case of space shuttle there is a very dense pipe system inside them, filled with their own fuel which keeps them cool.
  7. Scaling packed Objects with VEX

    Thanks, man! Good to know!
  8. Scaling packed Objects with VEX

    I gave this a try, as this was something I missed as a feature for a long time and found a really simple solution: just delete the id attribute when scaling to force bullet to update the collision geometry. Not sure if this is the most elegant solution but it looks that it works fine even with sims with constraints. i@id=-1 also works, so you can update it faster using Geometry wrangle instead of SOP solver + wrangle nodes. float sc = 1.01; vector scale = set(sc,sc,sc); matrix3 trn = primintrinsic(0, "transform", @primnum); matrix scalem = maketransform(0, 0, {0,0,0}, {0,0,0}, scale, @P); trn *= matrix3(scalem); setprimintrinsic(0, "transform", @primnum, trn); int pts[] = primpoints(0,i@primnum); setpointattrib(0,"id",pts[0],-1); Cheers!
  9. Modify Constraint Attributes with SOP Solver

    Your confusion comes from not understanding the order of execution. What comes inside SOP solver is the values from previous iteration, they are then passed to Bullet solver and modified by it - thats why values inside do not match the values from DOP network - they are just not shown in the same timestep. Also, keep in mind that "angle" is just a feedback attribute - even if you change it (as far as I know)- it won't affect simulation at all. You need to create vector4 "orient" or vector "r" and set it manually. It is a little tricky but not impossible. Check the docs for more info.
  10. RBD to FLIP, delete piece after feeding it to FLIP

    Nice work, Johnny!
  11. One workaround I found is to create detail string attribute called for example "at" with value set to "@"; Then in wrangle node you can use detail(0,"at") to return @ as string without messing with the attributes. In your case : string grp = detail(0,"at")+"Cd<1.0"; int nearest[] = nearpoints(0, grp, @P, 1); I usually use it to check for closest pieces different from current one: string grp = detail(0,"at")+"name!="+s@name; int near = nearpoint(0,grp,v@P); If it works without @, like Yunus said, then silly me D:
  12. RBD to FLIP, delete piece after feeding it to FLIP

    Well,if you play a bit more with DOPS you'll find that it's not that complicated. Data is usually processed left to right,top to bottom and if there are multiple multi solvers/merge nodes , you have to dive inside assets to find the order of execution. I think they messed it up a bit with "new" POPs, making it a bit more confusing, but if you check inside pop nodes there is usually merge node inside them, so data is still flowing the same way. In this particular case I'm attaching SOP data to flip object and it is computed only once in DOPS ,when the object is created. I'm importing it from SOPs instead of leaving it completely empty, only because I want the "name" attribute to be present at the begining. Thats the whole reason for piecesData->OUT_PCDATA nodes - they are here only for initialization and are not used during the simulation. I think you can also uncheck Use External SOP and put the piecesData->OUT_PCDATA nodes inside InitPiecesData node. Then after new points/pieces are added to flip I check this data (PiecesData) and if new piece is added to sim and not previously present , I add new point with the name of the new piece (updatePiecesData node) to PiecesData . So during the next iteration if some pieces are previously sourced inside flip, I delete them before merge them to the flip sim (/obj/FLIP_SIM/sopsolver1/attribwrangle2). As you can see its not that complex, still second file is much more easier to understand as it is basically the same thing, but instead of creating new data to store the pieces I just use the default Geometry data.
  13. RBD to FLIP, delete piece after feeding it to FLIP

    I'ts the same flow of data you used, I only added another Geometry data to flip object to store used pieces. I just realized, that you already store pieces in Geometry data anyway, so you can go even simpler...just add name attribute to /obj/torus/unpack1 and check for name attribute in /obj/FLIP_SIM/sopsolver1/attribwrangle2 This will work only if you don't erase pieces from flip object Geometry data, so be careful! rbd_to_flip.v1_FIX2.hiplc.hipnc
  14. RBD to FLIP, delete piece after feeding it to FLIP

    You just need some place to store the already used pieces. You can do it using another dop between the 2 sims or right inside the FLIP. I actually prefer the other solution, but this was much faster to implement without messing too much with your file. Cheers! rbd_to_flip.v1_FIX.hiplc.hipnc
  15. Determine if fracture piece is broken off or not..?

    Well if you check the files above you can see that there is a "broken" attribute which is float. broken=1 means that all connections to that piece are broken, so it is a single chunk. broken>0 && broken<1 means that some of the connections to that piece are broken. I modified the file again, so it now works much better with non-packed. Red pieces are single chunks (broken=1.0), yellows are partially broken. SOP_PiecesRelativeBreak_v03b.hiplc
×