in mujoco_worldgen/objs/geom.py [0:0]
def generate(self, random_state, world_params, placement_size):
min_size, max_size = establish_size(self.min_size, self.max_size)
# TODO: Current worldgen doesn't respect height.
for i in range(2):
max_size[i] = min(max_size[i], placement_size[i])
self.placements = OrderedDict()
if self.geom_type == "box":
self.size = min_size + (max_size - min_size) * \
random_state.uniform(size=3)
top_height = placement_size[2] - self.size[2]
top = OrderedDict(origin=(0, 0, self.size[2]),
size=(self.size[0], self.size[1], top_height))
self.placements['top'] = top
elif self.geom_type == "sphere":
min_size = np.max(min_size)
max_size = np.min(max_size)
assert(min_size <= max_size)
self.size = np.ones(
3) * (min_size + (max_size - min_size) * random_state.uniform(size=1))
elif self.geom_type == "cylinder":
self.size = min_size[:2] + (max_size[:2] - min_size[:2]) * \
random_state.uniform(size=2)
self.size = np.array([self.size[0], self.size[0], self.size[1]])