Skip to content

Commit 44f5f4c

Browse files
committed
Add plane, still need to really implement function + started creating the scene
1 parent ac3ed74 commit 44f5f4c

3 files changed

Lines changed: 75 additions & 1 deletion

File tree

examples/stlib/SofaScene.py

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
from stlib.geometries.plane import PlaneParameters
2+
from stlib.collision import CollisionParameters
3+
from stlib.collision import Collision
4+
from splib.core.enum_types import CollisionPrimitive
5+
import dataclasses
6+
import numpy as np
7+
8+
9+
10+
def createScene(root):
11+
##Solvers
12+
13+
14+
15+
##Environement
16+
17+
planes_lengthNormal = np.array([])
18+
planes_length = 1
19+
planes_width = 1
20+
planes_nbEdgeLength = 1
21+
planes_nbEdgeWidth = 1
22+
23+
plane1_collisionParams = CollisionParameters()
24+
plane1_collisionParams.name = "UP"
25+
plane1_collisionParams.primitives = [CollisionPrimitive.TRIANGLES]
26+
plane1_collisionParams.kwargs = {"TriangleCollision" : {"moving" : False, "simulated" : False}}
27+
plane1_collisionParams.geometry = PlaneParameters(np.array([0,0,0]), np.array([0,0,-1]),
28+
planes_lengthNormal, planes_length, planes_width, planes_nbEdgeLength, planes_nbEdgeWidth)
29+
root.add(Collision, plane1_collisionParams)
30+
31+
32+
plane2_collisionParams = CollisionParameters()
33+
plane2_collisionParams.name = "DOWN"
34+
plane2_collisionParams.primitives = [CollisionPrimitive.TRIANGLES]
35+
plane2_collisionParams.kwargs = {"TriangleCollision" : {"moving" : False, "simulated" : False}}
36+
plane2_collisionParams.geometry = PlaneParameters(np.array([0,0,0]), np.array([0,0,1]),
37+
planes_lengthNormal, planes_length, planes_width, planes_nbEdgeLength, planes_nbEdgeWidth)
38+
root.add(Collision, plane2_collisionParams)
39+
40+
41+
## Real models

stlib/geometries/__geometry__.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,9 @@
44
from splib.topology.static import addStaticTopology
55
from splib.core.enum_types import ElementType
66
from splib.core.utils import DEFAULT_VALUE
7-
from Sofa.Core import Object
7+
from Sofa.Core import Object
8+
9+
import numpy as np
810

911

1012
class Geometry(BasePrefab):...
@@ -33,6 +35,10 @@ class GeometryParameters(BaseParameters):
3335

3436
dynamicTopology : bool = False
3537

38+
def Data(self):
39+
return InternalDataProvider()
40+
41+
3642

3743
class Geometry(BasePrefab):
3844
# container : Object # This should be more specialized into the right SOFA type

stlib/geometries/plane.py

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
from stlib.geometries import GeometryParameters, InternalDataProvider
2+
import dataclasses
3+
import numpy as np
4+
5+
@dataclasses.dataclass
6+
class PlaneDataProvider(InternalDataProvider):
7+
center : np.ndarray[float]
8+
normal : np.ndarray[float]
9+
lengthNormal : np.ndarray[float]
10+
nbEdgeLength : int
11+
nbEdgeWidth : int
12+
width : float
13+
edgeSize : float
14+
15+
def __post_init__(self, **kwargs):
16+
InternalDataProvider.__init__(self,**kwargs)
17+
18+
def generateAttribute(self):
19+
#TODO
20+
pass
21+
22+
23+
class PlaneParameters(GeometryParameters):
24+
25+
def __init__(self, center, normal, lengthNormal, length, width, nbEdgeLength, nbEdgeWidth, dynamicTopology = False):
26+
GeometryParameters.__init__(data = PlaneDataProvider(center=center, normal=normal, lengthNormal=lengthNormal, length=length, width=width, nbEdgeLength=nbEdgeLength, nbEdgeWidth=nbEdgeWidth),
27+
dynamicTopology = dynamicTopology)

0 commit comments

Comments
 (0)