Skip to content

Commit a8721b0

Browse files
committed
Add SampleTriangleMeshBvh operator
1 parent 05699c8 commit a8721b0

3 files changed

Lines changed: 41 additions & 0 deletions

File tree

metafold/func.py

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@
4545
ParametrizationAsset,
4646
LineNetworkAsset,
4747
LineNetworkBvhAsset,
48+
MeshBvhAsset,
4849
)
4950

5051
if TYPE_CHECKING:
@@ -684,6 +685,44 @@ def __call__(self, eval_: Evaluator) -> TypedResult[Literal[FuncType.FLOAT]]:
684685
return cast(TypedResult[Literal[FuncType.FLOAT]], r)
685686

686687

688+
class SampleTriangleMeshBvh_Parameters(TypedDict, total=False):
689+
xform: Mat4f
690+
691+
692+
class SampleTriangleMeshBvh(TypedFunc[Literal[FuncType.FLOAT]]):
693+
def __init__(
694+
self,
695+
points: TypedFunc[Literal[FuncType.VEC3F]],
696+
bvh_data: MeshBvhAsset,
697+
mesh_data: TriangleMeshAsset,
698+
parameters: Optional[SampleTriangleMeshBvh_Parameters] = None,
699+
):
700+
self.inputs: Optional[dict[str, Func]]
701+
self.inputs = {
702+
"Points": points,
703+
}
704+
self.assets: Optional[Assets]
705+
self.assets = {
706+
"bvh_data": bvh_data,
707+
"mesh_data": mesh_data,
708+
}
709+
self.parameters = parameters
710+
711+
@cache
712+
def __call__(self, eval_: Evaluator) -> TypedResult[Literal[FuncType.FLOAT]]:
713+
inputs: Optional[Inputs] = None
714+
if self.inputs:
715+
inputs = dict((k, v(eval_)) for k, v in self.inputs.items())
716+
r = eval_(
717+
"SampleTriangleMeshBvh",
718+
inputs=inputs,
719+
assets=self.assets,
720+
# https://github.com/python/mypy/issues/4976#issuecomment-460971843
721+
parameters=cast(Optional[Params], self.parameters),
722+
)
723+
return cast(TypedResult[Literal[FuncType.FLOAT]], r)
724+
725+
687726
class SampleVolume_Parameters(TypedDict, total=False):
688727
volume_offset: Vec3f
689728
volume_size: Vec3f

metafold/func.py.in

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ from .func_types import (
4545
ParametrizationAsset,
4646
LineNetworkAsset,
4747
LineNetworkBvhAsset,
48+
MeshBvhAsset,
4849
)
4950

5051
if TYPE_CHECKING:

metafold/func_types.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,7 @@ class CustomShapeAsset(Asset):
8787
class ParametrizationAsset(Asset): ...
8888
class LineNetworkAsset(Asset): ...
8989
class LineNetworkBvhAsset(Asset): ...
90+
class MeshBvhAsset(Asset): ...
9091

9192

9293
class FuncType(Enum):

0 commit comments

Comments
 (0)