mirror of
https://github.com/Farama-Foundation/Gymnasium.git
synced 2025-08-28 09:17:18 +00:00
Move rendering.py to utils (#2551)
* Move rendering.py to utils * Rename rendering.py to pyglet_rendering.py
This commit is contained in:
@@ -485,10 +485,10 @@ class BipedalWalker(gym.Env, EzPickle):
|
|||||||
return np.array(state, dtype=np.float32), reward, done, {}
|
return np.array(state, dtype=np.float32), reward, done, {}
|
||||||
|
|
||||||
def render(self, mode="human"):
|
def render(self, mode="human"):
|
||||||
from gym.envs.classic_control import rendering
|
from gym.utils import pyglet_rendering
|
||||||
|
|
||||||
if self.viewer is None:
|
if self.viewer is None:
|
||||||
self.viewer = rendering.Viewer(VIEWPORT_W, VIEWPORT_H)
|
self.viewer = pyglet_rendering.Viewer(VIEWPORT_W, VIEWPORT_H)
|
||||||
self.viewer.set_bounds(
|
self.viewer.set_bounds(
|
||||||
self.scroll, VIEWPORT_W / SCALE + self.scroll, 0, VIEWPORT_H / SCALE
|
self.scroll, VIEWPORT_W / SCALE + self.scroll, 0, VIEWPORT_H / SCALE
|
||||||
)
|
)
|
||||||
@@ -531,7 +531,7 @@ class BipedalWalker(gym.Env, EzPickle):
|
|||||||
for f in obj.fixtures:
|
for f in obj.fixtures:
|
||||||
trans = f.body.transform
|
trans = f.body.transform
|
||||||
if type(f.shape) is circleShape:
|
if type(f.shape) is circleShape:
|
||||||
t = rendering.Transform(translation=trans * f.shape.pos)
|
t = pyglet_rendering.Transform(translation=trans * f.shape.pos)
|
||||||
self.viewer.draw_circle(
|
self.viewer.draw_circle(
|
||||||
f.shape.radius, 30, color=obj.color1
|
f.shape.radius, 30, color=obj.color1
|
||||||
).add_attr(t)
|
).add_attr(t)
|
||||||
|
@@ -395,9 +395,9 @@ class CarRacing(gym.Env, EzPickle):
|
|||||||
def render(self, mode="human"):
|
def render(self, mode="human"):
|
||||||
assert mode in ["human", "state_pixels", "rgb_array"]
|
assert mode in ["human", "state_pixels", "rgb_array"]
|
||||||
if self.viewer is None:
|
if self.viewer is None:
|
||||||
from gym.envs.classic_control import rendering
|
from gym.utils import pyglet_rendering
|
||||||
|
|
||||||
self.viewer = rendering.Viewer(WINDOW_W, WINDOW_H)
|
self.viewer = pyglet_rendering.Viewer(WINDOW_W, WINDOW_H)
|
||||||
self.score_label = pyglet.text.Label(
|
self.score_label = pyglet.text.Label(
|
||||||
"0000",
|
"0000",
|
||||||
font_size=36,
|
font_size=36,
|
||||||
@@ -407,7 +407,7 @@ class CarRacing(gym.Env, EzPickle):
|
|||||||
anchor_y="center",
|
anchor_y="center",
|
||||||
color=(255, 255, 255, 255),
|
color=(255, 255, 255, 255),
|
||||||
)
|
)
|
||||||
self.transform = rendering.Transform()
|
self.transform = pyglet_rendering.Transform()
|
||||||
|
|
||||||
if "t" not in self.__dict__:
|
if "t" not in self.__dict__:
|
||||||
return # reset() not called yet
|
return # reset() not called yet
|
||||||
|
@@ -382,10 +382,10 @@ class LunarLander(gym.Env, EzPickle):
|
|||||||
return np.array(state, dtype=np.float32), reward, done, {}
|
return np.array(state, dtype=np.float32), reward, done, {}
|
||||||
|
|
||||||
def render(self, mode="human"):
|
def render(self, mode="human"):
|
||||||
from gym.envs.classic_control import rendering
|
from gym.utils import pyglet_rendering
|
||||||
|
|
||||||
if self.viewer is None:
|
if self.viewer is None:
|
||||||
self.viewer = rendering.Viewer(VIEWPORT_W, VIEWPORT_H)
|
self.viewer = pyglet_rendering.Viewer(VIEWPORT_W, VIEWPORT_H)
|
||||||
self.viewer.set_bounds(0, VIEWPORT_W / SCALE, 0, VIEWPORT_H / SCALE)
|
self.viewer.set_bounds(0, VIEWPORT_W / SCALE, 0, VIEWPORT_H / SCALE)
|
||||||
|
|
||||||
for obj in self.particles:
|
for obj in self.particles:
|
||||||
@@ -410,7 +410,7 @@ class LunarLander(gym.Env, EzPickle):
|
|||||||
for f in obj.fixtures:
|
for f in obj.fixtures:
|
||||||
trans = f.body.transform
|
trans = f.body.transform
|
||||||
if type(f.shape) is circleShape:
|
if type(f.shape) is circleShape:
|
||||||
t = rendering.Transform(translation=trans * f.shape.pos)
|
t = pyglet_rendering.Transform(translation=trans * f.shape.pos)
|
||||||
self.viewer.draw_circle(
|
self.viewer.draw_circle(
|
||||||
f.shape.radius, 20, color=obj.color1
|
f.shape.radius, 20, color=obj.color1
|
||||||
).add_attr(t)
|
).add_attr(t)
|
||||||
|
@@ -182,12 +182,12 @@ class AcrobotEnv(core.Env):
|
|||||||
return (dtheta1, dtheta2, ddtheta1, ddtheta2, 0.0)
|
return (dtheta1, dtheta2, ddtheta1, ddtheta2, 0.0)
|
||||||
|
|
||||||
def render(self, mode="human"):
|
def render(self, mode="human"):
|
||||||
from gym.envs.classic_control import rendering
|
from gym.utils import pyglet_rendering
|
||||||
|
|
||||||
s = self.state
|
s = self.state
|
||||||
|
|
||||||
if self.viewer is None:
|
if self.viewer is None:
|
||||||
self.viewer = rendering.Viewer(500, 500)
|
self.viewer = pyglet_rendering.Viewer(500, 500)
|
||||||
bound = self.LINK_LENGTH_1 + self.LINK_LENGTH_2 + 0.2 # 2.2 for default
|
bound = self.LINK_LENGTH_1 + self.LINK_LENGTH_2 + 0.2 # 2.2 for default
|
||||||
self.viewer.set_bounds(-bound, bound, -bound, bound)
|
self.viewer.set_bounds(-bound, bound, -bound, bound)
|
||||||
|
|
||||||
@@ -208,7 +208,7 @@ class AcrobotEnv(core.Env):
|
|||||||
self.viewer.draw_line((-2.2, 1), (2.2, 1))
|
self.viewer.draw_line((-2.2, 1), (2.2, 1))
|
||||||
for ((x, y), th, llen) in zip(xys, thetas, link_lengths):
|
for ((x, y), th, llen) in zip(xys, thetas, link_lengths):
|
||||||
l, r, t, b = 0, llen, 0.1, -0.1
|
l, r, t, b = 0, llen, 0.1, -0.1
|
||||||
jtransform = rendering.Transform(rotation=th, translation=(x, y))
|
jtransform = pyglet_rendering.Transform(rotation=th, translation=(x, y))
|
||||||
link = self.viewer.draw_polygon([(l, b), (l, t), (r, t), (r, b)])
|
link = self.viewer.draw_polygon([(l, b), (l, t), (r, t), (r, b)])
|
||||||
link.add_attr(jtransform)
|
link.add_attr(jtransform)
|
||||||
link.set_color(0, 0.8, 0.8)
|
link.set_color(0, 0.8, 0.8)
|
||||||
|
@@ -174,13 +174,13 @@ class CartPoleEnv(gym.Env):
|
|||||||
cartheight = 30.0
|
cartheight = 30.0
|
||||||
|
|
||||||
if self.viewer is None:
|
if self.viewer is None:
|
||||||
from gym.envs.classic_control import rendering
|
from gym.utils import pyglet_rendering
|
||||||
|
|
||||||
self.viewer = rendering.Viewer(screen_width, screen_height)
|
self.viewer = pyglet_rendering.Viewer(screen_width, screen_height)
|
||||||
l, r, t, b = -cartwidth / 2, cartwidth / 2, cartheight / 2, -cartheight / 2
|
l, r, t, b = -cartwidth / 2, cartwidth / 2, cartheight / 2, -cartheight / 2
|
||||||
axleoffset = cartheight / 4.0
|
axleoffset = cartheight / 4.0
|
||||||
cart = rendering.FilledPolygon([(l, b), (l, t), (r, t), (r, b)])
|
cart = pyglet_rendering.FilledPolygon([(l, b), (l, t), (r, t), (r, b)])
|
||||||
self.carttrans = rendering.Transform()
|
self.carttrans = pyglet_rendering.Transform()
|
||||||
cart.add_attr(self.carttrans)
|
cart.add_attr(self.carttrans)
|
||||||
self.viewer.add_geom(cart)
|
self.viewer.add_geom(cart)
|
||||||
l, r, t, b = (
|
l, r, t, b = (
|
||||||
@@ -189,18 +189,18 @@ class CartPoleEnv(gym.Env):
|
|||||||
polelen - polewidth / 2,
|
polelen - polewidth / 2,
|
||||||
-polewidth / 2,
|
-polewidth / 2,
|
||||||
)
|
)
|
||||||
pole = rendering.FilledPolygon([(l, b), (l, t), (r, t), (r, b)])
|
pole = pyglet_rendering.FilledPolygon([(l, b), (l, t), (r, t), (r, b)])
|
||||||
pole.set_color(0.8, 0.6, 0.4)
|
pole.set_color(0.8, 0.6, 0.4)
|
||||||
self.poletrans = rendering.Transform(translation=(0, axleoffset))
|
self.poletrans = pyglet_rendering.Transform(translation=(0, axleoffset))
|
||||||
pole.add_attr(self.poletrans)
|
pole.add_attr(self.poletrans)
|
||||||
pole.add_attr(self.carttrans)
|
pole.add_attr(self.carttrans)
|
||||||
self.viewer.add_geom(pole)
|
self.viewer.add_geom(pole)
|
||||||
self.axle = rendering.make_circle(polewidth / 2)
|
self.axle = pyglet_rendering.make_circle(polewidth / 2)
|
||||||
self.axle.add_attr(self.poletrans)
|
self.axle.add_attr(self.poletrans)
|
||||||
self.axle.add_attr(self.carttrans)
|
self.axle.add_attr(self.carttrans)
|
||||||
self.axle.set_color(0.5, 0.5, 0.8)
|
self.axle.set_color(0.5, 0.5, 0.8)
|
||||||
self.viewer.add_geom(self.axle)
|
self.viewer.add_geom(self.axle)
|
||||||
self.track = rendering.Line((0, carty), (screen_width, carty))
|
self.track = pyglet_rendering.Line((0, carty), (screen_width, carty))
|
||||||
self.track.set_color(0, 0, 0)
|
self.track.set_color(0, 0, 0)
|
||||||
self.viewer.add_geom(self.track)
|
self.viewer.add_geom(self.track)
|
||||||
|
|
||||||
|
@@ -132,35 +132,35 @@ class Continuous_MountainCarEnv(gym.Env):
|
|||||||
carheight = 20
|
carheight = 20
|
||||||
|
|
||||||
if self.viewer is None:
|
if self.viewer is None:
|
||||||
from gym.envs.classic_control import rendering
|
from gym.utils import pyglet_rendering
|
||||||
|
|
||||||
self.viewer = rendering.Viewer(screen_width, screen_height)
|
self.viewer = pyglet_rendering.Viewer(screen_width, screen_height)
|
||||||
xs = np.linspace(self.min_position, self.max_position, 100)
|
xs = np.linspace(self.min_position, self.max_position, 100)
|
||||||
ys = self._height(xs)
|
ys = self._height(xs)
|
||||||
xys = list(zip((xs - self.min_position) * scale, ys * scale))
|
xys = list(zip((xs - self.min_position) * scale, ys * scale))
|
||||||
|
|
||||||
self.track = rendering.make_polyline(xys)
|
self.track = pyglet_rendering.make_polyline(xys)
|
||||||
self.track.set_linewidth(4)
|
self.track.set_linewidth(4)
|
||||||
self.viewer.add_geom(self.track)
|
self.viewer.add_geom(self.track)
|
||||||
|
|
||||||
clearance = 10
|
clearance = 10
|
||||||
|
|
||||||
l, r, t, b = -carwidth / 2, carwidth / 2, carheight, 0
|
l, r, t, b = -carwidth / 2, carwidth / 2, carheight, 0
|
||||||
car = rendering.FilledPolygon([(l, b), (l, t), (r, t), (r, b)])
|
car = pyglet_rendering.FilledPolygon([(l, b), (l, t), (r, t), (r, b)])
|
||||||
car.add_attr(rendering.Transform(translation=(0, clearance)))
|
car.add_attr(pyglet_rendering.Transform(translation=(0, clearance)))
|
||||||
self.cartrans = rendering.Transform()
|
self.cartrans = pyglet_rendering.Transform()
|
||||||
car.add_attr(self.cartrans)
|
car.add_attr(self.cartrans)
|
||||||
self.viewer.add_geom(car)
|
self.viewer.add_geom(car)
|
||||||
frontwheel = rendering.make_circle(carheight / 2.5)
|
frontwheel = pyglet_rendering.make_circle(carheight / 2.5)
|
||||||
frontwheel.set_color(0.5, 0.5, 0.5)
|
frontwheel.set_color(0.5, 0.5, 0.5)
|
||||||
frontwheel.add_attr(
|
frontwheel.add_attr(
|
||||||
rendering.Transform(translation=(carwidth / 4, clearance))
|
pyglet_rendering.Transform(translation=(carwidth / 4, clearance))
|
||||||
)
|
)
|
||||||
frontwheel.add_attr(self.cartrans)
|
frontwheel.add_attr(self.cartrans)
|
||||||
self.viewer.add_geom(frontwheel)
|
self.viewer.add_geom(frontwheel)
|
||||||
backwheel = rendering.make_circle(carheight / 2.5)
|
backwheel = pyglet_rendering.make_circle(carheight / 2.5)
|
||||||
backwheel.add_attr(
|
backwheel.add_attr(
|
||||||
rendering.Transform(translation=(-carwidth / 4, clearance))
|
pyglet_rendering.Transform(translation=(-carwidth / 4, clearance))
|
||||||
)
|
)
|
||||||
backwheel.add_attr(self.cartrans)
|
backwheel.add_attr(self.cartrans)
|
||||||
backwheel.set_color(0.5, 0.5, 0.5)
|
backwheel.set_color(0.5, 0.5, 0.5)
|
||||||
@@ -168,9 +168,9 @@ class Continuous_MountainCarEnv(gym.Env):
|
|||||||
flagx = (self.goal_position - self.min_position) * scale
|
flagx = (self.goal_position - self.min_position) * scale
|
||||||
flagy1 = self._height(self.goal_position) * scale
|
flagy1 = self._height(self.goal_position) * scale
|
||||||
flagy2 = flagy1 + 50
|
flagy2 = flagy1 + 50
|
||||||
flagpole = rendering.Line((flagx, flagy1), (flagx, flagy2))
|
flagpole = pyglet_rendering.Line((flagx, flagy1), (flagx, flagy2))
|
||||||
self.viewer.add_geom(flagpole)
|
self.viewer.add_geom(flagpole)
|
||||||
flag = rendering.FilledPolygon(
|
flag = pyglet_rendering.FilledPolygon(
|
||||||
[(flagx, flagy2), (flagx, flagy2 - 10), (flagx + 25, flagy2 - 5)]
|
[(flagx, flagy2), (flagx, flagy2 - 10), (flagx + 25, flagy2 - 5)]
|
||||||
)
|
)
|
||||||
flag.set_color(0.8, 0.8, 0)
|
flag.set_color(0.8, 0.8, 0)
|
||||||
|
@@ -110,35 +110,35 @@ class MountainCarEnv(gym.Env):
|
|||||||
carheight = 20
|
carheight = 20
|
||||||
|
|
||||||
if self.viewer is None:
|
if self.viewer is None:
|
||||||
from gym.envs.classic_control import rendering
|
from gym.utils import pyglet_rendering
|
||||||
|
|
||||||
self.viewer = rendering.Viewer(screen_width, screen_height)
|
self.viewer = pyglet_rendering.Viewer(screen_width, screen_height)
|
||||||
xs = np.linspace(self.min_position, self.max_position, 100)
|
xs = np.linspace(self.min_position, self.max_position, 100)
|
||||||
ys = self._height(xs)
|
ys = self._height(xs)
|
||||||
xys = list(zip((xs - self.min_position) * scale, ys * scale))
|
xys = list(zip((xs - self.min_position) * scale, ys * scale))
|
||||||
|
|
||||||
self.track = rendering.make_polyline(xys)
|
self.track = pyglet_rendering.make_polyline(xys)
|
||||||
self.track.set_linewidth(4)
|
self.track.set_linewidth(4)
|
||||||
self.viewer.add_geom(self.track)
|
self.viewer.add_geom(self.track)
|
||||||
|
|
||||||
clearance = 10
|
clearance = 10
|
||||||
|
|
||||||
l, r, t, b = -carwidth / 2, carwidth / 2, carheight, 0
|
l, r, t, b = -carwidth / 2, carwidth / 2, carheight, 0
|
||||||
car = rendering.FilledPolygon([(l, b), (l, t), (r, t), (r, b)])
|
car = pyglet_rendering.FilledPolygon([(l, b), (l, t), (r, t), (r, b)])
|
||||||
car.add_attr(rendering.Transform(translation=(0, clearance)))
|
car.add_attr(pyglet_rendering.Transform(translation=(0, clearance)))
|
||||||
self.cartrans = rendering.Transform()
|
self.cartrans = pyglet_rendering.Transform()
|
||||||
car.add_attr(self.cartrans)
|
car.add_attr(self.cartrans)
|
||||||
self.viewer.add_geom(car)
|
self.viewer.add_geom(car)
|
||||||
frontwheel = rendering.make_circle(carheight / 2.5)
|
frontwheel = pyglet_rendering.make_circle(carheight / 2.5)
|
||||||
frontwheel.set_color(0.5, 0.5, 0.5)
|
frontwheel.set_color(0.5, 0.5, 0.5)
|
||||||
frontwheel.add_attr(
|
frontwheel.add_attr(
|
||||||
rendering.Transform(translation=(carwidth / 4, clearance))
|
pyglet_rendering.Transform(translation=(carwidth / 4, clearance))
|
||||||
)
|
)
|
||||||
frontwheel.add_attr(self.cartrans)
|
frontwheel.add_attr(self.cartrans)
|
||||||
self.viewer.add_geom(frontwheel)
|
self.viewer.add_geom(frontwheel)
|
||||||
backwheel = rendering.make_circle(carheight / 2.5)
|
backwheel = pyglet_rendering.make_circle(carheight / 2.5)
|
||||||
backwheel.add_attr(
|
backwheel.add_attr(
|
||||||
rendering.Transform(translation=(-carwidth / 4, clearance))
|
pyglet_rendering.Transform(translation=(-carwidth / 4, clearance))
|
||||||
)
|
)
|
||||||
backwheel.add_attr(self.cartrans)
|
backwheel.add_attr(self.cartrans)
|
||||||
backwheel.set_color(0.5, 0.5, 0.5)
|
backwheel.set_color(0.5, 0.5, 0.5)
|
||||||
@@ -146,9 +146,9 @@ class MountainCarEnv(gym.Env):
|
|||||||
flagx = (self.goal_position - self.min_position) * scale
|
flagx = (self.goal_position - self.min_position) * scale
|
||||||
flagy1 = self._height(self.goal_position) * scale
|
flagy1 = self._height(self.goal_position) * scale
|
||||||
flagy2 = flagy1 + 50
|
flagy2 = flagy1 + 50
|
||||||
flagpole = rendering.Line((flagx, flagy1), (flagx, flagy2))
|
flagpole = pyglet_rendering.Line((flagx, flagy1), (flagx, flagy2))
|
||||||
self.viewer.add_geom(flagpole)
|
self.viewer.add_geom(flagpole)
|
||||||
flag = rendering.FilledPolygon(
|
flag = pyglet_rendering.FilledPolygon(
|
||||||
[(flagx, flagy2), (flagx, flagy2 - 10), (flagx + 25, flagy2 - 5)]
|
[(flagx, flagy2), (flagx, flagy2 - 10), (flagx + 25, flagy2 - 5)]
|
||||||
)
|
)
|
||||||
flag.set_color(0.8, 0.8, 0)
|
flag.set_color(0.8, 0.8, 0)
|
||||||
|
@@ -58,21 +58,21 @@ class PendulumEnv(gym.Env):
|
|||||||
|
|
||||||
def render(self, mode="human"):
|
def render(self, mode="human"):
|
||||||
if self.viewer is None:
|
if self.viewer is None:
|
||||||
from gym.envs.classic_control import rendering
|
from gym.utils import pyglet_rendering
|
||||||
|
|
||||||
self.viewer = rendering.Viewer(500, 500)
|
self.viewer = pyglet_rendering.Viewer(500, 500)
|
||||||
self.viewer.set_bounds(-2.2, 2.2, -2.2, 2.2)
|
self.viewer.set_bounds(-2.2, 2.2, -2.2, 2.2)
|
||||||
rod = rendering.make_capsule(1, 0.2)
|
rod = pyglet_rendering.make_capsule(1, 0.2)
|
||||||
rod.set_color(0.8, 0.3, 0.3)
|
rod.set_color(0.8, 0.3, 0.3)
|
||||||
self.pole_transform = rendering.Transform()
|
self.pole_transform = pyglet_rendering.Transform()
|
||||||
rod.add_attr(self.pole_transform)
|
rod.add_attr(self.pole_transform)
|
||||||
self.viewer.add_geom(rod)
|
self.viewer.add_geom(rod)
|
||||||
axle = rendering.make_circle(0.05)
|
axle = pyglet_rendering.make_circle(0.05)
|
||||||
axle.set_color(0, 0, 0)
|
axle.set_color(0, 0, 0)
|
||||||
self.viewer.add_geom(axle)
|
self.viewer.add_geom(axle)
|
||||||
fname = path.join(path.dirname(__file__), "assets/clockwise.png")
|
fname = path.join(path.dirname(__file__), "assets/clockwise.png")
|
||||||
self.img = rendering.Image(fname, 1.0, 1.0)
|
self.img = pyglet_rendering.Image(fname, 1.0, 1.0)
|
||||||
self.imgtrans = rendering.Transform()
|
self.imgtrans = pyglet_rendering.Transform()
|
||||||
self.img.add_attr(self.imgtrans)
|
self.img.add_attr(self.imgtrans)
|
||||||
|
|
||||||
self.viewer.add_onetime(self.img)
|
self.viewer.add_onetime(self.img)
|
||||||
|
@@ -147,10 +147,10 @@ class CubeCrash(gym.Env):
|
|||||||
return self.last_obs
|
return self.last_obs
|
||||||
|
|
||||||
elif mode == "human":
|
elif mode == "human":
|
||||||
from gym.envs.classic_control import rendering
|
from gym.utils import pyglet_rendering
|
||||||
|
|
||||||
if self.viewer is None:
|
if self.viewer is None:
|
||||||
self.viewer = rendering.SimpleImageViewer()
|
self.viewer = pyglet_rendering.SimpleImageViewer()
|
||||||
self.viewer.imshow(self.last_obs)
|
self.viewer.imshow(self.last_obs)
|
||||||
return self.viewer.isopen
|
return self.viewer.isopen
|
||||||
|
|
||||||
|
@@ -128,10 +128,10 @@ class MemorizeDigits(gym.Env):
|
|||||||
return self.last_obs
|
return self.last_obs
|
||||||
|
|
||||||
elif mode == "human":
|
elif mode == "human":
|
||||||
from gym.envs.classic_control import rendering
|
from gym.utils import pyglet_rendering
|
||||||
|
|
||||||
if self.viewer is None:
|
if self.viewer is None:
|
||||||
self.viewer = rendering.SimpleImageViewer()
|
self.viewer = pyglet_rendering.SimpleImageViewer()
|
||||||
self.viewer.imshow(self.last_obs)
|
self.viewer.imshow(self.last_obs)
|
||||||
return self.viewer.isopen
|
return self.viewer.isopen
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user