![]() |
Help Positions Saving & Loading - Printable Version +- Obi Official Forum (https://obi.virtualmethodstudio.com/forum) +-- Forum: Obi Users Category (https://obi.virtualmethodstudio.com/forum/forum-1.html) +--- Forum: Obi Cloth (https://obi.virtualmethodstudio.com/forum/forum-2.html) +--- Thread: Help Positions Saving & Loading (/thread-819.html) |
Positions Saving & Loading - Loki_Priest - 16-01-2019 Hello. I need to save disposed positions of particles (or vertices) after closing the game and to load them when I start the game. I managed to write actor's positions and obiCloth's meshVertices arrays to XML files and to read them. But I faced with two problems: 1) It's ok to SetParticlePositions using the values from the file; but it was not possible to get changed positions of particles (I mean the position[] array doesn't change, however the real picture is ok while deforming the object). Maybe it's necessary to RequireRenderablePosition (or/and PullDataFromSolver), isn't it? 2) On the other hand, values of meshVertices array change when I deform the mesh, but I have no luck in changing them manually with the values from the XML file (I mean the clothMesh from ObiClothBase class). Maybe I missed something important? For clarity, here is an example of what I need: 1) I start my game with a ball. [attachment=215] 2) Then I deform it (via the "finger" collider), save it, and quit the game. [attachment=217] 3) When I open the game again I am to see the second picture. RE: Positions Saving & Loading - josemendez - 16-01-2019 (16-01-2019, 05:03 AM)Loki_Priest Wrote: Hello. 1) Correct, you need to use either renderable positions, call PullDataFromSolver(ParticleData.POSITIONS) to update the actor array, or use Oni.GetParticlePositions(). In your case, I'd use either method 1 or 2, 1 is easier. Renderable positions -as the name implies-, are used for smooth rendering and usually contain interpolated positions between two physics updates, so it's best to use regular positions if you intend to save/load them. See: http://obi.virtualmethodstudio.com/tutorials/scriptingparticles.html 2) mesh vertices are modified internally the physics engine, and set at the end of every frame. You should either set the particle positions array and call PushDataToSolver() -opposite to PullDataFromSolver-, or Oni.SetParticlePositions. RE: Positions Saving & Loading - Loki_Priest - 16-01-2019 Thanks a lot! Now it works properly. Code: void SaveAll() |