Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Help  Crashes when invMasses is set to zero
#1
Please excuse my English!

I need to stop the fluid from moving (I don't want it to flow any more).
I stop the movement of the fluid by doing the following



Code:
for (int i = 0; i < emitter.solverIndices.Length; ++i){
            int solverIndex = emitter.solverIndices[i];
            float invMass = emitter.solver.invMasses[solverIndex];
            emitter.solver.invMasses[solverIndex] = 0;
}





However, when I run this code, the fluid display disappears and a crash occurs.

The error is as follows

What are the possible causes?



Code:
Converting invalid MinMaxAABB
UnityEngine.Mesh:SetVertices (System.Collections.Generic.List`1<UnityEngine.Vector3>)
Obi.ParticleImpostorRendering:Apply (UnityEngine.Mesh) (at Assets/Obi/Scripts/Common/Rendering/ParticleImpostorRendering.cs:39)
Obi.ParticleImpostorRendering:UpdateMeshes (Obi.IObiParticleCollection) (at Assets/Obi/Scripts/Common/Rendering/ParticleImpostorRendering.cs:150)
Obi.ObiParticleRenderer:DrawParticles (Obi.ObiActor) (at Assets/Obi/Scripts/Common/Rendering/ObiParticleRenderer.cs:80)
Obi.ObiActor:Interpolate () (at Assets/Obi/Scripts/Common/Actors/ObiActor.cs:1189)
Obi.ObiSolver:Interpolate (single,single) (at Assets/Obi/Scripts/Common/Solver/ObiSolver.cs:1622)
Obi.ObiUpdater:Interpolate (single,single) (at Assets/Obi/Scripts/Common/Updaters/ObiUpdater.cs:110)
Obi.ObiFixedUpdater:Update () (at Assets/Obi/Scripts/Common/Updaters/ObiFixedUpdater.cs:62)

Mesh 'Particle impostors': abnormal mesh bounds - most likely it has some invalid vertices (+/-inifinity or NANs) due to errors exporting.
Mesh bounds min=(nan, nan, nan), max=(nan, nan, nan). Please make sure the mesh is exported without any errors.
UnityEngine.GUIUtility:ProcessEvent (int,intptr,bool&)



And I saw in another thread that you also need the following code to stop the fluid.

It seems that solver does not have UpdateParameters in the current version.



Code:
emitter.solver.distanceConstraintParameters.enabled = false;
emitter.solver.UpdateParameters();
Reply
#2
(23-04-2021, 10:55 AM)momns Wrote: Please excuse my English!

I need to stop the fluid from moving (I don't want it to flow any more).
I stop the movement of the fluid by doing the following



Code:
for (int i = 0; i < emitter.solverIndices.Length; ++i){
            int solverIndex = emitter.solverIndices[i];
            float invMass = emitter.solver.invMasses[solverIndex];
            emitter.solver.invMasses[solverIndex] = 0;
}





However, when I run this code, the fluid display disappears and a crash occurs.

The error is as follows

What are the possible causes?



Code:
Converting invalid MinMaxAABB
UnityEngine.Mesh:SetVertices (System.Collections.Generic.List`1<UnityEngine.Vector3>)
Obi.ParticleImpostorRendering:Apply (UnityEngine.Mesh) (at Assets/Obi/Scripts/Common/Rendering/ParticleImpostorRendering.cs:39)
Obi.ParticleImpostorRendering:UpdateMeshes (Obi.IObiParticleCollection) (at Assets/Obi/Scripts/Common/Rendering/ParticleImpostorRendering.cs:150)
Obi.ObiParticleRenderer:DrawParticles (Obi.ObiActor) (at Assets/Obi/Scripts/Common/Rendering/ObiParticleRenderer.cs:80)
Obi.ObiActor:Interpolate () (at Assets/Obi/Scripts/Common/Actors/ObiActor.cs:1189)
Obi.ObiSolver:Interpolate (single,single) (at Assets/Obi/Scripts/Common/Solver/ObiSolver.cs:1622)
Obi.ObiUpdater:Interpolate (single,single) (at Assets/Obi/Scripts/Common/Updaters/ObiUpdater.cs:110)
Obi.ObiFixedUpdater:Update () (at Assets/Obi/Scripts/Common/Updaters/ObiFixedUpdater.cs:62)

Mesh 'Particle impostors': abnormal mesh bounds - most likely it has some invalid vertices (+/-inifinity or NANs) due to errors exporting.
Mesh bounds min=(nan, nan, nan), max=(nan, nan, nan). Please make sure the mesh is exported without any errors.
UnityEngine.GUIUtility:ProcessEvent (int,intptr,bool&)



And I saw in another thread that you also need the following code to stop the fluid.

It seems that solver does not have UpdateParameters in the current version.



Code:
emitter.solver.distanceConstraintParameters.enabled = false;
emitter.solver.UpdateParameters();

Hi there,

Setting the inverse mass to zero (that is, infinite mass) on a fluid would causes infinite pressure to be applied. Obi check for this and freezes the particle in place, it shouldn't crash though. Can you share the editor crash log?

The proper way to do this is to convert the particle to a granular before giving it infinite mass. See:
http://obi.virtualmethodstudio.com/forum...-2849.html
Reply
#3
(23-04-2021, 11:03 AM)josemendez Wrote: Hi there,

Setting the inverse mass to zero (that is, infinite mass) on a fluid would causes infinite pressure to be applied. Obi check for this and freezes the particle in place, it shouldn't crash though. Can you share the editor crash log?

The proper way to do this is to convert the particle to a granular before giving it infinite mass. See:
http://obi.virtualmethodstudio.com/forum...-2849.html

Thank you for your very quick reply, I appreciate it.
I'll share the Editor.log with you, it contains excerpts from just before and after the crash.

Quote:Converting invalid MinMaxAABB
UnityEngine.StackTraceUtility:ExtractStackTrace () (at /Users/bokken/buildslave/unity/build/Runtime/Export/Scripting/StackTrace.cs:37)
UnityEngine.Mesh:SetSizedArrayForChannel (UnityEngine.Rendering.VertexAttribute,UnityEngine.Rendering.VertexAttributeFormat,int,System.Array,int,int,int,UnityEngine.Rendering.MeshUpdateFlags) (at /Users/bokken/buildslave/unity/build/Runtime/Export/Graphics/Mesh.cs:71)
UnityEngine.Mesh:SetListForChannel<UnityEngine.Vector3> (UnityEngine.Rendering.VertexAttribute,System.Collections.Generic.List`1<UnityEngine.Vector3>,int,int,UnityEngine.Rendering.MeshUpdateFlags) (at /Users/bokken/buildslave/unity/build/Runtime/Export/Graphics/Mesh.cs:114)
UnityEngine.Mesh:SetVertices (System.Collections.Generic.List`1<UnityEngine.Vector3>,int,int,UnityEngine.Rendering.MeshUpdateFlags) (at /Users/bokken/buildslave/unity/build/Runtime/Export/Graphics/Mesh.cs:225)
UnityEngine.Mesh:SetVertices (System.Collections.Generic.List`1<UnityEngine.Vector3>,int,int) (at /Users/bokken/buildslave/unity/build/Runtime/Export/Graphics/Mesh.cs:220)
UnityEngine.Mesh:SetVertices (System.Collections.Generic.List`1<UnityEngine.Vector3>) (at /Users/bokken/buildslave/unity/build/Runtime/Export/Graphics/Mesh.cs:215)
Obi.ParticleImpostorRendering:Apply (UnityEngine.Mesh) (at Assets/Obi/Scripts/Common/Rendering/ParticleImpostorRendering.cs:39)
Obi.ParticleImpostorRendering:UpdateMeshes (Obi.IObiParticleCollection) (at Assets/Obi/Scripts/Common/Rendering/ParticleImpostorRendering.cs:150)
Obi.ObiParticleRendererGran sonrisarawParticles (Obi.ObiActor) (at Assets/Obi/Scripts/Common/Rendering/ObiParticleRenderer.cs:80)
Obi.ObiActor:Interpolate () (at Assets/Obi/Scripts/Common/Actors/ObiActor.cs:1189)
Obi.ObiSolver:Interpolate (single,single) (at Assets/Obi/Scripts/Common/Solver/ObiSolver.cs:1622)
Obi.ObiUpdater:Interpolate (single,single) (at Assets/Obi/Scripts/Common/Updaters/ObiUpdater.cs:110)
Obi.ObiFixedUpdater:Update () (at Assets/Obi/Scripts/Common/Updaters/ObiFixedUpdater.cs:62)

[Assets/Obi/Scripts/Common/Rendering/ParticleImpostorRendering.cs line 39]

Converting invalid MinMaxAABB
UnityEngine.StackTraceUtility:ExtractStackTrace () (at /Users/bokken/buildslave/unity/build/Runtime/Export/Scripting/StackTrace.cs:37)
UnityEngine.Mesh:SetTrianglesImpl (int,UnityEngine.Rendering.IndexFormat,System.Array,int,int,int,bool,int) (at /Users/bokken/buildslave/unity/build/Runtime/Export/Graphics/Mesh.cs:942)
UnityEngine.Mesh:SetTriangles (System.Collections.Generic.List`1<int>,int,int,int,bool,int) (at /Users/bokken/buildslave/unity/build/Runtime/Export/Graphics/Mesh.cs:1003)
UnityEngine.Mesh:SetTriangles (System.Collections.Generic.List`1<int>,int,bool,int) (at /Users/bokken/buildslave/unity/build/Runtime/Export/Graphics/Mesh.cs:997)
UnityEngine.Mesh:SetTriangles (System.Collections.Generic.List`1<int>,int,bool) (at /Users/bokken/buildslave/unity/build/Runtime/Export/Graphics/Mesh.cs:992)
Obi.ParticleImpostorRendering:Apply (UnityEngine.Mesh) (at Assets/Obi/Scripts/Common/Rendering/ParticleImpostorRendering.cs:45)
Obi.ParticleImpostorRendering:UpdateMeshes (Obi.IObiParticleCollection) (at Assets/Obi/Scripts/Common/Rendering/ParticleImpostorRendering.cs:150)
Obi.ObiParticleRendererGran sonrisarawParticles (Obi.ObiActor) (at Assets/Obi/Scripts/Common/Rendering/ObiParticleRenderer.cs:80)
Obi.ObiActor:Interpolate () (at Assets/Obi/Scripts/Common/Actors/ObiActor.cs:1189)
Obi.ObiSolver:Interpolate (single,single) (at Assets/Obi/Scripts/Common/Solver/ObiSolver.cs:1622)
Obi.ObiUpdater:Interpolate (single,single) (at Assets/Obi/Scripts/Common/Updaters/ObiUpdater.cs:110)
Obi.ObiFixedUpdater:Update () (at Assets/Obi/Scripts/Common/Updaters/ObiFixedUpdater.cs:62)

[Assets/Obi/Scripts/Common/Rendering/ParticleImpostorRendering.cs line 45]

Mesh 'Particle impostors': abnormal mesh bounds - most likely it has some invalid vertices (+/-inifinity or NANs) due to errors exporting.
Mesh bounds min=(nan, nan, nan), max=(nan, nan, nan). Please make sure the mesh is exported without any errors.
UnityEngine.StackTraceUtility:ExtractStackTrace () (at /Users/bokken/buildslave/unity/build/Runtime/Export/Scripting/StackTrace.cs:37)
UnityEditor.EditorGUIUtility:RenderPlayModeViewCamerasInternal (UnityEngine.RenderTexture,int,UnityEngine.Vector2,bool,bool)
UnityEditor.PlayModeView:RenderView (UnityEngine.Vector2,bool) (at /Users/bokken/buildslave/unity/build/Editor/Mono/PlayModeView/PlayModeView.cs:176)
UnityEditor.GameView:OnGUI () (at /Users/bokken/buildslave/unity/build/Editor/Mono/GameView/GameView.cs:859)
UnityEditor.HostView:InvokeOnGUI (UnityEngine.Rect,UnityEngine.Rect) (at /Users/bokken/buildslave/unity/build/Editor/Mono/HostView.cs:403)
UnityEditor.DockAreaGran sonrisarawView (UnityEngine.Rect,UnityEngine.Rect) (at /Users/bokken/buildslave/unity/build/Editor/Mono/GUI/DockArea.cs:382)
UnityEditor.DockArea:OldOnGUI () (at /Users/bokken/buildslave/unity/build/Editor/Mono/GUI/DockArea.cs:372)
UnityEngine.UIElements.IMGUIContainerGran sonrisaoOnGUI (UnityEngine.Event,UnityEngine.Matrix4x4,UnityEngine.Rect,bool,UnityEngine.Rect,System.Action,bool) (at /Users/bokken/buildslave/unity/build/External/MirroredPackageSources/com.unity.ui/Core/IMGUIContainer.cs:333)
UnityEngine.UIElements.IMGUIContainer:HandleIMGUIEvent (UnityEngine.Event,UnityEngine.Matrix4x4,UnityEngine.Rect,System.Action,bool) (at /Users/bokken/buildslave/unity/build/External/MirroredPackageSources/com.unity.ui/Core/IMGUIContainer.cs:663)
UnityEngine.UIElements.IMGUIContainerGran sonrisaoIMGUIRepaint () (at /Users/bokken/buildslave/unity/build/External/MirroredPackageSources/com.unity.ui/Core/IMGUIContainer.cs:530)
UnityEngine.UIElements.UIR.RenderChainCommand:ExecuteNonDrawMesh (UnityEngine.UIElements.UIR.DrawParams,single,System.Exception&) (at /Users/bokken/buildslave/unity/build/External/MirroredPackageSources/com.unity.ui/Core/Renderer/UIRenderer/UIRenderers.cs:114)
UnityEngine.UIElements.UIR.UIRenderDevice:EvaluateChain (UnityEngine.UIElements.UIR.RenderChainCommand,UnityEngine.Material,UnityEngine.Material,UnityEngine.Texture,UnityEngine.Texture,UnityEngine.Texture,single,Unity.Collections.NativeSlice`1<UnityEngine.UIElements.UIR.Transform3x4>,Unity.Collections.NativeSlice`1<UnityEngine.Vector4>,UnityEngine.MaterialPropertyBlock,bool,System.Exception&) (at /Users/bokken/buildslave/unity/build/External/MirroredPackageSources/com.unity.ui/Core/Renderer/UIRenderer/UIRenderDevice.cs:816)
UnityEngine.UIElements.UIR.RenderChain:Render () (at /Users/bokken/buildslave/unity/build/External/MirroredPackageSources/com.unity.ui/Core/Renderer/UIRChainBuilder.cs:490)
UnityEngine.UIElements.UIRRepaintUpdater:Update () (at /Users/bokken/buildslave/unity/build/External/MirroredPackageSources/com.unity.ui/Core/Renderer/UIRRepaintUpdater.cs:62)
UnityEngine.UIElements.VisualTreeUpdater:UpdateVisualTreePhase (UnityEngine.UIElements.VisualTreeUpdatePhase) (at /Users/bokken/buildslave/unity/build/External/MirroredPackageSources/com.unity.ui/Core/VisualTreeUpdater.cs:83)
UnityEngine.UIElements.Panel:UpdateForRepaint () (at /Users/bokken/buildslave/unity/build/External/MirroredPackageSources/com.unity.ui/Core/Panel.cs:829)
UnityEngine.UIElements.Panel:Repaint (UnityEngine.Event) (at /Users/bokken/buildslave/unity/build/External/MirroredPackageSources/com.unity.ui/Core/Panel.cs:865)
UnityEngine.UIElements.UIElementsUtilityGran sonrisaoDispatch (UnityEngine.UIElements.BaseVisualElementPanel) (at /Users/bokken/buildslave/unity/build/External/MirroredPackageSources/com.unity.ui/Core/UIElementsUtility.cs:441)
UnityEngine.UIElements.UIElementsUtility:UnityEngine.UIElements.IUIElementsUtility.ProcessEvent (int,intptr,bool&) (at /Users/bokken/buildslave/unity/build/External/MirroredPackageSources/com.unity.ui/Core/UIElementsUtility.cs:209)
UnityEngine.UIElements.UIEventRegistrationLenguarocessEvent (int,intptr) (at /Users/bokken/buildslave/unity/build/External/MirroredPackageSources/com.unity.ui/Core/UIElementsUtility.cs:74)
UnityEngine.UIElements.UIEventRegistration/<>c:<.cctor>b__1_2 (int,intptr) (at /Users/bokken/buildslave/unity/build/External/MirroredPackageSources/com.unity.ui/Core/UIElementsUtility.cs:28)
UnityEngine.GUIUtilityLenguarocessEvent (int,intptr,bool&) (at /Users/bokken/buildslave/unity/build/Modules/IMGUI/GUIUtility.cs:189)

[/Users/bokken/buildslave/unity/build/Runtime/Export/Scripting/StackTrace.cs line 37]

I also tried converting the particles to granular, but the crash still occurred.
Code:
for (int i = 0; i < emitter.solverIndices.Length; ++i){
int solverIndex = emitter.solverIndices[i];
emitter.solver.phases[solverIndex] &= (int)(~Oni.ParticleFlags.Fluid);
emitter.solver.invMasses[solverIndex] = 0;
}
Reply
#4
(24-04-2021, 11:13 AM)momns Wrote: Thank you for your very quick reply, I appreciate it.
I'll share the Editor.log with you, it contains excerpts from just before and after the crash.


I also tried converting the particles to granular, but the crash still occurred.
Code:
for (int i = 0; i < emitter.solverIndices.Length; ++i){
int solverIndex = emitter.solverIndices[i];
emitter.solver.phases[solverIndex] &= (int)(~Oni.ParticleFlags.Fluid);
emitter.solver.invMasses[solverIndex] = 0;
}

Hi there,

Just tried the same code, but I'm unable to reproduce the bug. This works correctly for me.

Would it be possible for you to share the scene that causes this issue? You can send it to support(at)virtualmethodstudio.com.
Reply
#5
(27-04-2021, 07:14 AM)josemendez Wrote: Hi there,

Just tried the same code, but I'm unable to reproduce the bug. This works correctly for me.

Would it be possible for you to share the scene that causes this issue? You can send it to support(at)virtualmethodstudio.com.

Thanks for trying the same code!!! Thank you very much!!!
I'll try to share something that can reproduce the crash. Please wait for a while.
Reply