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))
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)
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 __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()
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())
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):