да. полигоны это хорошо, но лучше будет если сделать из полигонов браши (кубы), а потом написать прогу (назовем компилятор карт, хотя он не компилятор на самом деле), которая будт удалять ненужные нерисуемые в игре полигоны (этакая пародия на Valve Hammer Editor). Еще будет полезно сделать light-box - это фишка из двигов HPL от Frictional games - это некоторое пространство, в котором все объекты будут одинаково освещены. Лучше будет, если свет в мире будет делиться на статический и динамический тени - тени от статического просчитываются компилятором, а от динамического в игре.
Еще будет здорово создать trigger-brash или trigger-polygon - это пространство или плоскость, косаясь которого игрок будет активировать что-нибудь.Добавлено (03.12.2012, 10:35)
---------------------------------------------
Мне бы исходные коды ваших творений. архив вверху битый.
Добавлено (03.12.2012, 10:58)
---------------------------------------------
Не знаю, все ли я правильно сделал. Как-то так:
Code
from panda3d.core import Triangulator,GeomVertexFormat,GeomVertexData,Geom,GeomVertexWriter,GeomTriangles,GeomNode
class polygon(object):
def __init__(self,texture,vertices=[]):
self.vertices=list(tuple(v) for v in vertices)
def addVertex(self,x,y):
self.vertices.append((x,y))
def makeNode(self,pointmap=(lambda x,y: (x,y,0))):
vt=tuple(self.vertices)
t=Triangulator()
fmt=GeomVertexFormat.getV3()
vdata=GeomVertexData('name', fmt, Geom.UHStatic)
vertex=GeomVertexWriter(vdata, 'vertex')
for x,y in vt:
t.addPolygonVertex(t.addVertex(x,y))
vertex.addData3f(pointmap(x,y))
t.triangulate()
prim=GeomTriangles(Geom.UHStatic)
for n in xrange(t.getNumTriangles()):
prim.addVertices(t.getTriangleV0(n),t.getTriangleV1(n),t.getTriangleV2(n))
prim.closePrimitive()
geom=Geom(vdata)
geom.addPrimitive(prim)
node=GeomNode('gnode')
node.addGeom(geom)
return node
Создается 2мя строками:
Code
poly=Polygon([(0,0),(0,1),(1,1),(1,0)])
nodePath = render.attachNewNode(poly.makeNode())
Добавлено (03.12.2012, 11:03)
---------------------------------------------
D:\Rawieo\dev\python\minelife>D:\Panda3D-1.8.0\python\python.exe -E main.py
DirectStart: Starting the game.
Known pipe types:
wglGraphicsPipe
(all display modules loaded.)
Assertion failed: num_points >= 2 at line 356 of c:\buildslave\release_sdk_win32
\build\panda3d\panda\src\mathutil\triangulator.cxx
Assertion failed: choose_idx < (int)permute.size() at line 397 of c:\buildslave\
release_sdk_win32\build\panda3d\panda\src\mathutil\triangulator.cxx
Assertion failed: choose_idx < (int)permute.size() at line 397 of c:\buildslave\
release_sdk_win32\build\panda3d\panda\src\mathutil\triangulator.cxx
Для продолжения нажмите любую клавишу . . .