コード例 #1
0
ファイル: lwobimport.py プロジェクト: puzzlet/cgkit
    def handlePOLS(self, polys):
        """Handle the polygons.

        This method creates the actual object. It is assumed that the
        points have been read before and are stored in the TriMeshGeom.
        It is also assumed that a SRFS chunk was present and numsurfaces
        is initialized.
        """
        # Assume the mesh is a triangle mesh and initialize the TriMeshGeom
        # first. If this fails, use a PolyhedronGeom instead...
        if self._initTriMesh(polys):
            geom = self.trimeshgeom
        else:
            # Copy the vertices into the polyhedron geom...
            numverts = self.trimeshgeom.verts.size()
            self.polyhedrongeom.verts.resize(numverts)
            self.trimeshgeom.verts.copyValues(0, numverts,
                                              self.polyhedrongeom.verts, 0)
            del self.trimeshgeom
            # Initialize the polys...
            self._initPolyhedron(polys)
            geom = self.polyhedrongeom

        w = WorldObject(name="lwob", parent=self.parent)
        w.setNumMaterials(self.numsurfaces)
        w.geom = geom
        self.worldobj = w
コード例 #2
0
ファイル: trimesh.py プロジェクト: behnam/cgkit
    def __init__(self,
                 name="TriMesh",
                 dynamics=True,
                 static=False,
                 verts=[],
                 faces=[],
                 **params):
        WorldObject.__init__(self, name=name, **params)

        self.geom = TriMeshGeom()

        self.dynamics_slot = BoolSlot(dynamics)
        self.static_slot = BoolSlot(static)
        self.addSlot("dynamics", self.dynamics_slot)
        self.addSlot("static", self.static_slot)

        tm = self.geom
        
        if len(verts)>0:
            tm.verts.resize(len(verts))
            i = 0
            for v in verts:
                tm.verts.setValue(i, v)
                i+=1

        if len(faces)>0:
            tm.faces.resize(len(faces))
            i = 0
            for f in faces:
                tm.faces.setValue(i, f)
                i+=1
コード例 #3
0
ファイル: polyhedron.py プロジェクト: behnam/cgkit
    def __init__(self,
                 name = "Polyhedron",
#                 dynamics = False,
#                 static = False,
                 verts = [],
                 polys = [],
                 **params):
        WorldObject.__init__(self, name=name, **params)

        self.geom = PolyhedronGeom()

#        self.dynamics = dynamics
#        self.static_slot = BoolSlot(static)

        ph = self.geom
        
        if len(verts)>0:
            ph.verts.resize(len(verts))
            i = 0
            for v in verts:
                ph.verts.setValue(i, vec3(v))
                i+=1

        if len(polys)>0:
            ph.setNumPolys(len(polys))
            i = 0
            for poly in polys:
                ph.setPoly(i, poly)
                i+=1
コード例 #4
0
    def __init__(self,
                 name="TriMesh",
                 dynamics=True,
                 static=False,
                 verts=[],
                 faces=[],
                 **params):
        WorldObject.__init__(self, name=name, **params)

        self.geom = TriMeshGeom()

        self.dynamics_slot = BoolSlot(dynamics)
        self.static_slot = BoolSlot(static)
        self.addSlot("dynamics", self.dynamics_slot)
        self.addSlot("static", self.static_slot)

        tm = self.geom

        if len(verts) > 0:
            tm.verts.resize(len(verts))
            i = 0
            for v in verts:
                tm.verts.setValue(i, v)
                i += 1

        if len(faces) > 0:
            tm.faces.resize(len(faces))
            i = 0
            for f in faces:
                tm.faces.setValue(i, f)
                i += 1
コード例 #5
0
    def __init__(self,
                 name = "RIBArchive",
                 filename = None,
                 **params):
        WorldObject.__init__(self, name=name, **params)

        self.geom = RIBArchiveGeom(filename)
