def makePoints(n=1000): """ make a cloud of points that are a single node VS branching and making subnodes to control display """ #points = np.random.uniform(-10,10,(n,4)) #points = np.random.randn(n,3) points = np.cumsum(np.random.randint(-1, 2, (n, 3)), axis=0) #classic random walk #colors = np.random.rand(n,4) clr4 = np.random.rand(1, 4) #points = [(0,0,0)] fmt = GeomVertexFormat.getV3c4() #3 component vertex, w/ 4 comp color vertexData = GeomVertexData('points', fmt, Geom.UHStatic) verts = GeomVertexWriter(vertexData, 'vertex') color = GeomVertexWriter(vertexData, 'color') #for point,clr4 in zip(points,colors): for point in points: verts.addData3f(*point) #color.addData4f(*point) color.addData4f(*clr4[0]) #color.addData4f(.1,.1,.1,1) #pointCloud = GeomLinestrips(Geom.UHStatic) #this is f*****g cool! #pointCloud = GeomTristrips(Geom.UHStatic) #this is f*****g cool! pointCloud = GeomPoints(Geom.UHStatic) pointCloud.addConsecutiveVertices(0, n) #warning may error since n-1? pointCloud.closePrimitive() cloud = Geom(vertexData) cloud.addPrimitive(pointCloud) return cloud
def makePoints(n=1000): """ make a cloud of points that are a single node VS branching and making subnodes to control display """ #points = np.random.uniform(-10,10,(n,4)) #points = np.random.randn(n,3) points = np.cumsum(np.random.randint(-1,2,(n,3)), axis=0) #classic random walk #colors = np.random.rand(n,4) clr4 = np.random.rand(1,4) #points = [(0,0,0)] fmt = GeomVertexFormat.getV3c4() #3 component vertex, w/ 4 comp color vertexData = GeomVertexData('points', fmt, Geom.UHStatic) verts = GeomVertexWriter(vertexData, 'vertex') color = GeomVertexWriter(vertexData, 'color') #for point,clr4 in zip(points,colors): for point in points: verts.addData3f(*point) #color.addData4f(*point) color.addData4f(*clr4[0]) #color.addData4f(.1,.1,.1,1) #pointCloud = GeomLinestrips(Geom.UHStatic) #this is f*****g cool! #pointCloud = GeomTristrips(Geom.UHStatic) #this is f*****g cool! pointCloud = GeomPoints(Geom.UHStatic) pointCloud.addConsecutiveVertices(0,n) #warning may error since n-1? pointCloud.closePrimitive() cloud = Geom(vertexData) cloud.addPrimitive(pointCloud) return cloud
def __init__(self, base, obj, **kwargs): super(GalaxyView, self).__init__(base, obj, **kwargs) array = GeomVertexArrayFormat() array.addColumn(InternalName.make('vertex'), 3, Geom.NTFloat32, Geom.CPoint) array.addColumn(InternalName.make('color'), 4, Geom.NTFloat32, Geom.CColor) array.addColumn(InternalName.make('size'), 1, Geom.NTFloat32, Geom.COther) gmformat = GeomVertexFormat() gmformat.addArray(array) gmformat = GeomVertexFormat.registerFormat(gmformat) vdata = GeomVertexData('points', gmformat, Geom.UHDynamic) vertex = GeomVertexWriter(vdata, 'vertex') color = GeomVertexWriter(vdata, 'color') size = GeomVertexWriter(vdata, 'size') self.node = NodePath('galaxy') self.node.reparentTo(self.base.render) self.node.setTransparency(TransparencyAttrib.MAlpha) lumsort = sorted([star.luminosity for star in self.obj.stars]) #highest_luminosity = lumsort[-1] median_luminosity = lumsort[len(lumsort) / 2] for star in self.obj.stars: vertex.addData3f(star.galpos.x, star.galpos.y, star.galpos.z) color.addData4f(star.red, star.green, star.blue, 1.0) #size.addData1f(min(100, max(5, 10-star.magnitude/2))) sizeval = 10 + log(star.luminosity) size.addData1f(min(30, max(10, sizeval))) prim = GeomPoints(Geom.UHStatic) prim.addConsecutiveVertices(0, len(self.obj.stars)) prim.closePrimitive() geom = Geom(vdata) geom.addPrimitive(prim) node = GeomNode('gnode') node.addGeom(geom) galaxy_node = self.node.attachNewNode(node) galaxy_node.setRenderModeThickness(1) ts = TextureStage.getDefault() #TextureStage('ts') #ts.setMode(TextureStage.MGlow) galaxy_node.setTexGen(ts, TexGenAttrib.MPointSprite) galaxy_node.setTexture( ts, self.base.loader.loadTexture('texture/flare.png')) #galaxy_node.setRenderModePerspective(True) galaxy_node.setBin("unsorted", 1) galaxy_node.setDepthWrite(0) galaxy_node.setTransparency(1) self.setup_glow_shader() """
def make_cloud_node(pts, col=LColorf(1.0, 0.0, 0.0, 1.0)): ptCloudData = GeomVertexData("PointCloudData", GeomVertexFormat.getV3c4(), GeomEnums.UH_static) vertexWriter = GeomVertexWriter(ptCloudData, Thread.getCurrentThread()) vertexWriter.setColumn("vertex") colorWriter = GeomVertexWriter(ptCloudData, Thread.getCurrentThread()) colorWriter.setColumn("color") for (x, y, z) in pts: vertexWriter.addData3(x, y, z) colorWriter.addData4(col) geomPts = GeomPoints(GeomEnums.UH_static) geomPts.addConsecutiveVertices(0, len(pts)) geomPts.closePrimitive() geom = Geom(ptCloudData) geom.addPrimitive(geomPts) node = GeomNode("PointCloudNode") node.addGeom(geom, RenderState.makeEmpty()) return node