def make_water(water_density, water_length, water_width, water_height): """ Args: water_density: water_length: water_width: water_height: Returns: """ seafloorImageBuilder.save_new_seafloor_image(width=water_length) water_material = agx.Material("waterMaterial") water_material.getBulkMaterial().setDensity(water_density) water_geometry = agxCollide.Geometry( agxCollide.Box(water_length, water_width / 2, water_height / 2)) water_geometry.setPosition(0, 0, -water_height / 2) seafloor = MakeWater.make_seafloor(vairance=SEAFLOOR_VARIANCE, length=water_length * 2, width=water_width, depth=-water_height) """Surface of water at z = 0.""" water_geometry.setMaterial(water_material) MakeWater.add_color(water_geometry) """ ads visualisation""" agxOSG.createVisual(seafloor, demoutils.root()) print("build water and seafloor") return water_geometry, seafloor
def create_wire(density, size, body_1, pos_1, body_2, pos_2): """ Args: density: size: body_1: pos_1: body_2: pos_2: Returns: """ wire_material = agx.Material('wireMaterial') wire_material.getBulkMaterial().setDensity(density) wire = agxWire.Wire(size, WIRE_RESOLUTION, False) wire.setLinearVelocityDamping(0.8) wire.setMaterial(wire_material) wire.add(agxWire.BodyFixedNode(body_1.m_body, pos_1)) wire.add(agxWire.BodyFixedNode(body_2.link1, pos_2)) wire.setEnableCollisions(True) wire.setEnableCollisions(body_1.m_body, False) wire.setEnableCollisions(body_2.link1, False) wire_renderer = agxOSG.WireRenderer(wire, demoutils.root()) return wire, wire_renderer
def add_color(geomerty): waterNode = agxOSG.createVisual(geomerty, demoutils.root()) color = agxRender.Color.DeepSkyBlue() alpha = 0.4 agxOSG.setDiffuseColor(waterNode, color) agxOSG.setAmbientColor(waterNode, agx.Vec4f(1)) agxOSG.setShininess(waterNode, 120) agxOSG.setAlpha(waterNode, alpha)
def create_fenders(self, fender_material, r_fender, half_width, half_height, half_length): fender_color = agxRender.Color.Black() fender = agxCollide.Geometry(agxCollide.Capsule(0.2, half_width * 2)) fender.setPosition(half_length, 0, 0) self.m_body.add(fender) agxOSG.setDiffuseColor(agxOSG.createVisual(fender, demoutils.root()), fender_color) fender.setMaterial(fender_material)
def __init__(self, controller): super().__init__() self.controller = controller width = 2 * 1.5 right_fender = width * 0.25 length = 10 - right_fender * 0.4 ship_color = agxRender.Color.LightYellow() self.m_propulsion_force = 0 self.m_turn_fraction = 0.1 self.m_turn = 0 self.m_propulsion_step = 30 self.m_max_propulsion = 200000 self.m_min_propulsion = -500 self.init(width, length, right_fender) self.m_body.getMassProperties().setMass(1000 * 4) self.m_body.getCmFrame().setLocalTranslate(agx.Vec3(-0.2, 0, 0)) self.m_body.getGeometries()[0].setEnableCollisions(True) agxOSG.setDiffuseColor(agxOSG.createVisual(self.m_body, demoutils.root()), ship_color) """Create callbacks""" Sec.preCallback(lambda t: self.update_propulsion()) Sec.postCallback(lambda t: self.display_forces(t)) Sec.postCallback(lambda t: self.post(t))
def __init__(self, ground: agxCollide.Geometry, rov, depth): """ Args: ground: rov: depth: """ super().__init__() self.setMask(ContactEventListener.CONTACT) b = agxCollide.Box(.1, .1, depth) self.beam = Geometry(b) # print(self.beam.getShapes(),self.beam) self.beam.setPosition(0, 0, -depth) self.beam.setSensor(True) self.setFilter(GeometryFilter(self.beam, ground)) color = agxRender.Color.IndianRed() node = agxOSG.createVisual(self.beam, demoutils.root()) agxOSG.setDiffuseColor(node, color) agxOSG.setAmbientColor(node, agx.Vec4f(1)) agxOSG.setShininess(node, 120) agxOSG.setAlpha(node, 0.6) self.ground = ground.getShape().asHeightField()