-
Notifications
You must be signed in to change notification settings - Fork 54
Expand file tree
/
Copy pathvisual.py
More file actions
39 lines (27 loc) · 1.26 KB
/
visual.py
File metadata and controls
39 lines (27 loc) · 1.26 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
from stlib.core.basePrefab import BasePrefab
from stlib.core.baseParameters import BaseParameters, Optional, dataclasses
from stlib.geometries import Geometry, GeometryParameters
from stlib.geometries.file import FileParameters
from splib.core.utils import DEFAULT_VALUE
from Sofa.Core import Object
@dataclasses.dataclass
class VisualParameters(BaseParameters):
name : str = "Visual"
color : Optional[list[float]] = DEFAULT_VALUE
texture : Optional[str] = DEFAULT_VALUE
geometry : GeometryParameters = dataclasses.field(default_factory = lambda : GeometryParameters())
class Visual(BasePrefab):
def __init__(self, parameters: VisualParameters):
BasePrefab.__init__(self, parameters)
def init(self):
self.geometry = self.add(Geometry, parameters=self.parameters.geometry)
self.addObject("OglModel", color=self.parameters.color, src=self.geometry.container.linkpath)
@staticmethod
def getParameters(**kwargs) -> VisualParameters:
return VisualParameters(**kwargs)
def createScene(root):
# Create a visual from a mesh file
parameters = Visual.getParameters()
parameters.name = "LiverVisual"
parameters.geometry = FileParameters(filename="mesh/liver.obj")
root.add(Visual, parameters=parameters)