コード例 #6
0
    def __init__(
            self,
            name="Polyhedron",
            #                 dynamics = False,
            #                 static = False,
            verts=[],
            polys=[],
            **params):
        WorldObject.__init__(self, name=name, **params)

        self.geom = PolyhedronGeom()

        #        self.dynamics = dynamics
        #        self.static_slot = BoolSlot(static)

        ph = self.geom

        if len(verts) > 0:
            ph.verts.resize(len(verts))
            i = 0
            for v in verts:
                ph.verts.setValue(i, vec3(v))
                i += 1

        if len(polys) > 0:
            ph.setNumPolys(len(polys))
            i = 0
            for poly in polys:
                ph.setPoly(i, poly)
                i += 1
コード例 #7
0
ファイル: lwobimport.py プロジェクト: lickdragon/cgkit-debian
    def handlePOLS(self, polys):
        """Handle the polygons.

        This method creates the actual object. It is assumed that the
        points have been read before and are stored in the TriMeshGeom.
        It is also assumed that a SRFS chunk was present and numsurfaces
        is initialized.
        """
        # Assume the mesh is a triangle mesh and initialize the TriMeshGeom
        # first. If this fails, use a PolyhedronGeom instead...
        if self._initTriMesh(polys):
            geom = self.trimeshgeom
        else:
            # Copy the vertices into the polyhedron geom...
            numverts = self.trimeshgeom.verts.size()
            self.polyhedrongeom.verts.resize(numverts)
            self.trimeshgeom.verts.copyValues(0, numverts, self.polyhedrongeom.verts, 0)
            del self.trimeshgeom
            # Initialize the polys...
            self._initPolyhedron(polys)
            geom = self.polyhedrongeom

        w = WorldObject(name="lwob", parent=self.parent)
        w.setNumMaterials(self.numsurfaces)
        w.geom = geom
        self.worldobj = w
コード例 #8
0
ファイル: joints.py プロジェクト: Princu/Imagica
    def __init__(self,
                 name="HingeJoint",
                 transform=None,
                 pos=None,
                 rot=None,
                 scale=None,
                 pivot=None,
                 offsetTransform=None,
                 body1=None,
                 body2=None,
                 auto_insert=True):

        WorldObject.__init__(self,
                             name=name,
                             transform=transform,
                             pos=pos,
                             rot=rot,
                             scale=scale,
                             pivot=pivot,
                             offsetTransform=offsetTransform,
                             auto_insert=auto_insert)

        self.lostop_slot = DoubleSlot()
        self.histop_slot = DoubleSlot()
        self.motorvel_slot = DoubleSlot()
        self.motorfmax_slot = DoubleSlot()
        self.bounce_slot = DoubleSlot()

        self.body1 = body1
        self.body2 = body2
コード例 #9
0
 def __init__(self, p1, p2, p3, clr, kd=0.0, ks=0.0, se=6, kr=0.0):
     WorldObject.__init__(self, clr, kd, ks, se, kr)  # Call base class init
     self.p1 = p1  # 1st point on the Plane
     self.p2 = p2  # 2nd point on the Plane
     self.p3 = p3  # 3rd point on the Plane
     self.norm = pow(p2 - p1, p3 - p1).normalize()  # Normal to the Plane
     self.dist = self.norm * p1 * -1  # Distance from the origin
     self.uNorm = (p2 - p1).normalize()  # U-Axis for uv coordinates
     self.vNorm = pow(self.norm,
                      p2 - p1).normalize()  # V-Axis for uv coordinates
コード例 #10
0
    def __init__(self,
                 name="Torus",
                 major=1.0,
                 minor=0.1,
                 segmentsu=16,
                 segmentsv=8,
                 **params):
        WorldObject.__init__(self, name=name, **params)

        self.geom = TorusGeom(major, minor, segmentsu, segmentsv)
