Search Forums

(Advanced Search)

Latest Threads
can you remove particles ...
Forum: Obi Softbody
Last Post: aardworm
09-07-2025, 07:09 AM
» Replies: 0
» Views: 112
ObiRope Mesh Renderer
Forum: Obi Rope
Last Post: quent_1982
08-07-2025, 11:27 AM
» Replies: 4
» Views: 405
How to dynamically change...
Forum: Obi Rope
Last Post: quent_1982
08-07-2025, 06:34 AM
» Replies: 6
» Views: 552
Pipeline that bends
Forum: Obi Softbody
Last Post: josemendez
04-07-2025, 09:52 AM
» Replies: 13
» Views: 1,283
How to implement/sync Obi...
Forum: Obi Rope
Last Post: quent_1982
01-07-2025, 01:48 PM
» Replies: 2
» Views: 368
Collisions don't work con...
Forum: Obi Rope
Last Post: chenji
27-06-2025, 03:05 AM
» Replies: 3
» Views: 442
Force Zone apply differen...
Forum: Obi Rope
Last Post: chenji
26-06-2025, 11:41 AM
» Replies: 11
» Views: 1,232
Can I blend in and out of...
Forum: Obi Cloth
Last Post: josemendez
24-06-2025, 04:42 PM
» Replies: 3
» Views: 441
Using a rigidbody/collide...
Forum: Obi Cloth
Last Post: josemendez
24-06-2025, 09:29 AM
» Replies: 1
» Views: 255
Solver is too performance...
Forum: Obi Rope
Last Post: quent_1982
20-06-2025, 08:09 AM
» Replies: 40
» Views: 5,582

 
  Softbody Surface blueprint seems to fail at generation
Posted by: Snail921 - 10-08-2021, 09:27 AM - Forum: Obi Softbody - Replies (2)

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.

Quote:NullReferenceException: Object reference not set to an instance of an object
Obi.ObiActorBlueprintEditor.OnSceneGUI (UnityEditor.SceneView sceneView) (at Assets/Obi/Editor/Common/Blueprints/ObiActorBlueprintEditor.cs:314)
UnityEditor.SceneView.CallOnSceneGUI () (at <1798d6bccd2b44b2854be2fbcc2463b3>:0)
UnityEditor.SceneView.HandleSelectionAndOnSceneGUI () (at <1798d6bccd2b44b2854be2fbcc2463b3>:0)
UnityEditor.SceneView.OnGUI () (at <1798d6bccd2b44b2854be2fbcc2463b3>:0)
UnityEditor.HostView.InvokeOnGUI (UnityEngine.Rect onGUIPosition, UnityEngine.Rect viewRect) (at <1798d6bccd2b44b2854be2fbcc2463b3>:0)
UnityEditor.DockArea.DrawView (UnityEngine.Rect viewRect, UnityEngine.Rect dockAreaRect) (at <1798d6bccd2b44b2854be2fbcc2463b3>:0)
UnityEditor.DockArea.OldOnGUI () (at <1798d6bccd2b44b2854be2fbcc2463b3>:0)
UnityEngine.UIElements.IMGUIContainer.DoOnGUI (UnityEngine.Event evt, UnityEngine.Matrix4x4 parentTransform, UnityEngine.Rect clippingRect, System.Boolean isComputingLayout, UnityEngine.Rect layoutSize, System.Action onGUIHandler, System.Boolean canAffectFocus) (at <6aef74cd6e9c4a708ea4a51c97de39d4>:0)
UnityEngine.UIElements.IMGUIContainer.HandleIMGUIEvent (UnityEngine.Event e, UnityEngine.Matrix4x4 worldTransform, UnityEngine.Rect clippingRect, System.Action onGUIHandler, System.Boolean canAffectFocus) (at <6aef74cd6e9c4a708ea4a51c97de39d4>:0)
UnityEngine.UIElements.IMGUIContainer.DoIMGUIRepaint () (at <6aef74cd6e9c4a708ea4a51c97de39d4>:0)
UnityEngine.UIElements.UIR.RenderChainCommand.ExecuteNonDrawMesh (UnityEngine.UIElements.UIR.DrawParams drawParams, System.Single pixelsPerPoint, System.Exception& immediateException) (at <6aef74cd6e9c4a708ea4a51c97de39d4>:0)
Rethrow as ImmediateModeException
UnityEngine.UIElements.UIR.RenderChain.Render () (at <6aef74cd6e9c4a708ea4a51c97de39d4>:0)
UnityEngine.UIElements.UIRRepaintUpdater.Update () (at <6aef74cd6e9c4a708ea4a51c97de39d4>:0)
UnityEngine.UIElements.VisualTreeUpdater.UpdateVisualTreePhase (UnityEngine.UIElements.VisualTreeUpdatePhase phase) (at <6aef74cd6e9c4a708ea4a51c97de39d4>:0)
UnityEngine.UIElements.Panel.UpdateForRepaint () (at <6aef74cd6e9c4a708ea4a51c97de39d4>:0)
UnityEngine.UIElements.Panel.Repaint (UnityEngine.Event e) (at <6aef74cd6e9c4a708ea4a51c97de39d4>:0)
UnityEngine.UIElements.UIElementsUtility.DoDispatch (UnityEngine.UIElements.BaseVisualElementPanel panel) (at <6aef74cd6e9c4a708ea4a51c97de39d4>:0)
UnityEngine.UIElements.UIElementsUtility.UnityEngine.UIElements.IUIElementsUtility.ProcessEvent (System.Int32 instanceID, System.IntPtr nativeEventPtr, System.Boolean& eventHandled) (at <6aef74cd6e9c4a708ea4a51c97de39d4>:0)
UnityEngine.UIElements.UIEventRegistration.ProcessEvent (System.Int32 instanceID, System.IntPtr nativeEventPtr) (at <6aef74cd6e9c4a708ea4a51c97de39d4>:0)
UnityEngine.UIElements.UIEventRegistration+<>c.<.cctor>b__1_2 (System.Int32 i, System.IntPtr ptr) (at <6aef74cd6e9c4a708ea4a51c97de39d4>:0)
UnityEngine.GUIUtility.ProcessEvent (System.Int32 instanceID, System.IntPtr nativeEventPtr, System.Boolean& result) (at <9ff04fda545c4aacb8dab659ad40b2f4>:0)
UnityEditor.SceneManagement.EditorSceneManager:NewScene(NewSceneSetup)
Obi.ObiActorBlueprintEditor:EnterBlueprintEditMode() (at Assets/Obi/Editor/Common/Blueprints/ObiActorBlueprintEditor.cs:213)
UnityEditor.EditorApplication:Internal_CallDelayFunctions()
The mesh is a relatively simple mesh with 1138verts. which has been created for this experimental purpose and ported from blender.

