Latest Threads |
Stretching verts uniforml...
Forum: Obi Softbody
Last Post: Aroosh
13-09-2025, 05:32 AM
» Replies: 0
» Views: 105
|
Scripting rod forces
Forum: Obi Rope
Last Post: chenji
11-09-2025, 01:15 PM
» Replies: 25
» Views: 2,865
|
Burst error causing crash...
Forum: Obi Rope
Last Post: josemendez
10-09-2025, 07:03 AM
» Replies: 1
» Views: 225
|
Controlling speed of emit...
Forum: Obi Fluid
Last Post: josemendez
06-09-2025, 06:29 AM
» Replies: 1
» Views: 488
|
Looks nice on editor but ...
Forum: Obi Fluid
Last Post: josemendez
04-09-2025, 07:20 AM
» Replies: 3
» Views: 728
|
How to Shorten or Scale t...
Forum: Obi Rope
Last Post: josemendez
02-09-2025, 09:53 AM
» Replies: 5
» Views: 806
|
The Limitation of Using O...
Forum: Obi Rope
Last Post: josemendez
01-09-2025, 10:30 PM
» Replies: 1
» Views: 548
|
Bug Where a Straight Segm...
Forum: Obi Rope
Last Post: josemendez
01-09-2025, 08:46 PM
» Replies: 1
» Views: 519
|
Having an issue with obi ...
Forum: Obi Rope
Last Post: Ben_bionic
29-08-2025, 04:23 PM
» Replies: 4
» Views: 1,016
|
Non-uniform particle dist...
Forum: Obi Rope
Last Post: chenji
29-08-2025, 09:05 AM
» Replies: 4
» Views: 866
|
|
|
Obi Fluid for 3D paint |
Posted by: sanyam - 14-09-2020, 08:15 AM - Forum: Obi Fluid
- Replies (3)
|
 |
Hi,
I want to paint on a canvas. It will be 3D and there shall be gravity acting on the paint fluid as well. Do you think Obi Fluid can do the job for this particular task?
|
|
|
ObiParticleAttachment not working after disable -> enable solver object |
Posted by: hungseparate - 11-09-2020, 05:50 PM - Forum: Obi Rope
- Replies (1)
|
 |
I have a simple rope like this :
- Solver
- Rope
- Gameobject A -> is kinematic
- Gameobject B -> is dynamic
Rope have 2 attachments, static with A and dynamic with B.
In my game, i tried to hide any rope that out of screen to get some fps, so i disabled solver gameobject, when ienable it again, B drop to the ground like it doesn't have any attachment with the Rope, while A still working fine (may be because it is kinematic)
As i checked, both attachment still enable, nothing change.
Is there something wrong with my implement ? do you have any suggest for this case ?
|
|
|
Doesn't work in Unity 2020.1.41f |
Posted by: quakeulf - 10-09-2020, 11:19 PM - Forum: Obi Softbody
- Replies (14)
|
 |
Observe findings in Twitter-post here:
https://twitter.com/Colonthreee/status/1...0532858882
Doesn't matter what I do, I always get:
Code: InvalidOperationException: The previously scheduled job ApplyCollisionConstraintsBatchJob writes to the UNKNOWN_OBJECT_TYPE ApplyCollisionConstraintsBatchJob.positions. You are trying to schedule a new job InterpolationJob, which reads from the same UNKNOWN_OBJECT_TYPE (via InterpolationJob.positions). To guarantee safety, you must include ApplyCollisionConstraintsBatchJob as a dependency of the newly scheduled job.
Unity.Jobs.LowLevel.Unsafe.JobsUtility.ScheduleParallelFor (Unity.Jobs.LowLevel.Unsafe.JobsUtility+JobScheduleParameters& parameters, System.Int32 arrayLength, System.Int32 innerloopBatchCount) (at <e8645a79b0794e0e9a2b5bbff081b88a>:0)
Unity.Jobs.IJobParallelForExtensions.Schedule[T] (T jobData, System.Int32 arrayLength, System.Int32 innerloopBatchCount, Unity.Jobs.JobHandle dependsOn) (at <e8645a79b0794e0e9a2b5bbff081b88a>:0)
Obi.BurstSolverImpl.ApplyInterpolation (Obi.ObiNativeVector4List startPositions, Obi.ObiNativeQuaternionList startOrientations, System.Single stepTime, System.Single unsimulatedTime) (at Assets/Obi/Scripts/Common/Backends/Burst/Solver/BurstSolverImpl.cs:935)
Platform is PC standalone.
|
|
|
Is the softbody asset a good choice for modelling a soccer ball? [Answered] |
Posted by: adscott1982 - 10-09-2020, 10:20 PM - Forum: Obi Softbody
- Replies (5)
|
 |
