Changeset 370

Show
Ignore:
Timestamp:
11/12/02 15:40:59 (6 years ago)
Author:
sholloway
Message:

*** empty log message ***

Files:

Legend:

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

    r366 r370  
    168168                    for each in FaceTraversal: 
    169169                        face = mesh.AddFace(*each) 
    170                 if __debug__:  
    171                     print '%-20s[%6d]: ' % (Group.Names[0], len(mesh.Faces)*3), 
    172                     Group.Traversals = dict(TraversalMaker(mesh, OnProgress=TriangleStripifier.PrintOnProgress(0))) 
    173                     print " [", 
    174                     for name, each in Group.Traversals.iteritems(): 
    175                         try:  
    176                             count = 0 
    177                             maxcount = 0 
    178                             for e in each: 
    179                                 count += len(e) 
    180                                 maxcount = max(maxcount, len(e))  
    181                             print '%s=%d (%d, %1.1f, %d),' % (name, len(each), count, count/float(len(each) or 1.), maxcount), 
    182                         except TypeError: 
    183                             print '%s=%d (%d),' % (name, 1, len(each)), 
    184                     print "]" 
    185                 else: 
    186                     Group.Traversals = dict(TraversalMaker(mesh)) 
     170                #if __debug__:  
     171                #    print '%-20s[%6d]: ' % (Group.Names[0], len(mesh.Faces)*3), 
     172                #    Group.Traversals = dict(TraversalMaker(mesh, OnProgress=TriangleStripifier.PrintOnProgress(0))) 
     173                #    print " [", 
     174                #    for name, each in Group.Traversals.iteritems(): 
     175                #        try:  
     176                #            count = 0 
     177                #            maxcount = 0 
     178                #            for e in each: 
     179                #                count += len(e) 
     180                #                maxcount = max(maxcount, len(e))  
     181                #            print '%s=%d (%d, %1.1f, %d),' % (name, len(each), count, count/float(len(each) or 1.), maxcount), 
     182                #        except TypeError: 
     183                #            print '%s=%d (%d),' % (name, 1, len(each)), 
     184                #    print "]" 
     185                #else: 
     186                #    Group.Traversals = dict(TraversalMaker(mesh)) 
     187                Group.Traversals = dict(TraversalMaker(mesh)) 
    187188 
    188189    def SimpleTraversals(self): 
  • trunk/RBRapier/RBRapier/Tools/Geometry/Analysis/TriangleLister.py

    r369 r370  
    2525 
    2626class TriangleLister(object): 
    27     def __call__(self, mesh, TaskProgress): 
     27    def __call__(self, mesh, TaskProgress=None): 
    2828        result = [] 
    2929        if TaskProgress: 
  • trunk/RBRapier/RBRapier/Tools/Geometry/Analysis/TriangleStripifier.py

    r369 r370  
    424424    #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    425425 
    426     def _FindAllStrips(self, mesh, TaskProgress): 
     426    def _FindAllStrips(self, mesh, TaskProgress=None): 
    427427        selector = self.Selector 
    428428        bCleanFaces = getattr(mesh, 'CleanFaces', 0) 
  • trunk/RBRapier/demo/Lightwave/scene.py

    r369 r370  
    3737from RBRapier.Renderer.Appearance import Lighting 
    3838 
    39 from RBRapier.Formats.Lightwave import MeshedObject 
    4039from RBRapier.Formats import GeoObject 
    4140from RBRapier.Renderer.Geometry import ArrayTraversal 
     41 
     42from RBRapier.Formats.Lightwave import MeshedObject 
    4243 
    4344#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
     
    5758        self.ClearColor = Buffers.ClearColor((0.,0.,0.,0.)) 
    5859        self.Sequence.AddSetupElement(self.ClearColor.Execute) 
    59  
    6060        self.ClearDepth = Buffers.ClearDepth(1.) 
    6161        self.Sequence.AddSetupElement(self.ClearDepth.Execute) 
    62  
    6362        self.DepthTest = FragmentTests.DepthTest() 
    6463        self.Sequence.AddSetupElement(self.DepthTest.Select) 
    65  
    66         self.Normalization = TransformationSettings.Normalization() 
    67         self.Sequence.AddSetupElement(self.Normalization.Select) 
    68  
     64        #self.Normalization = TransformationSettings.Normalization() 
     65        #self.Sequence.AddSetupElement(self.Normalization.Select) 
    6966        self.Culling = PolygonRasterization.FaceCulling() 
    7067        self.Sequence.AddSetupElement(self.Culling.Select) 
     
    7269        self.Lighting = Lighting.LightingModel() 
    7370        self.Sequence.AddElement(self.Lighting.Select) 
    74  
    7571        self.Lights = [] 
    7672        self.Lights.append(Lighting.Light(0)) 
     
    127123 
    128124    def StripColoredLigthwaveLWO(self, name, *args, **kw): 
     125        GL.glEnable(GL.GL_COLOR_MATERIAL) 
    129126        builder = MeshedObject.MeshedObjectBuilder() 
    130127        builder.GeoObjectFactory = GeoObject.DefaultGeoObject 
  • trunk/RBRapier/demo/Wavefront/scene.py

    r362 r370  
    3232from RBRapier.Renderer.Environment import FragmentTests 
    3333from RBRapier.Renderer.View import Viewport 
     34from RBRapier.Renderer.View import Transformations 
     35from RBRapier.Renderer.View import TransformationSettings 
     36from RBRapier.Renderer.Appearance import PolygonRasterization 
     37from RBRapier.Renderer.Appearance import Lighting 
     38 
     39from RBRapier.Formats import GeoObject 
     40from RBRapier.Renderer.Geometry import ArrayTraversal 
    3441 
    3542from RBRapier.Formats.Wavefront import MeshedObject 
     
    5562        self.DepthTest = FragmentTests.DepthTest() 
    5663        self.Sequence.AddElement(self.DepthTest.Select, -1) 
     64        #self.Normalization = TransformationSettings.Normalization() 
     65        #self.Sequence.AddSetupElement(self.Normalization.Select) 
     66        self.Culling = PolygonRasterization.FaceCulling() 
     67        self.Sequence.AddSetupElement(self.Culling.Select) 
     68 
     69        self.Lighting = Lighting.LightingModel() 
     70        self.Sequence.AddElement(self.Lighting.Select) 
     71        self.Lights = [] 
     72        self.Lights.append(Lighting.Light(0)) 
     73        self.Lights[0].Specular = 0., 0., 1. 
     74        self.Lights[0].Diffuse = .3, .3, .4 
     75        self.Lights.append(Lighting.Light(1)) 
     76        self.Lights[1].Specular = 1., 0., 0. 
     77        self.Lights[1].Diffuse = .4, .3, .3 
     78        self.Lights.append(Lighting.SpotLight(2, SpotCutoff=30., SpotExponent=0.)) 
     79        self.Lights[2].Position = (0., -5, 0., 1.) 
     80        self.Lights[2].SpotDirection = (0., 1., 0., 0.) 
     81 
     82        #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    5783 
    5884        self.Viewport = Viewport.Viewport() 
    59         self.Sequence.AddElement(self.Viewport, -2
     85        self.Sequence.AddElement(self.Viewport.Execute
    6086 
    61         #self.GeoObj = self.WavefrontOBJ('data/oldtree.obj', 1, 3) 
    62         self.GeoObj = self.StripeColoredWavefrontOBJ('data/oldtree.obj', 1, 3) 
     87        self.Projection = Transformations.ManagedComposite(GL.GL_PROJECTION) 
     88        self.Sequence.AddElement(self.Projection.Select) 
     89        self.Sequence.AddPostElement(self.Projection.Deselect) 
     90 
     91        self.Projection.Add(Transformations.LoadIdentity()) 
     92        self.Projection.Perspective = Transformations.Perspective(30, far=100) 
     93        self.Projection.Add(self.Projection.Perspective) 
     94        self.Projection.Translate = Transformations.Translate((0, 0, -5)) 
     95        self.Projection.Add(self.Projection.Translate) 
     96        self.Projection.Rotate = Transformations.Rotate(10, (1, 0, 0)) 
     97        self.Projection.Add(self.Projection.Rotate) 
     98 
     99        self.Sequence.AddElement(self.Lights[2].Select) 
     100 
     101        self.ModelView = Transformations.ManagedComposite() 
     102        self.ModelView.Add(Transformations.LoadIdentity()) 
     103        self.ModelView.Rotate = Transformations.Rotate(60, (0, 1, 0)) 
     104        self.ModelView.Rotate.AngleDelta = 1. 
     105        self.ModelView.Add(self.ModelView.Rotate) 
     106        self.Sequence.AddElement(self.ModelView.Select) 
     107        self.Sequence.AddElement(self.Lights[0].Select) 
     108        self.Sequence.AddPostElement(self.ModelView.Deselect) 
     109 
     110        self.LightXForm = Transformations.ManagedComposite(Save=1) 
     111        self.LightXForm.Rotate = Transformations.Rotate(60, (0, 1, 0)) 
     112        self.LightXForm.Rotate.AngleDelta = -6. 
     113        self.LightXForm.Add(self.LightXForm.Rotate) 
     114        self.Sequence.AddElement(self.LightXForm.Select) 
     115        self.Sequence.AddElement(self.Lights[1].Select) 
     116        self.Sequence.AddElement(self.LightXForm.Deselect) 
     117 
     118        self.GeoObj = self.WavefrontOBJ('data/oldtree.obj', 1, 3) 
     119        #self.GeoObj = self.StripeColoredWavefrontOBJ('data/oldtree.obj', 0, 0) 
    63120        #self.GeoObj = self.WavefrontOBJ('data/x29.obj', 1, 3) 
    64121        #self.GeoObj = self.WavefrontOBJ('data/porsche.obj', 1, 3) 
    65122        #self.GeoObj = self.WavefrontOBJ('data/cessna.obj', 1, 3) 
    66123 
    67         GL.glEnable(GL.GL_LIGHTING) 
    68         GL.glEnable(GL.GL_LIGHT0) 
    69         GL.glEnable(GL.GL_CULL_FACE) 
     124    def StripeColoredWavefrontOBJ(self, name, *args, **kw): 
    70125        GL.glEnable(GL.GL_COLOR_MATERIAL) 
    71  
    72         #for each in self.Sequence.Elements: print each 
    73  
    74     def StripeColoredWavefrontOBJ(self, name, *args, **kw): 
    75126        builder = MeshedObject.MeshedObjectBuilder() 
    76         from RBRapier.Renderer.Geometry import ArrayTraversal 
     127        builder.GeoObjectFactory = GeoObject.DefaultGeoObject 
    77128        builder.IndexedTraversal = ArrayTraversal.ColoredIndexedCollectionTraversal 
    78129        GeoObj = builder.Build(open(name, 'r'), *args, **kw) 
     
    82133    def WavefrontOBJ(self, name, *args, **kw): 
    83134        builder = MeshedObject.MeshedObjectBuilder() 
     135        builder.GeoObjectFactory = GeoObject.DefaultGeoObject 
    84136        GeoObj = builder.Build(open(name, 'r'), *args, **kw) 
    85137        self.Sequence.AddElement(GeoObj) 
    86138        return GeoObj 
    87139 
     140    Animate = 1 
    88141    def Render(self, subject, canvas): 
     142        # Recalculate the viewport 
    89143        self.Viewport.SetRectangle(canvas.GetClientRect().asTuple()) 
    90  
    91         GL.glMatrixMode(GL.GL_PROJECTION) 
    92         GL.glLoadIdentity() 
    93         GL.glOrtho(-1,1,-1,1,-5,5) 
    94         GL.glMatrixMode(GL.GL_MODELVIEW) 
    95         GL.glRotatef(1., 0, 1, 0) 
    96         #GL.glRotatef(.7, 1, 0, 0) 
    97  
     144        self.Projection.Perspective.AspectRatio = self.Viewport.AspectRatio 
     145        # Draw the stuffage!  =) 
    98146        self.Sequence.Execute(None) 
     147        # Animation 
     148        if self.Animate: 
     149            self.ModelView.Rotate.Angle += self.ModelView.Rotate.AngleDelta 
     150            self.LightXForm.Rotate.Angle += self.LightXForm.Rotate.AngleDelta