コード例 #11
0
ファイル: torus.py プロジェクト: behnam/cgkit
    def __init__(self,
                 name = "Torus",
                 major = 1.0,
                 minor = 0.1,
                 segmentsu = 16,
                 segmentsv = 8,
                 **params):
        WorldObject.__init__(self, name=name, **params)

        self.geom = TorusGeom(major, minor, segmentsu, segmentsv)
コード例 #12
0
    def __init__(self, name="", body1=None, body2=None, **params):
        WorldObject.__init__(self, name=name, **params)

        # ODEDynamics component
        self.odedynamics = None

        # The corresponding ODE joint
        self.odejoint = None

        self.body1 = body1
        self.body2 = body2
コード例 #13
0
ファイル: camerabase.py プロジェクト: npinto/cgkit
    def __init__(self,
                 auto_nearfar = True,
                 nearplane = 0.1,
                 farplane = 1000,
                 **params):
        WorldObject.__init__(self, **params)

        self.nearplane_slot = slots.DoubleSlot(nearplane)
        self.farplane_slot = slots.DoubleSlot(farplane)
        self.autonearfar_slot = slots.BoolSlot(auto_nearfar)
        self.addSlot("nearplane", self.nearplane_slot)
        self.addSlot("farplane", self.farplane_slot)
        self.addSlot("autonearfar", self.autonearfar_slot)
コード例 #14
0
ファイル: camerabase.py プロジェクト: puzzlet/cgkit
    def __init__(self,
                 auto_nearfar=True,
                 nearplane=0.1,
                 farplane=1000,
                 **params):
        WorldObject.__init__(self, **params)

        self.nearplane_slot = slots.DoubleSlot(nearplane)
        self.farplane_slot = slots.DoubleSlot(farplane)
        self.autonearfar_slot = slots.BoolSlot(auto_nearfar)
        self.addSlot("nearplane", self.nearplane_slot)
        self.addSlot("farplane", self.farplane_slot)
        self.addSlot("autonearfar", self.autonearfar_slot)
コード例 #15
0
ファイル: plane.py プロジェクト: behnam/cgkit
    def __init__(self,
                 name="Plane",
                 dynamics=True,
                 lx=1.0, ly=1.0, segmentsx=1, segmentsy=1,
                 **params):
        WorldObject.__init__(self, name=name, **params)

        self.geom = PlaneGeom(lx, ly, segmentsx, segmentsy)

        self.dynamics_slot = BoolSlot(dynamics)
        # The slot value must not be changed (should be enforced!)
        self.static_slot = BoolSlot(True)
        self.addSlot("dynamics", self.dynamics_slot)
        self.addSlot("static", self.static_slot)
コード例 #16
0
ファイル: box.py プロジェクト: behnam/cgkit
    def __init__(self,
                 name = "Box",
                 dynamics = True,
                 static = False,
                 lx=1.0, ly=1.0, lz=1.0,
                 segmentsx=1, segmentsy=1, segmentsz=1, **params):
        WorldObject.__init__(self, name=name, **params)

        self.geom = BoxGeom(lx, ly, lz, segmentsx, segmentsy, segmentsz)

        self.dynamics_slot = BoolSlot(dynamics)
        self.static_slot = BoolSlot(static)
        self.addSlot("dynamics", self.dynamics_slot)
        self.addSlot("static", self.static_slot)
コード例 #17
0
 def __init__(self,
              center,
              radius,
              clr,
              kd=0.0,
              ks=0.0,
              se=6,
              kr=0.0,
              kt=0.0,
              ni=1.6):
     WorldObject.__init__(self, clr, kd, ks, se, kr, kt,
                          ni)  # Call base class init
     self.center = center  # Center point of the sphere (vector)
     self.radius = radius  # Radius of the sphere (int)
コード例 #18
0
ファイル: odedynamics.py プロジェクト: npinto/cgkit
    def __init__(self,
                 name = "",
                 body1 = None,
                 body2 = None,
                 **params):
        WorldObject.__init__(self, name=name, **params)
        
        # ODEDynamics component
        self.odedynamics = None

        # The corresponding ODE joint
        self.odejoint = None

        self.body1 = body1
        self.body2 = body2