I have been struggling in my soccer game to accurately model the physics of a soccer ball.
Unfortunately the physics for a sphere object that come with Unity don't model the ball accurately enough. There is only a very tiny contact point on the sphere collider when it comes into contact with another collider. This means that if there is any spin on the ball, or it hits a surface hard, the physics don't behave anywhere near accurately.
So the solution would be to use softbody physics for the ball. This would mean when it bounces with another collider the ball would deform slightly pressing more contact points against the other collider. Hence if the ball was spinning, if it bounced harder there would be a greater effect on the ball, than if it bounced more lightly.
However in the videos I have looked at for Obi, I cannot see any sphere examples with the rigidity that you would see in a soccer ball. In most cases it would only deform very slightly, only deforming to a larger extent when hit very hard.
From everything I have seen Obi looks incredibly well made, so it would probably be OK - I just want to know beforehand if possible before I pay on the Asset Store.
See a video below for a soccer ball being kicked very hard in slow motion, and see how limited the deformation is, and how quickly it returns to its normal shape. This is the kind of rigidity I am trying to model.
If you look at this video, the deformation when kicked is barely noticeable.
https://youtu.be/mbo2_h1mAG8
Final thing, I am not trying to have a 'simulation' level of accuracy here, just enough that for the most part the football appears to be behaving as expected. The game I am making is a fun party game, not a AAA FIFA competitor.
|
|
|
Everything appears pink after setting the ObiFluidRendererFeature to the pipeline |
Posted by: qwzzz - 10-09-2020, 08:30 AM - Forum: Obi Fluid
- Replies (9)
|
 |
Hi All,
Just bought obi fluid 5.5, tried to follow steps to enable for URP
But everything appears pink after setting ObiFluidRendererFeature to my pipeline's renderer feature list
& also this shader error:
Code: Shader error in 'Obi/URP/Fluid/FluidShading': undeclared identifier '_FluidSurface' at Assets/3rd Party Assets/Obi/Resources/ObiMaterials/URP/ObiFluidsURP.cginc(47) (on d3d11)
Compiling Vertex program with FLUID_LIGHTING FLUID_REFLECTION
Platform defines: UNITY_ENABLE_REFLECTION_BUFFERS UNITY_USE_DITHER_MASK_FOR_ALPHABLENDED_SHADOWS UNITY_PBS_USE_BRDF1 UNITY_SPECCUBE_BOX_PROJECTION UNITY_SPECCUBE_BLENDING UNITY_ENABLE_DETAIL_NORMALMAP SHADER_API_DESKTOP UNITY_LIGHT_PROBE_PROXY_VOLUME UNITY_LIGHTMAP_RGBM_ENCODING
Unity Version: 2019.3.15f1
URP: 7.4.3
Building for Oculus Quest
Please Advise
|
|
|
Copying SkinnedClothBluerint properties to a new generated one |
Posted by: nexar - 08-09-2020, 10:32 PM - Forum: Obi Cloth
- No Replies
|
 |
