|
|
Can Obi do this? |
Posted by: JordanTama - 14-09-2020, 10:47 AM - Forum: Obi Cloth
- Replies (3)
|
|
Hi,
I'm interested in using Obi Cloth for a project I am working on, however, I'd like to know if it will actually help me with what I'm aiming to do.
In the attached image, I have two submeshes. I've stored multiple vertex pairs (linked with the white gizmo lines). I would like to apply a force to individual vertices that move each pair of linked vertices towards each other in a way that is physically simulated so that it fits realistically around the cylinder, with the linked edges behaving like seams.
Otherwise, I also noticed a 'balloons' feature. If I placed the two meshes flat against each other and connected them, would I be able to balloon around the cylinder?
If it's possible to achieve this outcome this way, I would love to know. If there's a better/supported way to achieve this too, please let me know!
Thanks in advance,
Jordan
|
|
|
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!
|
|
|
|