03-09-2020, 05:50 AM
Hi José!
First of all we wanted to thank you for your patience and prompt disposition to help us. Thanks to this, we have managed to solve most of the problems we had.
In this opportunity we write you, because we have 3 topics that we need your help to solve:
1) We are currently working with a Kinect sensor and have applied Obi Cloth to an avatar's dress. However, we often find that the dress "crosses" an ObiCollider from the character's leg (tunneling). In fact, we were able to replicate this in their demo scene:
We know that solving the issue of tunneling is not simple. We have seen your video explaining this. However:
Is there a way to detect by code the event when a dress with ObiCloth passes through an ObiCollider on the leg?
In our case, we want to force a "reset" when the dress goes through an ObiCollider on the leg, but we don't know how to detect that event.
2) We followed your instructions to copy the information from one blueprint to another, and it worked well for us. We are doing the following:
Although we managed to save the new Blueprint in a file, when trying to edit this new saved blueprint, it gives us this error:
It seems that something needs to be done to save the blueprint file, and then edit it manually.
What do you think we need to do to edit the saved blueprint file?
3) For our project we have to create 4 blueprints at runtime, which are generated based on four "bakedMesh" that we generate, which are created from four base meshes with their respective blendshapes applied.
As we have to call the method "blueprint.Generate()" four times, the program tends to "stop" several times, while each of the methods "Generate()" is executed.
To improve the user experience and make the application look smooth, we would like to be able to create these 4 Blueprints using a Thread, for which we have done this:
However, the system throws us this error:
Analyzing more in detail the method "Generate()", we have realized that the method "g.MoveNext()", located in line 300 of the class "ObiActorBlueprint", is the one that causes the problem, however this is a closed method.
Is there a way to perform this process in several small steps (or ideally in a Thread), so that the program does not have to stop several times while generating the 4 blueprints?
Again, we are very grateful for your help in this regard!
Best regards!
PD: Le enviamos por e-mail estas mismas consultas. Muchas gracias por su gentil ayuda!
First of all we wanted to thank you for your patience and prompt disposition to help us. Thanks to this, we have managed to solve most of the problems we had.
In this opportunity we write you, because we have 3 topics that we need your help to solve:
1) We are currently working with a Kinect sensor and have applied Obi Cloth to an avatar's dress. However, we often find that the dress "crosses" an ObiCollider from the character's leg (tunneling). In fact, we were able to replicate this in their demo scene:
We know that solving the issue of tunneling is not simple. We have seen your video explaining this. However:
Is there a way to detect by code the event when a dress with ObiCloth passes through an ObiCollider on the leg?
In our case, we want to force a "reset" when the dress goes through an ObiCollider on the leg, but we don't know how to detect that event.
2) We followed your instructions to copy the information from one blueprint to another, and it worked well for us. We are doing the following:
Code:
// We assign the mesh to the blueprint
blueprintFinal.inputMesh = bakedMesh;
// We generate the blueprint
yield return blueprintFinal.Generate();
// We copy the particle groups:
blueprintFinal.ClearParticleGroups();
for (int i = 0; i < blueprintReferencia.groups.Count; ++i)
{
var group = blueprintFinal.AppendNewParticleGroup(blueprintReferencia.groups[i].name);
for (int j = 0; j < blueprintReferencia.groups[i].particleIndices.Count; ++j)
{
group.particleIndices.Add(blueprintReference.groups[i].particleIndices[j]);
}
}
// We assign the blueprint created to the Obi Cloth
dressCloth.clothBlueprint = blueprintFinal
// We save the new blueprint in file
AssetDatabase.CreateAsset(blueprintFinal, "Assets/CBP Dress 1 Final.asset");
AssetDatabase.SaveAssets();
Although we managed to save the new Blueprint in a file, when trying to edit this new saved blueprint, it gives us this error:
It seems that something needs to be done to save the blueprint file, and then edit it manually.
What do you think we need to do to edit the saved blueprint file?
3) For our project we have to create 4 blueprints at runtime, which are generated based on four "bakedMesh" that we generate, which are created from four base meshes with their respective blendshapes applied.
As we have to call the method "blueprint.Generate()" four times, the program tends to "stop" several times, while each of the methods "Generate()" is executed.
To improve the user experience and make the application look smooth, we would like to be able to create these 4 Blueprints using a Thread, for which we have done this:
However, the system throws us this error:
Analyzing more in detail the method "Generate()", we have realized that the method "g.MoveNext()", located in line 300 of the class "ObiActorBlueprint", is the one that causes the problem, however this is a closed method.
Is there a way to perform this process in several small steps (or ideally in a Thread), so that the program does not have to stop several times while generating the 4 blueprints?
Again, we are very grateful for your help in this regard!
Best regards!
PD: Le enviamos por e-mail estas mismas consultas. Muchas gracias por su gentil ayuda!