def _add_rendering(self, mode='osg'): # Set renderer self.app.setAutoStepping(True) self.app.setEnableDebugRenderer(False) self.app.setEnableOSGRenderer(True) file_directory = os.path.dirname(os.path.abspath(__file__)) package_directory = os.path.split(file_directory)[0] gripper_texture = os.path.join(package_directory, TEXTURE_GRIPPER_FILE) # Create scene graph for rendering root = self.app.getSceneRoot() rbs = self.sim.getRigidBodies() for rb in rbs: node = agxOSG.createVisual(rb, root) if rb.getName() == "hollow_cylinder": agxOSG.setDiffuseColor(node, agxRender.Color_SteelBlue()) agxOSG.setShininess(node, 15) elif rb.getName() == "gripper_body": agxOSG.setDiffuseColor(node, agxRender.Color(1.0, 1.0, 1.0, 1.0)) agxOSG.setTexture(node, gripper_texture, False, agxOSG.DIFFUSE_TEXTURE) agxOSG.setShininess(node, 2) elif "dlo" in rb.getName(): # Cable segments agxOSG.setDiffuseColor(node, agxRender.Color(0.0, 1.0, 0.0, 1.0)) else: agxOSG.setDiffuseColor(node, agxRender.Color.Beige()) agxOSG.setAlpha(node, 0.0) # Set rendering options scene_decorator = self.app.getSceneDecorator() scene_decorator.setEnableLogo(False) scene_decorator.setBackgroundColor(agxRender.Color(1.0, 1.0, 1.0, 1.0))
def _add_rendering(self, mode='osg'): # Set renderer self.app.setAutoStepping(True) self.app.setEnableDebugRenderer(False) self.app.setEnableOSGRenderer(True) # Create scene graph for rendering root = self.app.getSceneRoot() rbs = self.sim.getRigidBodies() for rb in rbs: node = agxOSG.createVisual(rb, root) if rb.getName() == "ground": agxOSG.setDiffuseColor(node, agxRender.Color.SlateGray()) elif rb.getName() == "cylinder_top_0" or rb.getName( ) == "cylinder_top_1" or rb.getName() == "cylinder_top_2": agxOSG.setDiffuseColor(node, agxRender.Color.DarkGray()) elif rb.getName() == "cylinder_inner_0" or rb.getName( ) == "cylinder_inner_1" or rb.getName() == "cylinder_inner_2": agxOSG.setDiffuseColor(node, agxRender.Color.LightSteelBlue()) elif rb.getName() == "cylinder_low_0" or rb.getName( ) == "cylinder_low_1" or rb.getName() == "cylinder_low_2": agxOSG.setDiffuseColor(node, agxRender.Color.DarkGray()) elif rb.getName() == "gripper": agxOSG.setDiffuseColor(node, agxRender.Color.DarkBlue()) elif "dlo" in rb.getName(): # Cable segments agxOSG.setDiffuseColor(node, agxRender.Color(0.8, 0.2, 0.2, 1.0)) else: agxOSG.setDiffuseColor(node, agxRender.Color.Beige()) agxOSG.setAlpha(node, 0.0) # Set rendering options scene_decorator = self.app.getSceneDecorator() scene_decorator.setEnableLogo(False) scene_decorator.setBackgroundColor(agxRender.Color(1.0, 1.0, 1.0, 1.0))
def setTriggered(self, trigger_status): self.triggered = trigger_status if self.triggered: agxColor = agxRender.Color(0, 1, 0) else: agxColor = agxRender.Color(1, 0, 0) agxOSG.setDiffuseColor(self.laser_vis, agxColor) agxOSG.setAlpha(self.laser_vis, 0.5)
def create_water_visual(geo, root): node = agxOSG.createVisual(geo, root) diffuse_color = agxRender.Color(0.0, 0.75, 1.0, 1) ambient_color = agxRender.Color(1, 1, 1, 1) specular_color = agxRender.Color(1, 1, 1, 1) agxOSG.setDiffuseColor(node, diffuse_color) agxOSG.setAmbientColor(node, ambient_color) agxOSG.setSpecularColor(node, specular_color) agxOSG.setShininess(node, 120) agxOSG.setAlpha(node, 0.5) return node
def _add_rendering(self): self.app.setAutoStepping(False) if not self.root: self.root = self.app.getRoot() rbs = self.sim.getRigidBodies() for rb in rbs: name = rb.getName() node = agxOSG.createVisual(rb, self.root) if name == "ground": agxOSG.setDiffuseColor(node, agxRender.Color.SlateGray()) elif "gripper_left" in name and "base" not in name: agxOSG.setDiffuseColor(node, agxRender.Color.Red()) elif "gripper_right" in name and "base" not in name: agxOSG.setDiffuseColor(node, agxRender.Color.Blue()) elif "pusher" in name and "base" not in name: agxOSG.setDiffuseColor(node, agxRender.Color.Yellow()) elif "dlo" in name: agxOSG.setDiffuseColor(node, agxRender.Color.Green()) elif "obstacle" in name or "cylinder" in name: agxOSG.setDiffuseColor(node, agxRender.Color.SteelBlue()) elif "bounding_box" in name: agxOSG.setDiffuseColor(node, agxRender.Color.Burlywood()) else: agxOSG.setAlpha(node, 0) logger.info("No color set for {}.".format(name)) if "goal" in name and "base" not in name: agxOSG.setAlpha(node, 0.2) scene_decorator = self.app.getSceneDecorator() light_source_0 = scene_decorator.getLightSource(agxOSG.SceneDecorator.LIGHT0) light_source_0.setPosition(self.light_pose['light_position']) light_source_0.setDirection(self.light_pose['light_direction']) scene_decorator.setEnableLogo(False) scene_decorator.setBackgroundColor(agxRender.Color(1.0, 1.0, 1.0, 1.0))
def add_rendering(sim): camera_distance = 0.5 light_pos = agx.Vec4(LENGTH / 2, - camera_distance, camera_distance, 1.) light_dir = agx.Vec3(0., 0., -1.) app = agxOSG.ExampleApplication(sim) app.setAutoStepping(True) app.setEnableDebugRenderer(False) app.setEnableOSGRenderer(True) scene_decorator = app.getSceneDecorator() light_source_0 = scene_decorator.getLightSource(agxOSG.SceneDecorator.LIGHT0) light_source_0.setPosition(light_pos) light_source_0.setDirection(light_dir) root = app.getRoot() rbs = sim.getRigidBodies() for rb in rbs: name = rb.getName() node = agxOSG.createVisual(rb, root) if name == "ground": agxOSG.setDiffuseColor(node, agxRender.Color.Gray()) elif name == "pusher": agxOSG.setDiffuseColor(node, agxRender.Color(0.0, 0.0, 1.0, 1.0)) elif "obstacle" in name: agxOSG.setDiffuseColor(node, agxRender.Color(1.0, 0.0, 0.0, 1.0)) elif "dlo" in name: agxOSG.setDiffuseColor(node, agxRender.Color(0.0, 1.0, 0.0, 1.0)) elif "bounding_box" in name: agxOSG.setDiffuseColor(node, agxRender.Color.Burlywood()) else: # Base segments agxOSG.setDiffuseColor(node, agxRender.Color.Beige()) agxOSG.setAlpha(node, 0.2) if "goal" in name: agxOSG.setAlpha(node, 0.2) scene_decorator = app.getSceneDecorator() light_source_0 = scene_decorator.getLightSource(agxOSG.SceneDecorator.LIGHT0) light_source_0.setPosition(light_pos) light_source_0.setDirection(light_dir) scene_decorator.setEnableLogo(False) return app
def add_rendering(sim): camera_distance = 0.5 light_pos = agx.Vec4(CYLINDER_LENGTH / 2, -camera_distance, camera_distance, 1.) light_dir = agx.Vec3(0., 0., -1.) app = agxOSG.ExampleApplication(sim) app.setAutoStepping(False) root = app.getRoot() rbs = sim.getRigidBodies() for rb in rbs: name = rb.getName() node = agxOSG.createVisual(rb, root, 2.0) if "ring" in name: agxOSG.setDiffuseColor(node, COLOR_RING) elif "ground" in name: agxOSG.setDiffuseColor(node, COLOR_GROUND) elif "cylinder" in name: agxOSG.setDiffuseColor(node, COLOR_CYLINDER) elif "gripper_right" == name: agxOSG.setDiffuseColor(node, agxRender.Color(0.0, 0.0, 1.0, 1.0)) elif "gripper_left" == name: agxOSG.setDiffuseColor(node, agxRender.Color(1.0, 0.0, 0.0, 1.0)) else: agxOSG.setDiffuseColor(node, agxRender.Color.Beige()) agxOSG.setAlpha(node, 0.2) app.setEnableDebugRenderer(False) app.setEnableOSGRenderer(True) scene_decorator = app.getSceneDecorator() light_source_0 = scene_decorator.getLightSource( agxOSG.SceneDecorator.LIGHT0) light_source_0.setPosition(light_pos) light_source_0.setDirection(light_dir) scene_decorator.setEnableLogo(False) return app
def add_cylinderShape(MiroSystem, radius, height, density, pos, texture='test.jpg', scale=[1,1], Collide=True, Fixed=True, rotX=0, rotY=0, rotZ=0, rotOrder=['x','y','z'], rotAngle=0, rotAxis=[1,0,0], rotDegrees=True, color=[0.5, 0.5, 0.5]): '''system, size_x, size_y, size_z, pos, texture, scale = [5,5], hitbox = True/False''' # Convert position to chrono vector, supports using chvector as input as well agxSim = agxPython.getContext().environment.getSimulation() agxApp = agxPython.getContext().environment.getApplication() agxRoot = agxPython.getContext().environment.getSceneRoot() agxPos = agxVecify(pos) agxRotAxis = agxVecify(rotAxis) scale = scaleLimit(scale) # Create a cylinder body_geo = agxCollide.Geometry(agxCollide.Cylinder(radius, height)) body_geo.setName("body") body_geo.setEnableCollisions(Collide) body_cylinder = agx.RigidBody(body_geo) body_cylinder.getMassProperties().setMass(body_geo.calculateVolume()*density) if Fixed: body_cylinder.setMotionControl(1) body_cylinder.setPosition(agxPos) rotateBody(body_cylinder, rotX=-90) rotateBody(body_cylinder, rotX, rotY, rotZ, rotOrder, rotAngle, rotAxis, rotDegrees) # Collision shape # if(Collide): # Visualization shape body_shape = agxOSG.createVisual(body_cylinder, agxRoot) # Body texture if texture: # Filter 'textures/' out of the texture name, it's added later if len(texture) > len('textures/'): if texture[0:len('textures/')] == 'textures/': texture = texture[len('textures/'):] if TEXTURES_ON: if texture not in LOADED_TEXTURES.keys(): agxTex = agxOSG.createTexture(TEXTURE_PATH+texture) LOADED_TEXTURES.update({texture: agxTex}) agxOSG.setTexture(body_shape, LOADED_TEXTURES[texture], True, agxOSG.DIFFUSE_TEXTURE, -scale[0], scale[1]) else: color = backupColor(texture, color) texture = False if not texture: agxColor = agxRender.Color(color[0], color[1], color[2]) agxOSG.setDiffuseColor(body_shape, agxColor) if len(color) > 3: agxOSG.setAlpha(body_shape, color[3]) agxSim.add(body_cylinder) return body_cylinder
def add_rendering(sim): app = agxOSG.ExampleApplication(sim) # Set renderer app.setAutoStepping(True) app.setEnableDebugRenderer(False) app.setEnableOSGRenderer(True) # Create scene graph for rendering root = app.getSceneRoot() rbs = sim.getRigidBodies() for rb in rbs: node = agxOSG.createVisual(rb, root) if rb.getName() == "ground": agxOSG.setDiffuseColor(node, agxRender.Color(0.8, 0.8, 0.8, 1.0)) elif rb.getName() == "walls": agxOSG.setDiffuseColor(node, agxRender.Color.Burlywood()) elif rb.getName() == "cylinder": agxOSG.setDiffuseColor(node, agxRender.Color.DarkGray()) elif rb.getName() == "cylinder_inner": agxOSG.setDiffuseColor(node, agxRender.Color.LightSteelBlue()) elif rb.getName() == "gripper_0" or rb.getName() == "gripper_1": agxOSG.setDiffuseColor(node, agxRender.Color(0.1, 0.1, 0.1, 1.0)) elif "dlo" in rb.getName(): # Cable segments agxOSG.setDiffuseColor(node, agxRender.Color(0.1, 0.5, 0.0, 1.0)) agxOSG.setAmbientColor(node, agxRender.Color(0.2, 0.5, 0.0, 1.0)) elif rb.getName() == "obstacle": agxOSG.setDiffuseColor(node, agxRender.Color(0.5, 0.5, 0.5, 1.0)) elif rb.getName() == "obstacle_goal": agxOSG.setDiffuseColor(node, agxRender.Color(0.0, 0.0, 1.0, 1.0)) else: agxOSG.setDiffuseColor(node, agxRender.Color.Beige()) agxOSG.setAlpha(node, 0.0) # Set rendering options scene_decorator = app.getSceneDecorator() scene_decorator.setEnableLogo(False) scene_decorator.setBackgroundColor(agxRender.Color(1.0, 1.0,1.0, 1.0)) return app
def add_boxShape(MiroSystem, size_x, size_y, size_z, pos, texture=False, scale=[4,3], Collide=True, Fixed=True, rotX=0, rotY=0, rotZ=0, rotOrder=['x','y','z'], rotAngle=0, rotAxis=[1,0,0], rotDegrees=True, mass=False, density=1000, dynamic=False, color=[0.5, 0.5, 0.5], friction=False): '''system, size_x, size_y, size_z, pos, texture, scale = [5,5], hitbox = True/False''' # Convert position to chrono vector, supports using chvector as input as well agxSim = agxPython.getContext().environment.getSimulation() agxApp = agxPython.getContext().environment.getApplication() agxRoot = agxPython.getContext().environment.getSceneRoot() agxPos = agxVecify(pos) agxRotAxis = agxVecify(rotAxis) [size_x, size_y, size_z] = xyzTransform([size_x, size_y, size_z], True) scale = [scale[0]/4, scale[1]/3] # Create a box body_geo = agxCollide.Geometry( agxCollide.Box(size_x/2, size_y/2, size_z/2)) body_geo.setName("body") if friction: high_friction_tires = agx.Material('Tires', 0.05, friction) body_geo.setMaterial(high_friction_tires) body_geo.setEnableCollisions(Collide) body_box = agx.RigidBody(body_geo) if mass: body_box.getMassProperties().setMass(mass) else: body_box.getMassProperties().setMass(body_geo.calculateVolume()*density) if Fixed: body_box.setMotionControl(1) body_box.setPosition(agxPos) rotateBody(body_box, rotX, rotY, rotZ, rotOrder, rotAngle, rotAxis, rotDegrees) # Collision shape # if(Collide): # Visualization shape body_shape = agxOSG.createVisual(body_box, agxRoot) # Body texture if texture: # Filter 'textures/' out of the texture name, it's added later if len(texture) > len('textures/'): if texture[0:len('textures/')] == 'textures/': texture = texture[len('textures/'):] if TEXTURES_ON or texture in important_textures: if texture not in LOADED_TEXTURES.keys(): agxTex = agxOSG.createTexture(TEXTURE_PATH+texture) LOADED_TEXTURES.update({texture: agxTex}) if TEXTURE_PATH == 'textures_lowres/' and texture=='yellow_brick.jpg': scale[0] = 11*scale[0] scale[1] = 8*scale[1] agxOSG.setTexture(body_shape, TEXTURE_PATH+texture, True, agxOSG.DIFFUSE_TEXTURE, scale[0], scale[1]) else: color = backupColor(texture, color) texture = False if not texture: agxColor = agxRender.Color(color[0], color[1], color[2]) agxOSG.setDiffuseColor(body_shape, agxColor) if len(color) > 3: agxOSG.setAlpha(body_shape, color[3]) agxSim.add(body_box) return body_box