Skip to content

Commit 5866ed1

Browse files
committed
[add] add sapien hello world example
1 parent 0edda36 commit 5866ed1

File tree

1 file changed

+44
-0
lines changed

1 file changed

+44
-0
lines changed

example/sapien/hello_world.py

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
import sapien.core as sapien
2+
from meshcat.servers.zmqserver import start_zmq_server_as_subprocess
3+
from sim_web_visualizer import create_sapien_visualizer, bind_visualizer_to_sapien_scene
4+
5+
6+
def main():
7+
# create simulation engine
8+
engine = sapien.Engine()
9+
10+
# Create renderer
11+
renderer = sapien.SapienRenderer()
12+
engine.set_renderer(renderer)
13+
14+
# Create a simulation scene
15+
create_sapien_visualizer(port=6000, host="localhost", keep_default_viewer=False)
16+
scene = engine.create_scene()
17+
scene = bind_visualizer_to_sapien_scene(scene, engine, renderer)
18+
scene.set_timestep(1 / 100.0) # Set the simulation frequency
19+
20+
# Add actors(rigid bodies)
21+
scene.add_ground(altitude=0) # Add a ground
22+
actor_builder = scene.create_actor_builder()
23+
actor_builder.add_box_collision(half_size=[0.5, 0.5, 0.5])
24+
actor_builder.add_box_visual(half_size=[0.5, 0.5, 0.5], color=[1.0, 0.0, 0.0])
25+
box = actor_builder.build(name="box") # Add a box
26+
box.set_pose(sapien.Pose(p=[0, 0, 0.5]))
27+
28+
# Add some lights so that you can observe the scene
29+
scene.set_ambient_light([0.5, 0.5, 0.5])
30+
scene.add_directional_light([0, 1, -1], [0.5, 0.5, 0.5])
31+
32+
#############################
33+
while True:
34+
try:
35+
scene.step() # Simulate the world
36+
scene.update_render() # Update the world to the renderer
37+
38+
except KeyboardInterrupt:
39+
break
40+
41+
42+
if __name__ == "__main__":
43+
start_zmq_server_as_subprocess()
44+
main()

0 commit comments

Comments
 (0)