コード例 #19
0
ファイル: beziercurve.py プロジェクト: behnam/cgkit
    def __init__(self,
                 name = "BezierCurve",
                 pnts = None,
                 closed = False,
                 epsilon = 0.01,
                 subdiv = 4,
                 show_tangents = False,
                 curvegeom = None,
                 **params):
        WorldObject.__init__(self, name=name, **params)

        if curvegeom!=None:
            self.geom = curvegeom
        else:
            self.geom = BezierCurveGeom(pnts=pnts, closed=closed, epsilon=epsilon, subdiv=subdiv, show_tangents=show_tangents)
コード例 #20
0
ファイル: quadrics.py プロジェクト: behnam/cgkit
    def __init__(self,
                 name="Sphere",
                 dynamics=True,
                 static=False,
                 radius=1.0,
                 segmentsu=16,
                 segmentsv=8,
                 **params):
        WorldObject.__init__(self, name=name, **params)

        self.geom = SphereGeom(radius, segmentsu, segmentsv)

        self.dynamics_slot = BoolSlot(dynamics)
        self.static_slot = BoolSlot(static)
        self.addSlot("dynamics", self.dynamics_slot)
        self.addSlot("static", self.static_slot)
コード例 #21
0
ファイル: plane.py プロジェクト: Princu/Imagica
    def __init__(self,
                 name="Plane",
                 dynamics=True,
                 lx=1.0,
                 ly=1.0,
                 segmentsx=1,
                 segmentsy=1,
                 **params):
        WorldObject.__init__(self, name=name, **params)

        self.geom = PlaneGeom(lx, ly, segmentsx, segmentsy)

        self.dynamics_slot = BoolSlot(dynamics)
        # The slot value must not be changed (should be enforced!)
        self.static_slot = BoolSlot(True)
        self.addSlot("dynamics", self.dynamics_slot)
        self.addSlot("static", self.static_slot)
コード例 #22
0
ファイル: ellipse.py プロジェクト: pkkid/neu-raytracing
 def __init__(self,
              center,
              a,
              b,
              c,
              clr,
              kd=0.0,
              ks=0.0,
              se=6,
              kr=0.0,
              kt=0.0,
              ni=1.6):
     WorldObject.__init__(self, clr, kd, ks, se, kr, kt,
                          ni)  # Call base class init
     self.center = center  # Center point of the sphere (vector)
     self.a = a  # Radius of the sphere on X Axis
     self.b = b  # Radius of the sphere on Y Axis
     self.c = c  # Radius of the sphere on Z Axis
コード例 #23
0
ファイル: box.py プロジェクト: Princu/Imagica
    def __init__(self,
                 name="Box",
                 dynamics=True,
                 static=False,
                 lx=1.0,
                 ly=1.0,
                 lz=1.0,
                 segmentsx=1,
                 segmentsy=1,
                 segmentsz=1,
                 **params):
        WorldObject.__init__(self, name=name, **params)

        self.geom = BoxGeom(lx, ly, lz, segmentsx, segmentsy, segmentsz)

        self.dynamics_slot = BoolSlot(dynamics)
        self.static_slot = BoolSlot(static)
        self.addSlot("dynamics", self.dynamics_slot)
        self.addSlot("static", self.static_slot)
コード例 #24
0
ファイル: beziercurve.py プロジェクト: Princu/Imagica
    def __init__(self,
                 name="BezierCurve",
                 pnts=None,
                 closed=False,
                 epsilon=0.01,
                 subdiv=4,
                 show_tangents=False,
                 curvegeom=None,
                 **params):
        WorldObject.__init__(self, name=name, **params)

        if curvegeom != None:
            self.geom = curvegeom
        else:
            self.geom = BezierCurveGeom(pnts=pnts,
                                        closed=closed,
                                        epsilon=epsilon,
                                        subdiv=subdiv,
                                        show_tangents=show_tangents)
