def createMesh(pos, elemtype, basis, offset, pm, margin): position = [] color = [] radius = [] picking = [] index = [] pm.resize(len(elemtype)) for i, p in enumerate(pos): c = atomdata.color(elemtype[i]) r = atomdata.radius(elemtype[i]) pi = pm.pickingId(i) def addVertex(vertexpos): position.append(vertexpos) color.append(c) radius.append(r) picking.append(pi) index.append(i) if margin > 0.0: for shift in itertools.product([-1, 0, 1], repeat=3): if all([ x + s > -margin and x + s < 1 + margin for s, x in zip(shift, p) ]): addVertex([x + s for s, x in zip(shift, p)]) else: addVertex(p) mesh = ivw.data.Mesh() mesh.basis = ivw.glm.mat3(basis) mesh.offset = ivw.glm.vec3(offset) mesh.addBuffer( ivw.data.BufferType.PositionAttrib, ivw.data.Buffer(numpy.array(position).astype(numpy.float32))) mesh.addBuffer(ivw.data.BufferType.ColorAttrib, ivw.data.Buffer(numpy.array(color).astype(numpy.float32))) mesh.addBuffer(ivw.data.BufferType.RadiiAttrib, ivw.data.Buffer(numpy.array(radius).astype(numpy.float32))) mesh.addBuffer(ivw.data.BufferType.PickingAttrib, ivw.data.Buffer(numpy.array(picking).astype(numpy.uint32))) mesh.addBuffer(ivw.data.BufferType.IndexAttrib, ivw.data.Buffer(numpy.array(index).astype(numpy.uint32))) return mesh
def createDataFrameForCube(pos, elemtype): dataframe = df.DataFrame() ct = dataframe.addCategoricalColumn("type") cx = dataframe.addFloatColumn("x") cy = dataframe.addFloatColumn("y") cz = dataframe.addFloatColumn("z") r = dataframe.addFloatColumn("r") for et, p in zip(elemtype, pos): ct.add(et) cx.add(p[0]) cy.add(p[1]) cz.add(p[2]) r.add(atomdata.radius(et)) dataframe.updateIndex() return dataframe
def createMeshForCube(pos, elemtype, basis, offset, pm): position = [] color = [] radius = [] picking = [] index = [] pm.resize(len(elemtype)) for i, p in enumerate(pos): c = atomdata.color(elemtype[i]) r = atomdata.radius(elemtype[i]) pi = pm.pickingId(i) def addVertex(vertexpos): position.append(vertexpos) color.append(c) radius.append(r) picking.append(pi) index.append(i) addVertex(p) mesh = ivw.data.Mesh() #mesh.basis = ivw.glm.mat3(basis) mesh.offset = ivw.glm.vec3(offset) mesh.addBuffer( ivw.data.BufferType.PositionAttrib, ivw.data.Buffer(numpy.array(position).astype(numpy.float32))) mesh.addBuffer(ivw.data.BufferType.ColorAttrib, ivw.data.Buffer(numpy.array(color).astype(numpy.float32))) mesh.addBuffer(ivw.data.BufferType.RadiiAttrib, ivw.data.Buffer(numpy.array(radius).astype(numpy.float32))) mesh.addBuffer(ivw.data.BufferType.PickingAttrib, ivw.data.Buffer(numpy.array(picking).astype(numpy.uint32))) mesh.addBuffer(ivw.data.BufferType.IndexAttrib, ivw.data.Buffer(numpy.array(index).astype(numpy.uint32))) return mesh