Hey ^^, well not as simple as just changing its H so you know. I need to some how changes in orgin frist to be able to change its H corretly… other wise the object will go into an orbit instead… img268.imageshack.us/img268/3065/22247315.png
Here is some code to apply a center to all geom vertexes or apply a matrix to all geom vertexes.
You should be able to hook this up to your bounds methods before to recenter the objects.
def geomsMove(model,moveVector):
if type(model.node()) == GeomNode:
geomNode = model.node()
geomMove(geomNode,moveVector)
for nodePath in model.findAllMatches('**/+GeomNode'):
geomMove(geomNode,moveVector)
def geomMove(geomNode,moveVector):
for i in range(geomNode.getNumGeoms()):
geom = geomNode.modifyGeom(i)
state = geomNode.getGeomState(i)
#print geom
#print state
vdata = geom.modifyVertexData()
#print vdata
# process vertex
vertex = GeomVertexRewriter(vdata, 'vertex')
while not vertex.isAtEnd():
v = Vec3(vertex.getData3f())
v += moveVector
vertex.setData3f(v)
def geomsApply(model,mat):
if type(model.node()) == GeomNode:
geomNode = model.node()
geomApply(geomNode,mat)
for nodePath in model.findAllMatches('**/+GeomNode'):
geomApply(geomNode,mat)
def geomApply(geomNode,mat):
for i in range(geomNode.getNumGeoms()):
geom = geomNode.modifyGeom(i)
state = geomNode.getGeomState(i)
#print geom
#print state
vdata = geom.modifyVertexData()
#print vdata
# process vertex
vertex = GeomVertexRewriter(vdata, 'vertex')
while not vertex.isAtEnd():
x,y,z = vertex.getData3f()
v = Vec4(x,y,z,1)
v = mat.xform(v)
x,y,z,w = v
vertex.setData3f(x,y,z)