Skip to content

[Dynamic Data] Saving your datas in a file and loading other from a file #227

Open
PierreFonda3D wants to merge 15 commits intomainfrom
StoringDynamicData
Open

[Dynamic Data] Saving your datas in a file and loading other from a file #227
PierreFonda3D wants to merge 15 commits intomainfrom
StoringDynamicData

Conversation

@PierreFonda3D
Copy link
Contributor

@PierreFonda3D PierreFonda3D commented Jan 14, 2026

Saving data to files and loading data from files

This PR adds new functionalities related to data saving and loading.
You can now save and load data from a simple click in the UI.

Scripts

Core/Scripts/UI/DataManager/SDataSaveLoad.cs

Script that listens to UI buttons and handles saving/loading data to files located in:
\SofaUnity\Core\Scripts\UI\DataManager\DynamicDataSaves

Data is saved as JSON and read back by the same script.

Example of a saved file format:

{
    "dataName": "amplitude",
    "optionalCustomName": "Amplitude Oscillator",
    "value": "1",
    "dataType": 2
}

Core/Scripts/UI/DataManager/DynamicSDataManager.cs and DynamicSdata.cs

Code cleanup and addition of an optional custom name functionality.
By default, the data name is used if no custom name is provided.

Jira link

SOFAU3D-2

@PierreFonda3D
Copy link
Contributor Author

PierreFonda3D commented Jan 14, 2026

Missing:

  • Vec3 compatibility Save
  • Vec3 compatibility Load
  • Test in build mode to see if path are working

@PierreFonda3D PierreFonda3D added pr: status to review To notify reviewers to review this pull-request and removed pr: status wip labels Jan 22, 2026
Copy link
Contributor

@epernod epernod left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

a few changes in the code.
Also could you add an example in the folder: SofaUnity/Scenes/Examples/
something like: Example_11_LiverDataUI (or another SOFA scene) with a json files containing values.

You could also put it in: SofaUnity/Scenes/Demos/UI/ if you think several examples could be useul to illustrate the Data loading/saving

@PierreFonda3D PierreFonda3D added pr: status wip and removed pr: status to review To notify reviewers to review this pull-request labels Feb 10, 2026
@PierreFonda3D
Copy link
Contributor Author

image example scene i wanted to add a Vec3 but there is none that don't break everythings

@PierreFonda3D PierreFonda3D added pr: status to review To notify reviewers to review this pull-request and removed pr: status wip labels Feb 10, 2026
@PierreFonda3D
Copy link
Contributor Author

  • Still need to find an example Vec3 on the new demo scene if possible

Copy link
Contributor

@epernod epernod left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

in the caduceus.scn you can add: <ConstantForceField indices="0" totalForce="0 1000 0"/>

<Node name="Snake" >
        <SparseGridRamificationTopology name="grid" n="4 12 3" fileTopology="mesh/snake_body.obj" nbVirtualFinerLevels="3" finestConnectivity="0"/>

        <EulerImplicitSolver name="cg_odesolver" rayleighMass="1" rayleighStiffness="0.03" />
        <CGLinearSolver name="linear solver" iterations="20" tolerance="1e-12" threshold="1e-18" />
		<MechanicalObject name="dofs"  dy="2" position="@grid.position"/>
        <UniformMass totalMass="1.0" />
        <HexahedronFEMForceField name="FEM" youngModulus="30000.0" poissonRatio="0.3" method="large" 
        updateStiffnessMatrix="false" printLog="0" topology="@grid"/>
        
        <ConstantForceField indices="0" totalForce="0 1000 0"/>

		<UncoupledConstraintCorrection defaultCompliance="184" useOdeSolverIntegrationFactors="0"/>

Copy link
Contributor

@epernod epernod left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just tested yet, it is working on my side.
just a small change on the default value

<HexahedronFEMForceField name="FEM" youngModulus="30000.0" poissonRatio="0.3" method="large"
updateStiffnessMatrix="false" printLog="0" topology="@grid"/>

<ConstantForceField indices="0" totalForce="0 1000 0"/>
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
<ConstantForceField indices="0" totalForce="0 1000 0"/>
<ConstantForceField indices="0" totalForce="0 0 0"/>

I put it to 0 by default so it doesn't affect the Demo_02

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

pr: new feature pr: status to review To notify reviewers to review this pull-request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants