|
| 1 | +from fontTools.afmLib import preferredAttributeOrder |
| 2 | + |
1 | 3 | from stlib.geometries.plane import PlaneParameters |
2 | 4 | from stlib.geometries.file import FileParameters |
3 | 5 | from stlib.geometries.extract import ExtractParameters |
|
13 | 15 | import numpy as np |
14 | 16 |
|
15 | 17 |
|
16 | | - |
17 | 18 | def createScene(root): |
18 | 19 | root.gravity=[0,0,9.81] |
19 | 20 | ##Solvers |
20 | 21 | # setupDefaultHeader(root, displayFlags = "showVisualModels",backgroundColor=[0.8, 0.8, 0.8, 1], |
21 | 22 | # parallelComputing = True) |
22 | 23 | setupLagrangianCollision(root, displayFlags = "showVisualModels",backgroundColor=[0.8, 0.8, 0.8, 1], |
23 | | - parallelComputing = True,alarmDistance=0.3, contactDistance=0.02, |
24 | | - frictionCoef=0.5, tolerance=1.0e-4, maxIterations=20) |
25 | | - |
| 24 | + parallelComputing = True,alarmDistance=0.3, contactDistance=0.02, |
| 25 | + frictionCoef=0.5, tolerance=1.0e-4, maxIterations=20) |
26 | 26 | ##Environement |
27 | 27 | planes_lengthNormal = np.array([0, 1, 0]) |
28 | 28 | planes_lengthNbEdge = 1 |
@@ -64,40 +64,33 @@ def createScene(root): |
64 | 64 | addImplicitODE(LogoNode) |
65 | 65 | addLinearSolver(LogoNode, constantSparsity=False, ) |
66 | 66 |
|
67 | | - LogoParams = EntityParameters() |
68 | | - LogoParams.name = "Logo" |
69 | | - LogoParams.geometry = FileParameters(filename="mesh/SofaScene/Logo.vtk") |
| 67 | + LogoParams = EntityParameters(name = "Logo", |
| 68 | + geometry = FileParameters(filename="mesh/SofaScene/Logo.vtk"), |
| 69 | + material = DeformableBehaviorParameters(), |
| 70 | + collision = CollisionParameters(geometry = FileParameters(filename="mesh/SofaScene/LogoColli.sph")), |
| 71 | + visual = VisualParameters(geometry = FileParameters(filename="mesh/SofaScene/LogoVisu.obj"))) |
| 72 | + |
70 | 73 | LogoParams.geometry.elementType = ElementType.TETRAHEDRA |
71 | | - LogoParams.material = DeformableBehaviorParameters() |
72 | 74 | LogoParams.material.constitutiveLawType = ConstitutiveLaw.ELASTIC |
73 | 75 | LogoParams.material.parameters = [200, 0.4] |
74 | | - |
75 | | - def logoAddMaterial(node): |
76 | | - DeformableBehaviorParameters.addDeformableMaterial(node) |
77 | | - node.addObject("ConstantForceField", name="ConstantForceUpwards", totalForce=[0, 0, -5.0]) |
78 | | - #TODO deal with that is a more smooth way in the material directly |
79 | | - node.addObject("LinearSolverConstraintCorrection", name="ConstraintCorrection", linearSolver=LogoNode.LinearSolver.linkpath, ODESolver=LogoNode.ODESolver.linkpath) |
80 | | - |
81 | | - |
82 | | - LogoParams.material.addMaterial = logoAddMaterial |
83 | 76 | LogoParams.material.massDensity = 0.003261 |
84 | | - LogoParams.collision = CollisionParameters() |
85 | 77 | LogoParams.collision.primitives = [CollisionPrimitive.SPHERES] |
86 | | - LogoParams.collision.geometry = FileParameters(filename="mesh/SofaScene/LogoColli.sph") |
87 | 78 | #TODO make this flawless with spheres. Here collisions elements are not in the topology and a link is to be made between the loader and the collision object |
88 | 79 | LogoParams.collision.kwargs = {"SphereCollision" : {"radius" : "@Geometry/loader.listRadius"}} |
89 | | - LogoParams.visual = VisualParameters() |
90 | | - LogoParams.visual.geometry = FileParameters(filename="mesh/SofaScene/LogoVisu.obj") |
91 | 80 | LogoParams.visual.color = [0.7, .35, 0, 0.8] |
92 | 81 |
|
93 | 82 | Logo = LogoNode.add(Entity, parameters = LogoParams) |
94 | 83 |
|
| 84 | + Logo.material.addObject("ConstantForceField", name="ConstantForceUpwards", totalForce=[0, 0, -5.0]) |
| 85 | + Logo.material.addObject("LinearSolverConstraintCorrection", name="ConstraintCorrection", linearSolver=LogoNode.LinearSolver.linkpath, ODESolver=LogoNode.ODESolver.linkpath) |
| 86 | + |
| 87 | + |
95 | 88 | ### S |
96 | 89 | SNode = root.addChild("SNode") |
97 | 90 | addImplicitODE(SNode) |
98 | 91 | addLinearSolver(SNode, constantSparsity=False, ) |
99 | 92 |
|
100 | | - SParams = EntityParameters() |
| 93 | + SParams = EntityParameters("bob.yaml") |
101 | 94 | SParams.name = "S" |
102 | 95 | SParams.geometry = FileParameters(filename="mesh/SofaScene/S.vtk") |
103 | 96 | SParams.geometry.elementType = ElementType.TETRAHEDRA |
|
0 commit comments