Skip to content

Commit ab7e766

Browse files
committed
better get mesh info; support dynamic mesh
1 parent fb56c8e commit ab7e766

File tree

8 files changed

+1198
-549
lines changed

8 files changed

+1198
-549
lines changed

examples/sensors/lidar/sphere_lidar_example.py

Lines changed: 144 additions & 159 deletions
Large diffs are not rendered by default.

genesis/engine/entities/rigid_entity/rigid_entity.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,8 @@ def __init__(
7979

8080
self._visualize_contact = visualize_contact
8181

82+
if hasattr(morph, "fixed"):
83+
morph.is_free = not morph.fixed
8284
self._is_free = morph.is_free
8385

8486
self._is_built = False

genesis/engine/solvers/rigid/rigid_solver_decomp.py

Lines changed: 21 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -15,13 +15,13 @@
1515
from genesis.engine.entities import AvatarEntity, DroneEntity, RigidEntity
1616
from genesis.engine.states.solvers import RigidSolverState
1717
from genesis.styles import colors, formats
18+
from genesis.utils.sdf_decomp import SDF
1819
import genesis.utils.array_class as array_class
1920

2021
from ..base_solver import Solver
2122
from .collider_decomp import Collider
2223
from .constraint_solver_decomp import ConstraintSolver
2324
from .constraint_solver_decomp_island import ConstraintSolverIsland
24-
from ....utils.sdf_decomp import SDF
2525

2626
if TYPE_CHECKING:
2727
from genesis.engine.scene import Scene
@@ -4773,8 +4773,8 @@ def kernel_update_verts_for_geom(
47734773
geoms_state: array_class.GeomsState,
47744774
geoms_info: array_class.GeomsInfo,
47754775
verts_info: array_class.VertsInfo,
4776-
free_verts_state: array_class.FreeVertsState,
4777-
fixed_verts_state: array_class.FixedVertsState,
4776+
free_verts_state: array_class.VertsState,
4777+
fixed_verts_state: array_class.VertsState,
47784778
):
47794779
_B = geoms_state.verts_updated.shape[1]
47804780
for i_b in range(_B):
@@ -4795,20 +4795,26 @@ def kernel_update_verts_for_geom(
47954795
geoms_state.verts_updated[i_g, 0] = 1
47964796

47974797

4798-
@ti.func
4799-
def func_update_all_verts(self):
4800-
ti.loop_config(serialize=self._para_level < gs.PARA_LEVEL.PARTIAL)
4801-
for i_v, i_b in ti.ndrange(self.n_verts, self._B):
4802-
g_pos = self.geoms_state.pos[self.verts_info.geom_idx[i_v], i_b]
4803-
g_quat = self.geoms_state.quat[self.verts_info.geom_idx[i_v], i_b]
4804-
verts_state_idx = self.verts_info.verts_state_idx[i_v]
4805-
if self.verts_info.is_free[i_v]:
4806-
self.free_verts_state.pos[verts_state_idx, i_b] = gu.ti_transform_by_trans_quat(
4807-
self.verts_info.init_pos[i_v], g_pos, g_quat
4798+
@ti.kernel
4799+
def kernel_update_all_verts(
4800+
geoms_state: array_class.GeomsState,
4801+
verts_info: array_class.VertsInfo,
4802+
free_verts_state: array_class.VertsState,
4803+
fixed_verts_state: array_class.VertsState,
4804+
):
4805+
n_verts = verts_info.geom_idx.shape[0]
4806+
_B = geoms_state.pos.shape[1]
4807+
for i_v, i_b in ti.ndrange(n_verts, _B):
4808+
g_pos = geoms_state.pos[verts_info.geom_idx[i_v], i_b]
4809+
g_quat = geoms_state.quat[verts_info.geom_idx[i_v], i_b]
4810+
verts_state_idx = verts_info.verts_state_idx[i_v]
4811+
if verts_info.is_free[i_v]:
4812+
free_verts_state.pos[verts_state_idx, i_b] = gu.ti_transform_by_trans_quat(
4813+
verts_info.init_pos[i_v], g_pos, g_quat
48084814
)
48094815
elif i_b == 0:
4810-
self.fixed_verts_state.pos[verts_state_idx] = gu.ti_transform_by_trans_quat(
4811-
self.verts_info.init_pos[i_v], g_pos, g_quat
4816+
fixed_verts_state.pos[verts_state_idx] = gu.ti_transform_by_trans_quat(
4817+
verts_info.init_pos[i_v], g_pos, g_quat
48124818
)
48134819

48144820

genesis/sensors/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
from .base_sensor import Sensor
22
from .tactile import RigidContactSensor, RigidContactForceSensor, RigidContactForceGridSensor
3-
from .lidar import LidarSensor
3+
from .lidar import LidarSensor, LidarSensorYiling
44
from .data_recorder import SensorDataRecorder, RecordingOptions
55
from .data_handlers import (
66
DataHandler,

genesis/sensors/lidar/__init__.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
from .lidar import LidarSensor
2+
from .lidar_yiling import LidarSensor as LidarSensorYiling
23

3-
__all__ = ["LidarSensor"]
4+
__all__ = ["LidarSensor", "LidarSensorYiling"]

0 commit comments

Comments
 (0)