Hi,
When I try to generate and edit a softbody surface blueprint by following the procedure explained here, obi seems to fail to generate valid data for the softbody surface blueprint.
I feed my mesh to a newly created blueprint and hit generate. Right after the generation, nothing happens but when I hit edit button, I get an error as bellow.
Note that currently, you cannot mix animation and simulation in a single vertex, unlike you can in ObiCloth. Vertices in a softbody character are either driven by animation, or driven by simulation, not both.
So i want to know did Obi have plan for doing this? when Obi will develop this or release this function?
Hi. I'm a newbie for Obi Cloth.
The Obi Cloth is cool and powerful.
Now. I have a problem.
My model has multiple pieces of cloth, When I add a wind, they will be intersect. Like below.
How can we separate them.
I'm using Octane paid version however you can just as easily reproduce this with the free version of Octane Render from the Unity Asset Store.
Simply install Octane Free version and add a PBR render target to the sample scene. The press render and next hit play.
In the screenshots below I've shown the game window on the left and the Octane rendered version on the right. (I would have attached higher res screenshots but your 100K file size limit prevents me)
I've tried reaching out to Octane customer support but their response was that they cannot support the particle render methods which OBI use. Which if you look at it from their point of view I do understand. It would not be feasible for them to try to support every asset on the asset store Their response is below copied verbatim:
Quote:Taking a look into the plugins, it appears that they do not use standard Unity geometry (the Obi rope specifically uses a unique type of particle to achieve it's end result).
It is worth noting that Unity is primarily designed to work with native Unity elements, as well as widely used external elements (i.e. fbx, obj, etc). Certain things, such as billboards. UI elements, and particles, cannot be rendered with OctaneRender.
Third Party/Custom made elements may or may not work with Octane - unfortunately it would not be feasible for us to account for all cases of third-party mesh/material/shader types beyond the well-known and widely used, though some who manage to stay sufficiently close to native Unity implementation may innately work (one example was "SpeedTree") - even in those cases we cannot assure ongoing support for positive cases, as their development roadmaps and workflow are beyond our control.
Making changes and improvements to improve upon these third-party limitations may still be possible to implement on our end, but these may require extensive refactoring or at least a long investigation period. We are always open to feedback, and may consider making a focused efforts into certain third party cases based on popular demand.
Would it be possible to build support for Octane. The reason I ask is because Unity HDRP path tracing which although it is a decent ray tracer does not have a denoiser and unless you flood every scene with full lighting from all directions it is not possible to get decent renders out of it. Which means for the short film production path using Unity Octane is pretty much the only choice.
From this point of view what I'm looking for is: Do your plugins have a hook / method where we can extract the final geometry and spin up a custom mesh based on that instead of the particle render. I know this is expensive but the animation pipeline does NOT need realtime. As a matter of fact rendering one frame in Octane can easily take a minute or two so the overhead of custom mesh generation is really not a big deal.
Also OBI is the best and probably only Rope, Cloth and Soft Body engine for Unity.
Actually I just checked the code in OBI
You do not seem to be using a particle renderer. The response from Octane support seems to be just a fob off cause they maybe can't be bothered producing a complete product for Unity.
Am I reading this right ? based on the following code you are merely modifying a standard mesh at runtime.
Code:
[HideInInspector] [NonSerialized] public Mesh extrudedMesh;
Trying to attach specific particle to another object, but looks like it's only possible to attach a particle group to an object?
So I'm assuming that a particle can be included by multiple groups, so how do I know which group is the most accurate representation of the target particle?
I'm in Unity 2021 and trying to create a rope bridge with two lower ropes with board planks across them and two upper ropes for your typical hand hold.
I'm having great difficulty creating the ropes that connect the upper ropes to the lower ropes... I've tried obi stitcher and obi particle attachment using a dummy blocks top on the top and bottom ropes to join the 3 ropes together...
Nothing seems to work can you please create a demo that shows how to join 3 ropes to each other... something like the picture below or please explain how to do that... the current samples that come with obi ropes does not have any ropes tied/stitched to each other as an example...
I would appreciate any help... this has been frustrating me for several days now...
private void Solver_OnCollision(ObiSolver s, ObiSolver.ObiCollisionEventArgs e)
{
var world = ObiColliderWorld.GetInstance();
foreach (Oni.Contact contact in e.contacts)
{
// this one is an actual collision:
if (contact.distance < 0.025f)
{
ObiColliderBase col = world.colliderHandles[contact.bodyB].owner;
if (col != null && col.gameObject.layer==LayerMask.NameToLayer("CarFrontCollider"))
{
// get the index of the particle involved in the contact:
int particleIndex = solver.simplices[contact.bodyA];
ObiRope contactedRope = solver.particleToActor[particleIndex].actor as ObiRope;
contactedRope.GetComponent<SpecificRopeTearer>().TearRope(particleIndex);
}
}
}
}
Code:
public void TearRope(int particleIndex)
{
this.GetComponent<RopeBehaviour>().enabled = false;
if (index < rope.elements.Count)
{
this.rope.Tear(rope.elements[index]);
}
this.rope.RebuildConstraintsFromElements();
}
Hi ! I am working on a project and using ObiRope. I have problem with detecting collision with particles. I read documents and tried to use them as best as I can.
I need to know which particle collided with a object that has specific layer. And I want to tear the rope at collided particles. Here is some screenshots for explaining it better. At right (teared rope) image behaviour acts like I want. But after I spawn new ropes it doesn't work. When I am Debug.Log the shown indexes are beyond existing particle count (I may be wrong in here.).
If you need any additional info please tell me, I don't want to scare people with a long post
Thank you !
I think I solved it . Just changed parameter "particleIndex" to "this.solver.particleToActor[particleIndex].indexInActor" I think I solved it . Still don't have idea why it didn't work.
Code:
private void Solver_OnCollision(ObiSolver s, ObiSolver.ObiCollisionEventArgs e)
{
var world = ObiColliderWorld.GetInstance();
foreach (Oni.Contact contact in e.contacts)
{
// this one is an actual collision:
if (contact.distance < 0.025f)
{
ObiColliderBase col = world.colliderHandles[contact.bodyB].owner;
if (col != null && col.gameObject.layer==LayerMask.NameToLayer("CarFrontCollider"))
{
// get the index of the particle involved in the contact:
int particleIndex = solver.simplices[contact.bodyA];
ObiRope contactedRope = solver.particleToActor[particleIndex].actor as ObiRope;
contactedRope.GetComponent<SpecificRopeTearer>().TearRope(this.solver.particleToActor[particleIndex].indexInActor); ;
}
}
}
}