Ejemplo n.º 1
0
    def addNotification(self):
        if self.text_table:
            start_row = self.row - len(self.text_table)
            for i, v in enumerate(self.text_table):
                self.app.getSceneDecorator().setText(
                    start_row + i - 1, v, agx.Vec4f(0.3, 0.6, 0.7, 1))

        self.app.getSceneDecorator().setText(self.row,
                                             "Press e to start simulation",
                                             agx.Vec4f(0.3, 0.6, 0.7, 1))
Ejemplo n.º 2
0
    def pre(self, t):
        if t > 3.0:
            self.app.getSceneDecorator().setText(self.row, "",
                                                 agx.Vec4f(1, 1, 1, 1))
            if self.text_table:
                start_row = self.row - len(self.text_table)
                for i, v in enumerate(self.text_table):
                    self.app.getSceneDecorator().setText(
                        start_row + i - 1, "", agx.Vec4f(0.3, 0.6, 0.7, 1))

            self.getSimulation().remove(self)
Ejemplo n.º 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)
Ejemplo n.º 4
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()
Ejemplo n.º 5
0
    def preCollide(self, t):
        if self._draw_lines:
            pos = self._lidar_body.getPosition()
            for k, v in self._rays_dict.items():
                color = v[1] / self._max_length
                ray = v[0].getShapes()[0].asLine()
                f = v[0].getFrame()
                d = f.transformPointToWorld(ray.getSecondPoint()) - pos
                agxRender.RenderSingleton.instance().add(pos, pos + v[1] * d.normal(), 0.025, agx.Vec4f(1-color**0.4, color**0.4, 0, 1))

        # clear rays
        for k in self._rays_dict.keys():
            self._rays_dict[k][1] = self._max_length

        if self._relative_transform:
            self._lidar_body.setTransform(self._relative_transform * self._rb_origin.getTransform())
Ejemplo n.º 6
0
import agx
import agxOSG
import agxUtil
import agxPython
import agxCollide

import agxUtil

from types import SimpleNamespace

gray = agx.Vec4f(0.20, 0.200, 0.200, 1)
orange = agx.Vec4f(0.89, 0.431, 0.145, 1)


class Set():
    """Container class that suppors lookup both using object and dictionary
    style, and iteration. Names must be unique, and inserts with an already
    existing key will be rejected.

    ex:
    bodies = Set()
    bodies.append("first", agx.RigidBody())
    bodies["second"] = agx.RigidBody()

    bodies.first.getName()
    bodies["second"].getName()
    for body in bodies:
        body.getName()
    bodies.append("first", agx.RigidBody("This insert will fail."))
    """
    def __init__(self):