Changeset 349

Show
Ignore:
Timestamp:
11/01/02 14:02:17 (6 years ago)
Author:
sholloway
Message:

*** empty log message ***

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/RBRapier/RBRapier/Formats/Wavefront/MeshedObject.py

    r345 r349  
    9393 
    9494    GeoObjectFactory = GeoObject 
     95    IndexedTraversal = ArrayTraversal.IndexedCollectionTraversal 
    9596 
    9697    #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
     
    162163            else: 
    163164                mesh = MeshFactory() 
     165                bTODOPrinted = 0 
    164166                for FaceTraversal in Group.Faces: 
     167                    if not bTODOPrinted and len(FaceTraversal) > 4:  
     168                        print "TODO: teselate faces of more than 4 vertices" 
     169                        print 
     170                        bTODOPrinted = 1 
    165171                    v0,v1 = FaceTraversal[:2] 
    166172                    for v2 in FaceTraversal[2:]: 
     
    189195            listdata = Group.Traversals.get('list') 
    190196            if listdata: 
    191                 Group.Traversals['list'] = ArrayTraversal.IndexedCollectionTraversal('trilist', [listdata]) 
     197                Group.Traversals['list'] = self.IndexedTraversal('trilist', [listdata]) 
    192198 
    193199            fandatacollection = Group.Traversals.get('fan') 
    194200            if fandatacollection: 
    195                 Group.Traversals['fan'] = ArrayTraversal.IndexedCollectionTraversal('tristrip', fandatacollection) 
     201                Group.Traversals['fan'] = self.IndexedTraversal('tristrip', fandatacollection) 
    196202 
    197203            stripdatacollection = Group.Traversals.get('strip') 
    198204            if stripdatacollection: 
    199                 Group.Traversals['strip'] = ArrayTraversal.IndexedCollectionTraversal('tristrip', stripdatacollection) 
     205                Group.Traversals['strip'] = self.IndexedTraversal('tristrip', stripdatacollection) 
    200206 
    201207    def OptimizeTraversals(self, level): 
     
    206212            if listdata: 
    207213                optimizer.Visit(listdata) 
    208                 Group.Traversals['list'] = ArrayTraversal.IndexedCollectionTraversal('trilist', [listdata]) 
     214                Group.Traversals['list'] = self.IndexedTraversal('trilist', [listdata]) 
    209215            elif listdata is not None: 
    210216                del Group.Traversals['list'] 
     
    214220                for fandata in fandatacollection: 
    215221                    optimizer.Visit(fandata) 
    216                 Group.Traversals['fan'] = ArrayTraversal.IndexedCollectionTraversal('tristrip', fandatacollection) 
     222                Group.Traversals['fan'] = self.IndexedTraversal('tristrip', fandatacollection) 
    217223            elif fandatacollection is not None: 
    218224                del Group.Traversals['fan'] 
     
    222228                for stripdata in stripdatacollection: 
    223229                    optimizer.Visit(stripdata) 
    224                 Group.Traversals['strip'] = ArrayTraversal.IndexedCollectionTraversal('tristrip', stripdatacollection) 
     230                Group.Traversals['strip'] = self.IndexedTraversal('tristrip', stripdatacollection) 
    225231            elif stripdatacollection is not None: 
    226232                del Group.Traversals['strip'] 
  • trunk/RBRapier/RBRapier/Renderer/Geometry/ArrayTraversal.py

    r345 r349  
    2626from OpenGL import GL 
    2727import Numeric 
     28from Foundation.AspectOriented import Aspect 
    2829 
    2930#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
     
    8889 
    8990    def Execute(self, context): 
     91        primitive = self.primitive 
    9092        for data in self.datacollection: 
     93            self._glDrawElements(primitive, data) 
     94 
     95#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
     96 
     97class ColoredIndexedCollectionTraversal(IndexedCollectionTraversal): 
     98    #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
     99    #~ Constants / Variables / Etc.  
     100    #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
     101 
     102    colors = [] 
     103 
     104    #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
     105    #~ Public Methods  
     106    #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
     107 
     108    def __init__(self, primitive, datacollection, format=None): 
     109        IndexedCollectionTraversal.__init__(self, primitive, datacollection, format) 
     110        self.GenerateColors() 
     111 
     112    def GenerateColors(self): 
     113        import random 
     114        self.colors = [(.3 + .7*random.random(), .3 + .7*random.random(), .3 + .7*random.random()) for x in self.datacollection] 
     115 
     116    def Execute(self, context): 
     117        for color, data in zip(self.colors, self.datacollection): 
     118            GL.glColor3f(*color) 
    91119            self._glDrawElements(self.primitive, data) 
    92120 
     121#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
     122 
     123class ColoredIndexedCollectionAspect(Aspect.Aspect, ColoredIndexedCollectionTraversal): 
     124    pass 
  • trunk/RBRapier/demo/Wavefront/scene.py

    r345 r349  
    5959        self.Sequence.AddElement(self.Viewport, -2) 
    6060 
    61         builder = MeshedObject.MeshedObjectBuilder() 
    62         GeoObj = builder.Build(open('data/oldtree.obj', 'r'), 1, 3) 
    63         self.Sequence.AddElement(GeoObj) 
     61        self.GeoObj = self.WavefrontOBJ('data/oldtree.obj') 
     62        #self.GeoObj = self.WavefrontOBJ('data/x29.obj') 
    6463 
    6564        GL.glEnable(GL.GL_LIGHTING) 
     
    6867 
    6968        #for each in self.Sequence.Elements: print each 
     69 
     70    def WavefrontOBJ(self, name, *args, **kw): 
     71        builder = MeshedObject.MeshedObjectBuilder() 
     72        GeoObj = builder.Build(open(name, 'r'), *args, **kw) 
     73        self.Sequence.AddElement(GeoObj) 
     74        return GeoObj 
    7075 
    7176    def Render(self, subject, canvas):