def make(p1):
            n = 8
            p2 = p1 + Vec3(10, 0, 0)

            bodyNode = BulletSoftBodyNode.makeRope(info, p1, p2, n, 1)
            bodyNode.setTotalMass(50.0)
            bodyNP = self.worldNP.attachNewNode(bodyNode)
            self.world.attachSoftBody(bodyNode)

            # Render option 1: Line geom
            #geom = BulletSoftBodyNode.makeGeomFromLinks(bodyNode)
            #bodyNode.linkGeom(geom)
            #visNode = GeomNode('')
            #visNode.addGeom(geom)
            #visNP = bodyNP.attachNewNode(visNode)

            # Render option 2: NURBS curve
            curve = NurbsCurveEvaluator()
            curve.reset(n + 2)
            bodyNode.linkCurve(curve)

            visNode = RopeNode('')
            visNode.setCurve(curve)
            visNode.setRenderMode(RopeNode.RMTube)
            visNode.setUvMode(RopeNode.UVParametric)
            visNode.setNumSubdiv(4)
            visNode.setNumSlices(8)
            visNode.setThickness(0.4)
            visNP = self.worldNP.attachNewNode(visNode)
            #visNP = bodyNP.attachNewNode(visNode) # --> renders with offset!!!
            visNP.setTexture(loader.loadTexture('models/iron.jpg'))

            #bodyNP.showBounds()
            #visNP.showBounds()

            return bodyNP
Exemplo n.º 2
0
    def make(p1):
      n = 8
      p2 = p1 + Vec3(10, 0, 0)

      bodyNode = BulletSoftBodyNode.makeRope(info, p1, p2, n, 1) 
      bodyNode.setTotalMass(50.0)
      bodyNP = self.worldNP.attachNewNode(bodyNode)
      self.world.attachSoftBody(bodyNode)

      # Render option 1: Line geom
      #geom = BulletSoftBodyNode.makeGeomFromLinks(bodyNode)
      #bodyNode.linkGeom(geom)
      #visNode = GeomNode('')
      #visNode.addGeom(geom)
      #visNP = bodyNP.attachNewNode(visNode)

      # Render option 2: NURBS curve
      curve = NurbsCurveEvaluator()
      curve.reset(n + 2)
      bodyNode.linkCurve(curve)

      visNode = RopeNode('')
      visNode.setCurve(curve)
      visNode.setRenderMode(RopeNode.RMTube)
      visNode.setUvMode(RopeNode.UVParametric)
      visNode.setNumSubdiv(4)
      visNode.setNumSlices(8)
      visNode.setThickness(0.4)
      visNP = self.worldNP.attachNewNode(visNode)
      #visNP = bodyNP.attachNewNode(visNode) # --> renders with offset!!!
      visNP.setTexture(loader.loadTexture('models/iron.jpg'))

      #bodyNP.showBounds()
      #visNP.showBounds()

      return bodyNP