Example #1
0
    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
Example #2
0
    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
Example #3
0
 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)
Example #4
0
    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)
Example #5
0
    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))
Example #6
0
    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()