コード例 #25
0
    def __init__(self,
                 name="CCylinder",
                 dynamics=True,
                 static=False,
                 radius=1.0,
                 length=1.0,
                 segmentsu=16,
                 segmentsvl=1,
                 segmentsvr=4,
                 **params):
        WorldObject.__init__(self, name=name, **params)

        self.geom = CCylinderGeom(radius, length, segmentsu, segmentsvl,
                                  segmentsvr)

        self.dynamics_slot = BoolSlot(dynamics)
        self.static_slot = BoolSlot(static)
        self.addSlot("dynamics", self.dynamics_slot)
        self.addSlot("static", self.static_slot)
コード例 #26
0
ファイル: ccylinder.py プロジェクト: lickdragon/cgkit-debian
    def __init__(
        self,
        name="CCylinder",
        dynamics=True,
        static=False,
        radius=1.0,
        length=1.0,
        segmentsu=16,
        segmentsvl=1,
        segmentsvr=4,
        **params
    ):
        WorldObject.__init__(self, name=name, **params)

        self.geom = CCylinderGeom(radius, length, segmentsu, segmentsvl, segmentsvr)

        self.dynamics_slot = BoolSlot(dynamics)
        self.static_slot = BoolSlot(static)
        self.addSlot("dynamics", self.dynamics_slot)
        self.addSlot("static", self.static_slot)
コード例 #27
0
ファイル: joint.py プロジェクト: behnam/cgkit
    def __init__(self,
                 name = "Joint",
                 radius = 0.05,
                 rotationorder = "xyz",
                 **params):
        
        WorldObject.__init__(self, name=name, **params)

        self.geom = JointGeom(self, radius=radius)

        self.euleradapter = EulerAdapter(order=rotationorder, outtype="mat3", auto_insert=False)
        self.nullrot = Mult(auto_insert=False)
        
#        self.euleradapter.output_slot.connect(self.rot_slot)
        self.nullrot.op1 = mat3(1)
        self.euleradapter.output_slot.connect(self.nullrot.op2_slot)
        self.nullrot.output_slot.connect(self.rot_slot)

        self.anglex_slot = self.euleradapter.anglex_slot
        self.angley_slot = self.euleradapter.angley_slot
        self.anglez_slot = self.euleradapter.anglez_slot
コード例 #28
0
ファイル: joints.py プロジェクト: behnam/cgkit
    def __init__(self,
                 name="HingeJoint",
                 transform=None,
                 pos=None, rot=None, scale=None,
                 pivot=None,
                 offsetTransform=None,
                 body1=None, body2=None,
                 auto_insert=True):
        
        WorldObject.__init__(self, name=name, transform=transform,
                             pos=pos, rot=rot, scale=scale, pivot=pivot,
                             offsetTransform=offsetTransform,
                             auto_insert=auto_insert)

        self.lostop_slot = DoubleSlot()
        self.histop_slot = DoubleSlot()
        self.motorvel_slot = DoubleSlot()
        self.motorfmax_slot = DoubleSlot()
        self.bounce_slot = DoubleSlot()

        self.body1 = body1
        self.body2 = body2
コード例 #29
0
ファイル: joint.py プロジェクト: Princu/Imagica
    def __init__(self,
                 name="Joint",
                 radius=0.05,
                 rotationorder="xyz",
                 **params):

        WorldObject.__init__(self, name=name, **params)

        self.geom = JointGeom(self, radius=radius)

        self.euleradapter = EulerAdapter(order=rotationorder,
                                         outtype="mat3",
                                         auto_insert=False)
        self.nullrot = Mult(auto_insert=False)

        #        self.euleradapter.output_slot.connect(self.rot_slot)
        self.nullrot.op1 = mat3(1)
        self.euleradapter.output_slot.connect(self.nullrot.op2_slot)
        self.nullrot.output_slot.connect(self.rot_slot)

        self.anglex_slot = self.euleradapter.anglex_slot
        self.angley_slot = self.euleradapter.angley_slot
        self.anglez_slot = self.euleradapter.anglez_slot