The mesh's Read/Write setting has been checked on when it was imported to Unity.
Do you have any idea what is causing this issue?

Print this item

  Is Obi Fluid working for UI / 2D unity Projects?
Posted by: Wax2020 - 10-08-2021, 05:11 AM - Forum: Obi Fluid - Replies (1)

HI,

I got a 2D project requires a fluid simulation, and we are discussing using animations or a fluid simulation system.

Can anyone advise me that whether Obi Fluid works properly on Unity 2D projects? 

Has anyone tried it on 2D games? and is there any issues or attentions?

Thanks a lot Gran sonrisa

Print this item

Pregunta Can Obi Softbody using multiple softbody to skin same SkinnedMeshRenderer?
Posted by: obitester - 10-08-2021, 04:49 AM - Forum: Obi Softbody - Replies (1)

Can't find info in docs , so can we?

Print this item

Pregunta When will Obi Softbody support mix animation and simulation in a single vertex?
Posted by: obitester - 10-08-2021, 04:16 AM - Forum: Obi Softbody - Replies (6)

Obi Softbody docs says:

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?

Print this item

  Multiple cloth interleaving problems
Posted by: litefeel - 09-08-2021, 03:19 PM - Forum: Obi Cloth - Replies (3)

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.


Print this item

  OBI Assets do not work with Octane Render
Posted by: tcwicks - 06-08-2021, 11:40 PM - Forum: General - Replies (15)

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;

        private void ClearMeshData()
        {
            extrudedMesh.Clear();
            vertices.Clear();
            normals.Clear();
            tangents.Clear();
            uvs.Clear();
            vertColors.Clear();
            tris.Clear();
        }

        private void CommitMeshData()
        {
            extrudedMesh.SetVertices(vertices);
            extrudedMesh.SetNormals(normals);
            extrudedMesh.SetTangents(tangents);
            extrudedMesh.SetColors(vertColors);
            extrudedMesh.SetUVs(0, uvs);
            extrudedMesh.SetTriangles(tris, 0, true);
        }

Print this item

  Find out which particle group to attach with the ObiParticleAttachment
Posted by: snowtv - 06-08-2021, 07:16 PM - Forum: Obi Softbody - Replies (11)

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?

Print this item

  Rope Bridge- Connecting multiple ropes to each other
Posted by: Smokehouse_Joe - 06-08-2021, 01:21 AM - Forum: Obi Rope - Replies (1)

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

Print this item

Triste "Max Distance" like Unity Cloth?
Posted by: DOSUKOIMURA - 05-08-2021, 09:17 PM - Forum: Obi Cloth - Replies (2)

In Unity Cloth, there is "Max Distance" constraints. 
And it can weight paint per vertex.

I wanna do the same thing in Obi Cloth(not in Obi Skinned Cloth), but I could not figure out how to do... Huh


Help me...!!

Print this item

  Collision detection with particles (strange behaviour)
Posted by: immrkuby - 05-08-2021, 09:09 PM - Forum: Obi Rope - Replies (2)

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(particleIndex);        
                }
            }
        }
    }

Code:
public void TearRope(int particleIndex)
        {
        this.GetComponent<RopeBehaviour>().enabled = false;

        if (this.didTear == false)
        {
            BusSystem.CallOnRopeToreApart(this.endParticle.target.GetComponent<FuelLineEndController>());
            StartCoroutine(DestroyRope());
                        this.rope.stretchingScale = 1f;
                        this.endParticle.attachmentType = ObiParticleAttachment.AttachmentType.Dynamic;
                        this.endParticle.target = this.rope.transform;
                        this.startParticle.attachmentType = ObiParticleAttachment.AttachmentType.Dynamic;
                        this.startParticle.target = this.rope.transform;

                        this.didTear = true;
        }

        this.TearAtIndex(particleIndex);
    }

void TearAtIndex(int index)
    {
        Debug.Log(index);

        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  Sonrisa

Thank you !

I think I solved it Gran sonrisa. Just changed parameter "particleIndex" to "this.solver.particleToActor[particleIndex].indexInActor"  Sonrisa I think I solved it Gran sonrisa. 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); ;
                }
            }
        }
    }



Attached Files Thumbnail(s)
       
Print this item