Hello José,
Again, we are very grateful for your help, because thanks to that we have almost ready the project.
But, we have this problem:
We are working with SkinnedCloth, and we need to copy all the properties seted on the original SkinnedClothBlueprint to a new SkinnedClothBlueprint that we generate by code, considering as inputmesh a bakedmesh of the same original mesh with applied blendshapes.
To copy all the properties of the reference SkinnedClothBlueprint to the new one (except the positions, rotations, and speeds), we have done this:
Code: public void BP_Process()
{
StartCoroutine(CopySkinnedClothBlueprint());
}
public IEnumerator CopySkinnedClothBlueprint()
{
skinnedBlueprintFinal = ScriptableObject.CreateInstance<ObiSkinnedClothBlueprint>();
// Creating a baked mesh with Blendshapes applied
bakedMesh = new Mesh();
meshReferencia.BakeMesh(bakedMesh);
AssetDatabase.CreateAsset(bakedMesh, "Assets/SkinnedClothBakedMesh.asset");
AssetDatabase.SaveAssets();
skinnedBlueprintFinal.inputMesh = bakedMesh;
yield return skinnedBlueprintFinal.Generate();
// Copying particles (except positions, rotations, and velocities)
for (int i = 0; i < skinnedBlueprintFinal.particleCount; ++i)
{
skinnedBlueprintFinal.invMasses[i] = skinnedBlueprintReferencia.invMasses[i];
skinnedBlueprintFinal.principalRadii[i] = skinnedBlueprintReferencia.principalRadii[i];
skinnedBlueprintFinal.phases[i] = skinnedBlueprintReferencia.phases[i];
skinnedBlueprintFinal.colors[i] = skinnedBlueprintReferencia.colors[i];
}
////// BEGIN COPYING CONSTRAINTS
// Distance
for (int i = 0; i < skinnedBlueprintFinal.distanceConstraintsData.batches.Count; ++i)
{
var batch = skinnedBlueprintFinal.distanceConstraintsData.batches[i];
var sourceBatch = skinnedBlueprintReferencia.distanceConstraintsData.batches[i];
for (int j = 0; j < batch.restLengths.count; ++j)
batch.restLengths[j] = sourceBatch.restLengths[j];
for (int j = 0; j < batch.stiffnesses.count; ++j)
batch.stiffnesses[j] = sourceBatch.stiffnesses[j];
}
// Bend:
for (int i = 0; i < skinnedBlueprintFinal.bendConstraintsData.batches.Count; ++i)
{
var batch = skinnedBlueprintFinal.bendConstraintsData.batches[i];
var sourceBatch = skinnedBlueprintReferencia.bendConstraintsData.batches[i];
for (int j = 0; j < batch.restBends.count; ++j)
batch.restBends[j] = sourceBatch.restBends[j];
for (int j = 0; j < batch.bendingStiffnesses.count; ++j)
batch.bendingStiffnesses[j] = sourceBatch.bendingStiffnesses[j];
}
// Pin:
for (int i = 0; i < skinnedBlueprintFinal.pinConstraintsData.batches.Count; ++i)
{
var batch = skinnedBlueprintFinal.pinConstraintsData.batches[i];
var sourceBatch = skinnedBlueprintReferencia.pinConstraintsData.batches[i];
for (int j = 0; j < batch.pinBodies.count; ++j)
batch.pinBodies[j] = sourceBatch.pinBodies[j];
for (int j = 0; j < batch.offsets.count; ++j)
batch.offsets[j] = sourceBatch.offsets[j];
for (int j = 0; j < batch.restDarbouxVectors.count; ++j)
batch.restDarbouxVectors[j] = sourceBatch.restDarbouxVectors[j];
for (int j = 0; j < batch.stiffnesses.count; ++j)
batch.stiffnesses[j] = sourceBatch.stiffnesses[j];
for (int j = 0; j < batch.breakThresholds.count; ++j)
batch.breakThresholds[j] = sourceBatch.breakThresholds[j];
}
// Skin:
for (int i = 0; i < skinnedBlueprintFinal.skinConstraintsData.batches.Count; ++i)
{
var batch = skinnedBlueprintFinal.skinConstraintsData.batches[i];
var sourceBatch = skinnedBlueprintReferencia.skinConstraintsData.batches[i];
for (int j = 0; j < batch.skinPoints.count; ++j)
batch.skinPoints[j] = sourceBatch.skinPoints[j];
for (int j = 0; j < batch.skinNormals.count; ++j)
batch.skinNormals[j] = sourceBatch.skinNormals[j];
for (int j = 0; j < batch.skinRadiiBackstop.count; ++j)
batch.skinRadiiBackstop[j] = sourceBatch.skinRadiiBackstop[j];
for (int j = 0; j < batch.skinCompliance.count; ++j)
batch.skinCompliance[j] = sourceBatch.skinCompliance[j];
}
// Aerodynamics:
for (int i = 0; i < skinnedBlueprintFinal.aerodynamicConstraintsData.batches.Count; ++i)
{
var batch = skinnedBlueprintFinal.aerodynamicConstraintsData.batches[i];
var sourceBatch = skinnedBlueprintReferencia.aerodynamicConstraintsData.batches[i];
for (int j = 0; j < batch.aerodynamicCoeffs.count; ++j)
batch.aerodynamicCoeffs[j] = sourceBatch.aerodynamicCoeffs[j];
}
// Tether, Stretch Shear, Bend Twist, Shape Matching, Chain and Volume constraints generate null errors. Thats why they are not copied.
////// END COPYING CONSTRAINTS
// Creating Blueprint Asset File
if (!AssetDatabase.Contains(skinnedBlueprintFinal))
AssetDatabase.CreateAsset(skinnedBlueprintFinal, "Assets/newSkinnedBluePrint.asset");
// Particle Groups:
skinnedBlueprintFinal.ClearParticleGroups();
for (int i = 0; i < skinnedBlueprintReferencia.groups.Count; ++i)
{
var group = skinnedBlueprintFinal.AppendNewParticleGroup(skinnedBlueprintReferencia.groups[i].name);
skinnedBlueprintReferencia.groups[i].particleIndices.Count);
for (int j = 0; j < skinnedBlueprintReferencia.groups[i].particleIndices.Count; ++j)
{
group.particleIndices.Add(skinnedBlueprintReferencia.groups[i].particleIndices[j]);
}
AssetDatabase.AddObjectToAsset(skinnedBlueprintFinal.groups[i], skinnedBlueprintFinal);
}
// Save the Blueprint Asset
AssetDatabase.SaveAssets();
// Assign the new blueprint to the SkinnedCloth of the dress
dress_SkinnedCloth.skinnedClothBlueprint = skinnedBlueprintFinal;
}
However, although we can generate correctly a new file of a SkinnedClothBlueprint, in the practice it is as if the properties of Skin were not being applied.
If we manually generate and edit the SkinnedClothBlueprint with the same properties, it works well, but when we create it with this code, it does not work as it should.
1) Is there anything that we are missing to copy all the properties of SkinnedClothBlueprint to the new one (except the positions, rotations, and speeds)?
2)- Is it necessary to update/re-calculate somehow the blueprint, after having modified its properties?
3) Is there a more efficient way to copy all the properties of a SkinnedClothBlueprint to a new one (except the positions, rotations, and speeds), but for a new bakedmesh as inputmesh?
4) Or do we have to use the "Bake Mesh" method from the Obi Skinned Cloth Renderer, to get a mesh with the skin?
5) We have realized that, if we just change the blendshapes of the SkinnedMeshRenderer component by code (even without modifying the original blueprint), even if it has the ObiSkinnedCloth component, we achieve what we wanted. Is there any problem in doing this once at the beginning of the program?
Thanks in advance!
PD: Le hemos enviado por e-mail estas mismas consultas. Muchas gracias por su ayuda al respecto!
|
|
|
[5.5] [Burst] Collider Out-of-range exceptions |
Posted by: ThoughtMango - 08-09-2020, 12:44 PM - Forum: Obi Cloth
- Replies (1)
|
 |
Hello,
Further testing the 5.5 Burst backend for our project I've encountered a reproducible error with colliders, and toggling them on/off at runtime.
Gif can be found here:
https://ibb.co/8sWHMpV
Running on:
Unity 2020.1.2f1
Burst 1.3.5
Jobs 0.5.0-Preview.14
Collections 0.12.0-preview.13
Mathematics 1.2.1
I've sent a repro-project to with instructions on how to reproduce it to
support(at)virtualmethodstudio.com
Thanks!
|
|
|
Solver collision contacts count is always 0 |
Posted by: dosinis - 08-09-2020, 07:59 AM - Forum: Obi Rope
- Replies (12)
|
 |
Solver collision contacts count is always 0, even though Obi Rope collides with some boxes that have obi collider and obi rigidbody attached to them. Also documentation about manual rope tearing seems to be outdated. Could you please give some examples how could I perform a rope tearing in script?
|
|
|
|