コード例 #30
0
ファイル: group.py プロジェクト: behnam/cgkit
    def __init__(self,
                 name="group",
                 dynamics=True,
                 static=False,
                 childs=[],
                 **params):
        """Constructor.

        \param name (\c str) Object name
        \param childs (\c list) A list of WorldObjects or object names.
        """
        WorldObject.__init__(self, name=name, **params)

        self.dynamics_slot = BoolSlot(dynamics)
        self.static_slot = BoolSlot(static)
        self.addSlot("dynamics", self.dynamics_slot)
        self.addSlot("static", self.static_slot)
        
        for c in childs:
            c = cmds.worldObject(c)
            if c.parent!=None:
                c.parent.removeChild(c)
            self.addChild(c)
コード例 #31
0
    def __init__(self,
                 name="group",
                 dynamics=True,
                 static=False,
                 childs=[],
                 **params):
        """Constructor.

        \param name (\c str) Object name
        \param childs (\c list) A list of WorldObjects or object names.
        """
        WorldObject.__init__(self, name=name, **params)

        self.dynamics_slot = BoolSlot(dynamics)
        self.static_slot = BoolSlot(static)
        self.addSlot("dynamics", self.dynamics_slot)
        self.addSlot("static", self.static_slot)

        for c in childs:
            c = cmds.worldObject(c)
            if c.parent != None:
                c.parent.removeChild(c)
            self.addChild(c)
コード例 #32
0
ファイル: plane.py プロジェクト: pkkid/neu-raytracing
 def __init__(self, norm, dist, clr, kd=0.0, ks=0.0, se=6, kr=0.0):
     WorldObject.__init__(self, clr, kd, ks, se, kr)  # Call base class init
     self.norm = norm.normalize()  # Normal to the Plane
     self.dist = dist  # Scalar Distance from origin
コード例 #33
0
def init_test_object():
    global _test_object, _child1, _child2, _child3, _child4
    color = np.array(
        [[1.0, 0.0, 0.0, 1.0], [0.5, 0.0, 0.0, 1.0], [0.0, 1.0, 0.0, 1.0],
         [0.0, 0.5, 0.0, 1.0], [0.0, 0.0, 1.0, 1.0], [0.0, 0.0, 0.5, 1.0]],
        c_float)
    long_rect = RectPrismMesh(0.5, 0.1, 0.1, face_colors=color)
    _child1 = WorldObject(long_rect)
    _child2 = WorldObject(long_rect)
    _child3 = WorldObject(long_rect)
    _child4 = WorldObject(long_rect)
    _child1.set_local_position((1.25, 0.0, 0.0))
    _child2.set_local_position((0.0, 1.25, 0.0))
    _child3.set_local_position((-1.25, 0.0, 0.0))
    _child4.set_local_position((0.0, -1.25, 0.0))
    _child1.set_local_rotation((0.0, 0.0, 0.0))
    _child2.set_local_rotation((0.0, 0.0, glm.radians(90.0)))
    _child3.set_local_rotation((0.0, 0.0, glm.radians(180.0)))
    _child4.set_local_rotation((0.0, 0.0, glm.radians(270.0)))
    cube = RectPrismMesh(0.5, 0.5, 0.5, face_colors=color)
    _test_object = WorldObject(cube)
    _test_object.set_render_mode(gl.GL_LINE_LOOP)
    _test_object.add_child(_child1)
    _test_object.add_child(_child2)
    _test_object.add_child(_child3)
    _test_object.add_child(_child4)
コード例 #34
0
ファイル: draw.py プロジェクト: behnam/cgkit
 def __init__(self,
              name="Draw",
              **params):
     WorldObject.__init__(self, name=name, **params)
     self.geom = DrawGeom()