예제 #1
0
	def draw_face(self,f,f_color):
		#add normal
		format = GeomVertexFormat.getV3n3cp()
		vdata=GeomVertexData('vert', format, Geom.UHDynamic)
		vertex=GeomVertexWriter(vdata, 'vertex')
		color=GeomVertexWriter(vdata, 'color')
		normal=GeomVertexWriter(vdata, 'normal')

		vertex.addData3f(f.v1.pos)
		normal.addData3f(f.v1.norm.x, f.v1.norm.y, f.v1.norm.z)
		color.addData4f(f_color)

		vertex.addData3f(f.v2.pos)
		normal.addData3f(f.v2.norm.x, f.v2.norm.y, f.v2.norm.z)
		color.addData4f(f_color)	

		vertex.addData3f(f.v3.pos)
		normal.addData3f(f.v3.norm.x, f.v3.norm.y, f.v3.norm.z)		
		color.addData4f(f_color)		

		mesh = Geom(vdata)
		tri = GeomTriangles(Geom.UHDynamic)
		tri.addVertex(0)
		tri.addVertex(1)
		tri.addVertex(2)
		tri.closePrimitive()
		mesh.addPrimitive(tri)
		face_node = GeomNode(self.mesh.name+'_face_'+str(f.ID))
		face_node.addGeom(mesh)
		face_node.setTag('ID',str(f.ID))
		rendered_face = self.render_root.attachNewNode(face_node)
		rendered_face.setTwoSided(True)
		self.render_nodes['face_'+str(f.ID)] = rendered_face
예제 #2
0
    def draw_face(self, f, f_color):
        #add normal
        format = GeomVertexFormat.getV3n3cp()
        vdata = GeomVertexData('vert', format, Geom.UHDynamic)
        vertex = GeomVertexWriter(vdata, 'vertex')
        color = GeomVertexWriter(vdata, 'color')
        normal = GeomVertexWriter(vdata, 'normal')

        vertex.addData3f(f.v1.pos)
        normal.addData3f(f.v1.norm.x, f.v1.norm.y, f.v1.norm.z)
        color.addData4f(f_color)

        vertex.addData3f(f.v2.pos)
        normal.addData3f(f.v2.norm.x, f.v2.norm.y, f.v2.norm.z)
        color.addData4f(f_color)

        vertex.addData3f(f.v3.pos)
        normal.addData3f(f.v3.norm.x, f.v3.norm.y, f.v3.norm.z)
        color.addData4f(f_color)

        mesh = Geom(vdata)
        tri = GeomTriangles(Geom.UHDynamic)
        tri.addVertex(0)
        tri.addVertex(1)
        tri.addVertex(2)
        tri.closePrimitive()
        mesh.addPrimitive(tri)
        face_node = GeomNode(self.mesh.name + '_face_' + str(f.ID))
        face_node.addGeom(mesh)
        face_node.setTag('ID', str(f.ID))
        rendered_face = self.render_root.attachNewNode(face_node)
        rendered_face.setTwoSided(True)
        self.render_nodes['face_' + str(f.ID)] = rendered_face
예제 #3
0
    def create_model(self):
        vdata = GeomVertexData('name', Diagram.gformat, Geom.UHStatic)
        vdata.setNumRows(len(self.values)*2)

        vertex = GeomVertexWriter(vdata, 'vertex')
        color = GeomVertexWriter(vdata, 'color')
        prim = GeomTristrips(Geom.UHStatic)

        i = 0
        for x, z in self.values:
            vertex.addData3(0, x, 0)
            color.addData4(0, 0, 1, 1)
            prim.addVertex(i)

            vertex.addData3(0, x, z/100)
            color.addData4(0, 0, 1, 1)
            prim.addVertex(i+1)

            i += 2

        prim.closePrimitive()

        diagram_geom = Geom(vdata)
        diagram_geom.addPrimitive(prim)

        node = GeomNode('gnode')
        node.addGeom(diagram_geom)

        node.setTag('entity_type', self.__class__.__name__)
        node.setTag('entity_id', self.entity_id)

        model_parent = self.parent.geom[0]
        parent_scale = model_parent.getScale()

        nodePath = render.attachNewNode(node)
        nodePath.reparentTo(model_parent)
        nodePath.set_two_sided(True)
        nodePath.setLightOff()

        node_parent = self.parent.start.geom[0]



        L = self.parent.longitude()
        h = 1
        nodePath.setScale(h / parent_scale[2], 1 / parent_scale[1], 1 / parent_scale[0])

        nodePath.wrtReparentTo(node_parent)
        """
        model = app.base.loader.loadModel("data/geom/plate")
        model.set_two_sided(True)
        model.setTag('entity_type', self.__class__.__name__)
        model.setTag('entity_id', self.entity_id)
        self.geom = [model]"""

        self.update_model()
예제 #4
0
	def draw_vert(self,v, v_color):
		format = GeomVertexFormat.getV3cp()
		vdata=GeomVertexData('vert', format, Geom.UHDynamic)
		vertex=GeomVertexWriter(vdata, 'vertex')
		color=GeomVertexWriter(vdata, 'color')
		vertex.addData3f(0.0,0.0,0.0)
		color.addData4f(v_color)		
		mesh = Geom(vdata)
		point = GeomPoints(Geom.UHDynamic)
		point.addVertex(0)
		point.closePrimitive()
		mesh.addPrimitive(point)
		vert_node = GeomNode(self.mesh.name+'_vert_'+str(v.ID))
		vert_node.addGeom(mesh)
		vert_node.setTag('ID',str(v.ID))
		rendered_vert = self.render_root.attachNewNode(vert_node)
		rendered_vert.setPos(v.pos.x,v.pos.y,v.pos.z)
		rendered_vert.setRenderModeThickness(5.0)
		self.render_nodes['vert_'+str(v.ID)] = rendered_vert
예제 #5
0
 def draw_vert(self, v, v_color):
     format = GeomVertexFormat.getV3cp()
     vdata = GeomVertexData('vert', format, Geom.UHDynamic)
     vertex = GeomVertexWriter(vdata, 'vertex')
     color = GeomVertexWriter(vdata, 'color')
     vertex.addData3f(0.0, 0.0, 0.0)
     color.addData4f(v_color)
     mesh = Geom(vdata)
     point = GeomPoints(Geom.UHDynamic)
     point.addVertex(0)
     point.closePrimitive()
     mesh.addPrimitive(point)
     vert_node = GeomNode(self.mesh.name + '_vert_' + str(v.ID))
     vert_node.addGeom(mesh)
     vert_node.setTag('ID', str(v.ID))
     rendered_vert = self.render_root.attachNewNode(vert_node)
     rendered_vert.setPos(v.pos.x, v.pos.y, v.pos.z)
     rendered_vert.setRenderModeThickness(5.0)
     self.render_nodes['vert_' + str(v.ID)] = rendered_vert