Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

hello world example doesnt produce video #93

Open
jtoy opened this issue Dec 19, 2024 · 6 comments
Open

hello world example doesnt produce video #93

jtoy opened this issue Dec 19, 2024 · 6 comments

Comments

@jtoy
Copy link

jtoy commented Dec 19, 2024

import genesis as gs

gs.init(backend=gs.gpu)

scene = gs.Scene(
show_viewer = True,
viewer_options = gs.options.ViewerOptions(
res = (1280, 960),
camera_pos = (3.5, 0.0, 2.5),
camera_lookat = (0.0, 0.0, 0.5),
camera_fov = 40,
max_FPS = 60,
),
vis_options = gs.options.VisOptions(
show_world_frame = True,
world_frame_size = 1.0,
show_link_frame = False,
show_cameras = False,
plane_reflection = True,
ambient_light = (0.1, 0.1, 0.1),
),
renderer=gs.renderers.Rasterizer(),
)

plane = scene.add_entity(
gs.morphs.Plane(),
)
franka = scene.add_entity(
gs.morphs.MJCF(file='xml/franka_emika_panda/panda.xml'),
)

cam = scene.add_camera(
res = (640, 480),
pos = (3.5, 0.0, 2.5),
lookat = (0, 0, 0.5),
fov = 30,
GUI = False,
)

scene.build()

render rgb, depth, segmentation, and normal

rgb, depth, segmentation, normal = cam.render(rgb=True, depth=True, segmentation=True, normal=True)

cam.start_recording()
import numpy as np

for i in range(120):
scene.step()
cam.set_pose(
pos = (3.0 * np.sin(i / 60), 3.0 * np.cos(i / 60), 2.5),
lookat = (0, 0, 0.5),
)
cam.render()
cam.stop_recording(save_to_filename='video.mp4', fps=30)

it just seems to sit there:

[Genesis] [11:36:48] [INFO] ╭─────────────────────────────────────────────────────────────────────────────────────╮
[Genesis] [11:36:48] [INFO] │┈┉┈┉┈┉┈┉┈┉┈┉┈┉┈┉┈┉┈┉┈┉┈┉┈┉┈┉┈┉┈┉┈┉┈┉┈┉ Genesis ┈┉┈┉┈┉┈┉┈┉┈┉┈┉┈┉┈┉┈┉┈┉┈┉┈┉┈┉┈┉┈┉┈┉┈┉┈┉│
[Genesis] [11:36:48] [INFO] ╰─────────────────────────────────────────────────────────────────────────────────────╯
[Genesis] [11:36:49] [INFO] Running on [Apple M1 Max] with backend gs.metal. Device memory: 32.00 GB.
[Genesis] [11:36:49] [INFO] 🚀 Genesis initialized. 🔖 version: 0.2.0, 🌱 seed: None, 📏 precision: '32', 🐛 debug: False, 🎨 theme: 'dark'.
[Genesis] [11:36:49] [INFO] Scene <69300f1> created.
[Genesis] [11:36:49] [INFO] Adding <gs.RigidEntity>. idx: 0, uid: <7cfebb9>, morph: <gs.morphs.Plane>, material: <gs.materials.Rigid>.
[Genesis] [11:36:49] [INFO] Adding <gs.RigidEntity>. idx: 1, uid: <3a76479>, morph: <gs.morphs.MJCF(file='/Users/jtoy/.asdf/installs/python/3.10.4/lib/python3.10/site-packages/genesis/assets/xml/franka_emika_panda/panda.xml')>, material: <gs.materials.Rigid>.
[Genesis] [11:36:50] [INFO] Building scene <69300f1>...
[Genesis] [11:36:54] [INFO] Compiling simulation kernels...
[Genesis] [11:36:59] [INFO] Building visualizer...
[Genesis] [11:37:01] [WARNING] Non-linux system detected. In order to use the interactive viewer, you need to manually run simulation in a separate thread and then start viewer. See examples/render_on_macos.py.
[Genesis] [11:37:01] [INFO] Viewer created. Resolution: 1280×960, max_FPS: 60.
[Genesis] [11:37:01] [INFO] Running at 2824.03 FPS.

@apandy02
Copy link

Same problem while running examples/render_on_macos.py on M3 Max

@RobRoyce
Copy link
Contributor

@apandy02 are you running it with the --vis flag?

@jtoy as a baseline, does the hello_genesis.py tutorial work for you?

I had a similar issue trying to add a new camera to the scene, so it's hard to tell if that's your issue or something more fundamental.

@jtoy
Copy link
Author

jtoy commented Dec 19, 2024

I got the elastic_dragon example working,I modified it to add a camera and get video, so I think the hello world example is not fully working properly.

import argparse

import numpy as np

import genesis as gs

def main():
parser = argparse.ArgumentParser()
parser.add_argument("-v", "--vis", action="store_true", default=False)
parser.add_argument("-c", "--cpu", action="store_true", default=False)
args = parser.parse_args()

########################## init ##########################
gs.init(backend=gs.cpu if args.cpu else gs.gpu, logging_level="debug")

########################## create a scene ##########################

scene = gs.Scene(
    sim_options=gs.options.SimOptions(
        substeps=10,
        gravity=(0, 0, -9.8),
    ),
    viewer_options=gs.options.ViewerOptions(
        camera_pos=(2, 2, 1.5),
        camera_lookat=(0, 0, 0.5),
        camera_up=(0, 0, 1),
    ),
    show_viewer=args.vis,
)
cam = scene.add_camera(
    res    = (1280, 720),
    pos    = (3.5, 0.0, 2.5),
    lookat = (0, 0, 0.5),
    fov    = 30,
    GUI    = False,
)

########################## materials ##########################
mat_elastic = gs.materials.PBD.Elastic()

########################## entities ##########################

bunny = scene.add_entity(
    material=mat_elastic,
    morph=gs.morphs.Mesh(
        file="meshes/dragon/dragon.obj",
        scale=0.003,
        pos=(0, 0, 0.8),
    ),
    surface=gs.surfaces.Default(
        # vis_mode='recon',
    ),
)
########################## build ##########################
scene.build()

horizon = 1000
# forward pass
cam.start_recording()
for i in range(horizon):
    scene.step()
    cam.set_pose(
        pos    = (3.0 * np.sin(i / 60), 3.0 * np.cos(i / 60), 2.5),
        lookat = (0, 0, 0.5),
    )
    cam.render()

cam.stop_recording(save_to_filename='video.mp4', fps=30)

if name == "main":
main()

@vinny-888
Copy link

I got the elastic_dragon example working,I modified it to add a camera and get video, so I think the hello world example is not fully working properly.

I still get this error with your working sample on M1 Max

OpenGL.error.GLError: GLError(
	err = 1282,
	description = b'invalid operation',
	baseOperation = glBindFramebuffer,
	cArguments = (GL_READ_FRAMEBUFFER, 3)
)

@analogjedi
Copy link

@vinny-888 , I am also having OpenGL error issues and filed a new issue for this: #165
I am not exactly sure if this is the issue or not related but the end result is the same error as yours.

@apandy02
Copy link

apandy02 commented Dec 20, 2024

@RobRoyce Turning on vis led to OpenGL errors, which were resolved by switching from uv to conda for package management. Would be interested in understanding why, but for now I'm all set!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants