Search Unity

Physics Obi Particle Based Physics (Cloth, Rope, Fluid) thread

Discussion in 'Tools In Progress' started by arkano22, Jun 30, 2015.

?

Performance vs compatibility

Poll closed Oct 9, 2015.
  1. I don't care about performance, keep my data intact please.

    0 vote(s)
    0.0%
  2. I don't care if I have to re-do some stuff, as long as it runs faster.

    14 vote(s)
    100.0%
  1. arkano22

    arkano22

    Joined:
    Sep 20, 2012
    Posts:
    1,924
    Hi neoshaman,

    The current implementation will not lose anything in the end. I will be able to keep tearing while increasing performance, so hopefully the only difference you'll notice for the next update is faster execution. However there's still quite some work to get the new system fully functional, as only aerodynamic and distance constraints have been updated. Tether, bending, volume, and skin constraints still need some work to be ready.
     
    neoshaman likes this.
  2. XenonBL

    XenonBL

    Joined:
    Sep 23, 2014
    Posts:
    3
    Hi, I'm a recent purchaser of Obi fluid, rope, and cloth. I'm having a lot of fun playing around with them and figuring out how to integrate them into my own projects.

    I'm curious about your next product, Obi Softbodies. How will it differ from the softbodies that can already be simulated using Obi cloth? What features are you planning or imagining for it? Also, can you share any plans for how you plan to integrate all four products more than they already are?

    Thanks for your amazing work!
     
    VargaPD likes this.
  3. arkano22

    arkano22

    Joined:
    Sep 20, 2012
    Posts:
    1,924
    Hi XenonBL,

    I´m glad you're enjoying Obi :)

    Current cloth soft bodies aren´t soft bodies in the traditional sense of the word. Their physical behavior is modeled by a volume constraint, which means they can deform as much as they want as long as their volume stays (nearly) constant. Think of them as air-filled cloth shapes, or balloons.

    There are several other methods to model soft bodies, that allow for much more stiff, rubber-looking materials. Also, some allow to throw plasticity into the model, to allow the body to retain deformation (think of clay or plasticine). This is what ObiSoftbodies will try to simulate: a wider range of elastoplastic materials, from 100% rigid shapes to soft rubber, going trough deformable (plastic) metals and such.

    In the future I want to allow tighter integration of ropes and cloth, allowing to sew particles together so that you can have eg. a piece of cloth directly attached to a rope with no rigid bodies in between both, or two pieces of cloth sewn to each other.
     
    VargaPD likes this.
  4. XenonBL

    XenonBL

    Joined:
    Sep 23, 2014
    Posts:
    3
    Hi arkano22,

    Thanks for the details. That sounds really cool! Will there be ways to vary the softbody parameters on a particle by particle basis, so, say a single mesh object could have both a stiffer plastic area and another section that was more rubbery? It would also be useful to be able to change the the parameters at runtime so an object could become more elastic after being affected by some user interaction. Lots of possibilities, I can't wait.

    Speaking of, how long will I need to wait? :)
     
    VargaPD likes this.
  5. Redrag

    Redrag

    Joined:
    Apr 27, 2014
    Posts:
    181
    Any news on having a length change in Rope? I can implement just tightening it in code using the distance constraints but will wait if you are going to release something soon..
     
  6. rectalogic

    rectalogic

    Joined:
    Nov 30, 2012
    Posts:
    35
    I want to display a photo at runtime on the cloth. I want to adjust the aspect ratio of the cloth mesh to match the photo. An exact match would be nice, but it's also OK to use a close match. What would be the most performant way to do this?
    1. Use a square cloth mesh ObiMeshTopology and adjust the ObiCloth transform to match the photos aspect ratio.
    2. Create several ObiMeshTopology with meshes of different common aspect ratios (4:3, 3:2, 16:9 etc.) in the editor and pick the closest match at runtime and reset ObiCloth.sharedTopology.
    3. Create several ObiCloth instances each initialized with an ObiMeshTopology in the editor with a mesh of a common aspect ratio and disable all but the one that is the closest aspect ratio match at runtime.
     
  7. arkano22

    arkano22

    Joined:
    Sep 20, 2012
    Posts:
    1,924
    1. Would not work as adjusting the cloth transform only affects fixed particles. Physical links and constraints between particles remain the same length, so the actual cloth would remain the same size.
    2. Would not work either unless you can afford a bit of a hiccup when instantiating the cloth, as resetting the cloth shared topology has no effect unless you re-initialize the cloth, which is a slow thing to do and usually is done in-editor.
    3. I´d use this approach, however instead of instantiating them all and enabling/disabling them, I´d create a prefab out of each one and just instantiate the one I need based on the photograph's aspect ratio.

    The most advanced (and accurate) way to do it would be to procedurally generate a mesh of the exact size, generate the topology and then initialize the cloth, all at runtime. However this would take a little bit of time (probably under a second) so if you need to switch sizes quick it isn´t the best approach.

    cheers!
     
    rectalogic likes this.
  8. rectalogic

    rectalogic

    Joined:
    Nov 30, 2012
    Posts:
    35
    I just purchased and installed 2.2.2. I moved the Gizmos and Default Editor Resources folders. Almost all of the sample scenes seem to be missing components.

    ClothRigidbodyInteraction:
    The referenced script on this Behaviour (Game Object 'Cube') is missing!
    The referenced script on this Behaviour is missing!
    The referenced script on this Behaviour (Game Object 'Cube 1') is missing!
    The referenced script on this Behaviour is missing!
    The referenced script on this Behaviour (Game Object 'Sphere') is missing!
    The referenced script on this Behaviour is missing!
    The referenced script on this Behaviour (Game Object 'Main Camera') is missing!
    The referenced script on this Behaviour is missing!
    The referenced script on this Behaviour (Game Object 'Floor') is missing!

    Curtains:
    The referenced script on this Behaviour is missing!
    The referenced script on this Behaviour (Game Object 'curtains') is missing!

    FluidBuoyancy:
    The referenced script on this Behaviour is missing!
    The referenced script on this Behaviour is missing!
    The referenced script on this Behaviour (Game Object 'Emitter') is missing!
    The referenced script on this Behaviour (Game Object 'Emitter') is missing!
    The referenced script on this Behaviour is missing!
    The referenced script on this Behaviour (Game Object 'Solver') is missing!
    The referenced script on this Behaviour is missing!
    The referenced script on this Behaviour is missing!
    The referenced script on this Behaviour is missing!
    The referenced script on this Behaviour is missing!
    The referenced script on this Behaviour (Game Object 'Main Camera') is missing!
    The referenced script on this Behaviour (Game Object 'Main Camera') is missing!
    The referenced script on this Behaviour (Game Object 'Main Camera') is missing!
    The referenced script on this Behaviour (Game Object 'Main Camera') is missing!

    And so on, almost all the samples seem to be missing pieces. I looked in Curtains.unity and found the block for the missing script:

    --- !u!114 &644399117
    MonoBehaviour:
    m_ObjectHideFlags: 0
    m_PrefabParentObject: {fileID: 0}
    m_PrefabInternal: {fileID: 0}
    m_GameObject: {fileID: 644399114}
    m_Enabled: 1
    m_EditorHideFlags: 0
    m_Script: {fileID: 11500000, guid: 21fa992eff12648e6a2eb71c3ce5b2e4, type: 3}
    m_Name:.
    m_EditorClassIdentifier:.
    close: 0
    openScale: 0.75
    closedScale: 0.3

    I then grepped my entire project for guid 21fa992eff12648e6a2eb71c3ce5b2e4 and did not find it.

    So did I somehow not install various pieces when I imported from the asset store?
     
  9. rectalogic

    rectalogic

    Joined:
    Nov 30, 2012
    Posts:
    35
    One other issue is Obi doesn't work in the iOS simulator. The native library is a fat binary but is missing the simulator SDK architecture (i386):

    $ lipo -info Obi/Plugins/iOS/libOni.a
    Architectures in the fat file: Obi/Plugins/iOS/libOni.a are: armv7 arm64

    Could you include the simulator binaries in libOni.a so it works when Unity Target SDK is set to Simulator SDK?

    You should just be able to build libOni.a for both device and for simulator, then merge those two libraries into a single library that contains all 3 architectures with "lipo -create -output libOni.a libOni-arm.a libOni-simulator.a"

    This has an example script to automate all that https://www.raywenderlich.com/41377/creating-a-static-library-in-ios-tutorial#p413775
     
  10. arkano22

    arkano22

    Joined:
    Sep 20, 2012
    Posts:
    1,924
    Hi rectalogic!

    Never tried to use Obi in the iOS simulator, so I had no idea about any of this. I will take a look into this and provide a working library for the simulator in the next update.

    cheers!
     
    rectalogic likes this.
  11. arkano22

    arkano22

    Joined:
    Sep 20, 2012
    Posts:
    1,924
    More users have complained about this, but I haven´t been able to reproduce it. My guess is that it's a bug in Unity, as there are no missing components in any of the object inspectors for any of the scenes, and querying for missing references using a script returns no results for me. Also, m_EditorHideFlags is zero in the block you retrieved, so it's not a hidden component and should appear in the inspector somewhere, but it doesn´t. Seems to make no difference at all in the actual simulation for anyone, though.

    I think the only workaround would be to re-do all sample scenes, which I will as soon as I have time to.
     
  12. rectalogic

    rectalogic

    Joined:
    Nov 30, 2012
    Posts:
    35
    FYI, I do see missing components in the inspectors. And some of the scenes don't seem to do much, but I'm not sure what they're supposed to be doing. e.g. FluidBuoyancy shows a bunch of components missing on the Main Camera, see screenshot.

    When I run FluidBuoyancy I see a colored sphere and beachball sphere descend and rest on the ground and that's it. They appear to just be normal sphere's, nothing cloth related seems to happen.

    Anyway, this isn't a big issue but somethings obviously messed up somewhere.
     

    Attached Files:

  13. benthroop

    benthroop

    Joined:
    Jan 5, 2007
    Posts:
    262
    Hi. This looks great.

    What's the status on PS4 support?
     
  14. DigitalAdam

    DigitalAdam

    Joined:
    Jul 18, 2007
    Posts:
    1,204
    I'm using Megafiers Wrap for my skinning of cloth to my character. Unity's cloth will allow me to choose vertices after Megafiers Wrap is applied, so I can get cloth simulation where I need it. Will yours do the same?

    Thanks.
     
  15. xDavidLeon

    xDavidLeon

    Joined:
    Jun 9, 2014
    Posts:
    123
    I'd also be interested in knowing what's the status on PS4 support. If you need help porting it just send me a msg, maybe I can help :)
     
  16. arkano22

    arkano22

    Joined:
    Sep 20, 2012
    Posts:
    1,924
    Hi Adamz,

    It very much depends on where in the update cycle is Megafiers Wrap doing its stuff. I would assume it does so in the Update() method, in which case the modified vertices will be available for Obi at the beginning of each physics step. However this is only guessing, the only way to know it for sure is trying.
     
  17. arkano22

    arkano22

    Joined:
    Sep 20, 2012
    Posts:
    1,924
    The FluidBuoyancy is actually a scene from ObiFluids that slipped trough the build system, and should not be there at all (my bad :oops:). That's why it shows missing components. You can safely delete the whole scene.

    I´ve narrowed the issue with missing component in other scenes to a bug/omission/"feature" in Unity: If you remove a component script outside of Unity, chances are that most objects referencing the component get a NULL in their internal component array, that does not show up if you GetComponents() on the object. The inspector does not show these null component entries either, but if you query them through the SerializedObject interface, they're there.

    I think I can remove them trough code without having to redo all scenes. Thanks for the insights on this, rectalogic!
     
  18. arkano22

    arkano22

    Joined:
    Sep 20, 2012
    Posts:
    1,924
    PS4 support is still in the roadmap, but frankly there's tons of other stuff to be addressed first. So no support for at least a few more months (4-5 minimum). If you're willing to help then I'll probably contact you when the time comes :)
     
  19. Newmanski_

    Newmanski_

    Joined:
    Aug 8, 2016
    Posts:
    3
    Hi Arkano, I too am having problems with the particle editor showing up on a mac with a retina screen, a work around for this if anyone would like to know, (if you don't have an external monitor or TV to hook up to), is to go here and download 'Retina DisplayMenu' it will unlock a list of resolutions that aren't normally selectable on a mac, for me switching resolution to a different ratio than the monitor size, like 1920x1080, allows the particle editor to show up. :D
     
  20. rectalogic

    rectalogic

    Joined:
    Nov 30, 2012
    Posts:
    35
    I have a cloth with self collision enabled. When it overlaps itself I get a lot of z-fighting - any way to avoid that? Can I set some interparticle repulsive force or particle radius so two sections of cloth can't go coplanar?

    Also when the cloth collides with a plane, sometimes some cloth vertices seem to pop through and poke out the other side of the plane it collided with.

    See this video for examples of both.
     
  21. arkano22

    arkano22

    Joined:
    Sep 20, 2012
    Posts:
    1,924
    Hi Rectalogic,

    If you have self-collisions enabled, just make sure the particle radius is big enough (enter particle edit mode, set the property combobox to "RADIUS" and select some particles to visualize and edit their radius) and that the amount of particle collision iterations is high enough to prevent particles penetrating each other (see your ObiSolver settings). Your cloth is entering a tangled state, and that's causing the z-fighting.

    About the plane, since particles are trying to push each other to avoid penetration, some of them are being pushed to the other side of the plane. Planes don´t have volume so if some constraint (self-collisions in this case) leaves a particle at the other side of the plane, collisions will keep it at that side (continuous collision detection, which Obi performs by default, cannot avoid this). Just use a box collider or some other collider which is at least a bit thicker so that particles have a chance to be projected outside its volume.
     
    VargaPD likes this.
  22. rectalogic

    rectalogic

    Joined:
    Nov 30, 2012
    Posts:
    35
    Thanks. I'm generating everything at runtime so not using the editors. So I think I just need to iterate solidRadii and set each entry to a larger radius.
     
  23. rectalogic

    rectalogic

    Joined:
    Nov 30, 2012
    Posts:
    35
    I can't use the particle editor at all on a retina MacBook. It doesn't show up. I put a Debug.Log of uirect in ObiParticleActorEditor.cs and the rect is way offscreen - it must be using pixels instead of points and so getting confused by the retina display? I was able to temporarily fix it by forcing x and y to 0, then it shows up in the upper left of my scene window.

    This is the patch I used:
    Code (CSharp):
    1.  
    2. diff --git a/Assets/Obi/Editor/ObiParticleActorEditor.cs b/Assets/Obi/Editor/ObiParticleActorEditor.cs
    3. index 95c968e..e4213aa 100644
    4. --- a/Assets/Obi/Editor/ObiParticleActorEditor.cs
    5. +++ b/Assets/Obi/Editor/ObiParticleActorEditor.cs
    6. @@ -249,6 +249,8 @@ namespace Obi{
    7.                 uirect = GUILayout.Window(0,uirect,DrawUIWindow,"Particle editor");
    8.                 uirect.x = Screen.width - uirect.width - 10; //10 and 28 are magic values, since Screen size is not exactly right.
    9.                 uirect.y = Screen.height - uirect.height - 28;
    10. +                uirect.x = 0;
    11. +                uirect.y = 0;
    12.             }
    13.  
    14.             GUILayout.Window(0,uirect,DrawUIWindow,"Particle editor");
    15.  
    16.  
     
  24. rectalogic

    rectalogic

    Joined:
    Nov 30, 2012
    Posts:
    35
    I had to use quite a large radius to avoid z-fighting. So large that now when the cloth collides with the floor it floats above it casting a shadow due to the size of the particles. My cloth is a unit square (1 unit by 1 unit) with 40x40 vertices, setting the radius to 0.025 and iterations to 30 avoids the z-fighting, but the cloth now floats above objects it collides with.

    If I set the radius slightly smaller to 0.02, I get z-fighting again.

    At 0.025 the particles are so large they all overlap each other - and the cloth seems to constantly flap and move possibly due to this overlap?

    Here is a video showing 0.02 vs 0.025 radius.


    I'll experiment with setting every other particle to a large radius and see if that helps.
     
  25. arkano22

    arkano22

    Joined:
    Sep 20, 2012
    Posts:
    1,924
    Hi rectalogic,

    This is a known issue with retina screens on Unity 5.x, which will be fixed in the next update. You can replace OniParticleActorEditor.cs with the one I´m attaching, it will fix it.
     

    Attached Files:

    rectalogic likes this.
  26. arkano22

    arkano22

    Joined:
    Sep 20, 2012
    Posts:
    1,924
    You can also add an ObiCollider component to the collider and set its thickness to some negative value. It will shrink the size of the collider so that particles can penetrate it further. If you set it to the exact same value as your particle radius (but negative), the cloth will touch the surface of your collider. (to be able to do this, your collider must have at least some thickness! won´t work with planes)

    About cloth particles overlapping, this will cause jittering because self collisions compete with distance constraints. In the next update, setting particle radii larger that the inter-particle distance will be possible without side effects, as particles remember their rest configuration (and use it to ignore collision with particles they were initially overlapping).
     
    rectalogic likes this.
  27. rectalogic

    rectalogic

    Joined:
    Nov 30, 2012
    Posts:
    35
    When I move an ObiParticleHandle, the controlled vertex moves but the adjacent vertices move in the opposite direction.

    cloth-03.png

    This video framesteps the movement. The cloth is flat, I move the handles, and the adjacent vertices are pushed down. Any idea what causes this?

     
  28. arkano22

    arkano22

    Joined:
    Sep 20, 2012
    Posts:
    1,924
    <hi
    Hi rectalogic,

    I cannot reproduce this. For me, all vertices start moving up the same frame. Could you send me your scene, so that I can see what's happening?

    cheers,
     
  29. OnlyVR

    OnlyVR

    Joined:
    Oct 5, 2015
    Posts:
    55
    Hi Arkano,
    Your ClothRigidbodyInteraction demo scene work great. However, when I changed the radius of the Sphere object from 0.6 to 0.5 then the sphere started going through the cloth. What settings should I change to resolve the issue? Actually I would like to see it works when the radius is like 0.1 or even smaller.

    Thanks,
    Dmitry.
     
  30. arkano22

    arkano22

    Joined:
    Sep 20, 2012
    Posts:
    1,924
    Hi Dmitry,

    You must change cloth particle radius (enter particle mode and select the "Radius" property to be able to change the radius of selected particles), and/or reduce the particle/rigidbody mass ratio. The cloth collision shape is made out of particles, one for each cloth vertex, if they are too small in relation to the size of cloth triangles, colliders will pass trough them. Also, if the rigibdody (in this case the sphere) is too heavy in relation to particles, it will push particles apart easily and slip trough them.

    Keep in mind that colliders bodies than the cloth particle size will slip trough it no matter what you do.

    cheers,
     
  31. electric_jesus

    electric_jesus

    Joined:
    Mar 8, 2015
    Posts:
    36
    Hello, @arkano22
    Is it possible to make a rope of a variable length with Obi Rope? How well does it work with very long ropes? Can it simulate a rope with length of 300 meters, that has to collide with itself and rigid bodies?
     
  32. arkano22

    arkano22

    Joined:
    Sep 20, 2012
    Posts:
    1,924
    Hi electric jesus,

    Nope, there's no support for true variable-length ropes yet. Ropes can be stretched or compressed, but that does not change the amount of particles that make up the rope. There will be support for this in the future, though. Also, making very long, thin ropes is discouraged as that puts a lot of stress in the solver and can result in stretchy ropes, unless both ends are fixed in place.

    cheers,
     
  33. electric_jesus

    electric_jesus

    Joined:
    Mar 8, 2015
    Posts:
    36
    Hi, @arkano22
    I found a strange behaviour experimenting with Obi Advanced Rope. When a rope falls down on a flat floor that is represented by a Box Collider, it works nicely. But if I try to use Terrain Collider instead of a Box Collider, rope just falls through itself. I see how its particles are still trying to collide with each other, but it's not helping.
    Increasing rope resolution does not solve this problem (and I'd prefer not to do it because it lowers the FPS critically).
    Why is this happening? How can I fix self collisions when using Obi Rope with Terrain?
     
  34. arkano22

    arkano22

    Joined:
    Sep 20, 2012
    Posts:
    1,924
    Hi electric_jesus,

    I cannot reproduce this at all. Self collisions work no matter what collider is involved in regular collisions. Can you send me a example scene that shows this issue?

    cheers,
     
  35. wetcircuit

    wetcircuit

    Joined:
    Jul 17, 2012
    Posts:
    1,409
  36. arkano22

    arkano22

    Joined:
    Sep 20, 2012
    Posts:
    1,924
    No need for additional plugins, you can just parent the rope under the desired bone of your skinned mesh and voilà. Just make sure one at least one of your rope's particles (ideally at either end of the rope) is fixed.

    In fact, there's an example scene included in ObiRope ("CharacterRopes") which does just this.
     
  37. electric_jesus

    electric_jesus

    Joined:
    Mar 8, 2015
    Posts:
    36
    @arkano22
    Here is my test project. Run the game to see that the rope is working fine when interacting with Box Collider, then disable Floor_Box and enable Floor_Terrain and run again to reproduce the bug. You can even do it during simulation. A rope will start acting wierdly when it contacts Terrain Collider.
    I tried to increase rope density and number of solver iterations but it didn't help.
    Tested with Unity 5.3.5p8 and 5.4.1p2.
    http://dropmefiles.com/jjhM1
     
    Last edited: Oct 7, 2016
  38. arkano22

    arkano22

    Joined:
    Sep 20, 2012
    Posts:
    1,924
    Thanks! I could reproduce it in your test scene. I´m not sure what the cause is, so I will track down the bug and fix it of the next update.
     
  39. FLYUPAV

    FLYUPAV

    Joined:
    Aug 1, 2013
    Posts:
    34
    Hi
    I need a script which able to select cloth's particles in run time and turn them into a cloth handler . Is it possible in OBI ? I want to have a cutting effect simulator with a knife mesh with a collider in its edge.
     
  40. arkano22

    arkano22

    Joined:
    Sep 20, 2012
    Posts:
    1,924
    Hi ymassuot,

    Yes, it is of course possible. But you´ll have to write it yourself. Take a look at ObiParticleActorEditor.cs (search for " CreateHandle" to find the relevant bits of code)to see an example of how particle handles are created at runtime in the editor. It takes about 10 lines of code.

    Also, you can use the Tear() method in ObiCloth.cs to implement any custom tearing system you might need. See the ApplyTearing() method in the same file for an example on how to tear cloth based on measured strain.
     
  41. electric_jesus

    electric_jesus

    Joined:
    Mar 8, 2015
    Posts:
    36
    @arkano22
    Is there a way to twist the rope along its main axis with Obi Rope?
    Something like this:
     
    Last edited: Oct 11, 2016
  42. arkano22

    arkano22

    Joined:
    Sep 20, 2012
    Posts:
    1,924
    Hi electric jesus,

    No, as Obi particles lack orientation. Oriented ropes (more widely known as "rods" in the simulation guild, as the "rope" name often implies lack of orientation along its main axis) are significantly more expensive to simulate, as you need to keep track of particle orientation (4x4 matrix per particle) and also coupe bending and twisting. Also they are (imho) not very useful in game development. Some articles that approach this are:

    https://www.cg.informatik.uni-mainz...ition-and-Orientation-Based-Cosserat-Rods.pdf

    http://www.nobuyuki-umetani.com/PositionBasedElasticRod/2014_sca_PositionBasedElasticRod.pdf

    I had considered adding support for them before, but found little to no motivation to do so.

    cheers!
     
  43. abatcat

    abatcat

    Joined:
    Feb 8, 2015
    Posts:
    70
    Is it possible to bake obi cloth to deal with complex cases or just to increase performance?
     
  44. arkano22

    arkano22

    Joined:
    Sep 20, 2012
    Posts:
    1,924
    Yep. Add the included ParticleBaker to a solver, create a ParticleCache asset and drag it to the particle baker. Then use the controls in the baker to record or playback the simulation.

    You can of course also use any custom caching system you'd like, by just storing particle positions at each frame.
     
    abatcat likes this.
  45. arkano22

    arkano22

    Joined:
    Sep 20, 2012
    Posts:
    1,924
    Hi guys,

    Just wanted to keep you updated on what's going on. As you know I´ve been working in Obi's core for the last few weeks, learning a lot about task-based threading and vectorization along the way. I´m quite proud of the advances so far.

    Obi's core solver is now between 3 and 4 times faster, depending on the scene and what constraints are used. Cloth benefits most, as distance and bend constraints are far faster now. Neighbor search/contact generation are also quite a bit faster, and density constraints (for fluids) are about 2 times faster.

    Here's a performance graph for the "Benchmark" cloth sample scene (the one with lots of flags), comparing Obi 2.x (asset store version), Obi 3.0 (current development version) and PhysX 3.3 (state of the art), running in a Core i5 (2 cores with hyperthreading, 4 logical cores). All parameters were set to be roughly equal performance wise for Obi and PhysX. For instance, PhysX's "solver frequency" was set to 180 (3 updates each frame at 60 fps) while all Obi's iteration counts were set to 3.



    As you can see, Obi 3.x scales just as well as PhysX and is only a few fps slower, while yielding much better quality and control. Also, I´ve written a custom profiler to be able to see what is going on in each core when running Obi, which will probably make it to the release as it can also be useful for users to know where's time being spent when tweaking constraint parameters. As you can see in the following image, all 4 cores are busy most of the time when simulating 3000 fluid particles at 105 fps:



    I really hope this next version will enable you to create more complex, demanding scenes with ease without sacrificing performance.
     
  46. dennik

    dennik

    Joined:
    Nov 23, 2011
    Posts:
    101
    I have a big issue lately. At first, when I forgot to deselect the rope and hit play, it will give me an error and halt.
    Now it just freezes unity and I can't do anything but restart it. Is there a way to resolve this in the next update? I'm sure most people forget to deselect the rope while tweaking things.
     
  47. arkano22

    arkano22

    Joined:
    Sep 20, 2012
    Posts:
    1,924
    I Dennik,

    I haven´t heard of this issue before, and I cannot reproduce it at all. For me it works fine whether I deselect the rope or not. It should´t freeze Unity in any case, at most give an error. Can you send me the editor log so that I can see what's going on?

    cheers,
     
  48. VargaPD

    VargaPD

    Joined:
    Mar 6, 2015
    Posts:
    64

    Wow! You are working so hard, this is awesome! I'm really glad that I have found Obi Cloth back in the days of beginning, the growth is incredible :)
    A question. Will Obi Cloth 3 have proxy binding for skinned meshes?
    Also, will that be possible to use multiple proxies to drive one mesh or use one proxy to drive multiple meshes? (Or is that possible now, or will be in a later version?)
    I know that I'm greedy a bit :D Sorry for bothering you, and thank you for your work again :) Obi Cloth was my first purchase in the asset store, and it's totally worth it! A musthave :)
     
  49. dennik

    dennik

    Joined:
    Nov 23, 2011
    Posts:
    101
    Sure. Here it is. (filled with errors I don't understand.. :) )
     

    Attached Files:

  50. arkano22

    arkano22

    Joined:
    Sep 20, 2012
    Posts:
    1,924
    Hi Dennik,

    No Obi related errors show up in your log. All errors are DX11 related (which by the way Obi doesn´t use at all, as it only performs physics simulation, all rendering is standard Unity stuff). The errors complain about not being able to create a render buffer or a mesh (vertex and index) buffers. Seems like you are having problems with DX11, I´d try switching to DX9 and see how it goes.

    Edit: use the -force-d3d9 command line option to boot the editor in DX9 mode.
     
    Last edited: Oct 28, 2016