Changeset 370
- Timestamp:
- 11/12/02 15:40:59 (6 years ago)
- Files:
-
- trunk/RBRapier/RBRapier/Formats/Wavefront/MeshedObject.py (modified) (1 diff)
- trunk/RBRapier/RBRapier/Tools/Geometry/Analysis/TriangleLister.py (modified) (1 diff)
- trunk/RBRapier/RBRapier/Tools/Geometry/Analysis/TriangleStripifier.py (modified) (1 diff)
- trunk/RBRapier/demo/Lightwave/scene.py (modified) (4 diffs)
- trunk/RBRapier/demo/Wavefront/scene.py (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/RBRapier/RBRapier/Formats/Wavefront/MeshedObject.py
r366 r370 168 168 for each in FaceTraversal: 169 169 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)) 187 188 188 189 def SimpleTraversals(self): trunk/RBRapier/RBRapier/Tools/Geometry/Analysis/TriangleLister.py
r369 r370 25 25 26 26 class TriangleLister(object): 27 def __call__(self, mesh, TaskProgress ):27 def __call__(self, mesh, TaskProgress=None): 28 28 result = [] 29 29 if TaskProgress: trunk/RBRapier/RBRapier/Tools/Geometry/Analysis/TriangleStripifier.py
r369 r370 424 424 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 425 425 426 def _FindAllStrips(self, mesh, TaskProgress ):426 def _FindAllStrips(self, mesh, TaskProgress=None): 427 427 selector = self.Selector 428 428 bCleanFaces = getattr(mesh, 'CleanFaces', 0) trunk/RBRapier/demo/Lightwave/scene.py
r369 r370 37 37 from RBRapier.Renderer.Appearance import Lighting 38 38 39 from RBRapier.Formats.Lightwave import MeshedObject40 39 from RBRapier.Formats import GeoObject 41 40 from RBRapier.Renderer.Geometry import ArrayTraversal 41 42 from RBRapier.Formats.Lightwave import MeshedObject 42 43 43 44 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ … … 57 58 self.ClearColor = Buffers.ClearColor((0.,0.,0.,0.)) 58 59 self.Sequence.AddSetupElement(self.ClearColor.Execute) 59 60 60 self.ClearDepth = Buffers.ClearDepth(1.) 61 61 self.Sequence.AddSetupElement(self.ClearDepth.Execute) 62 63 62 self.DepthTest = FragmentTests.DepthTest() 64 63 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) 69 66 self.Culling = PolygonRasterization.FaceCulling() 70 67 self.Sequence.AddSetupElement(self.Culling.Select) … … 72 69 self.Lighting = Lighting.LightingModel() 73 70 self.Sequence.AddElement(self.Lighting.Select) 74 75 71 self.Lights = [] 76 72 self.Lights.append(Lighting.Light(0)) … … 127 123 128 124 def StripColoredLigthwaveLWO(self, name, *args, **kw): 125 GL.glEnable(GL.GL_COLOR_MATERIAL) 129 126 builder = MeshedObject.MeshedObjectBuilder() 130 127 builder.GeoObjectFactory = GeoObject.DefaultGeoObject trunk/RBRapier/demo/Wavefront/scene.py
r362 r370 32 32 from RBRapier.Renderer.Environment import FragmentTests 33 33 from RBRapier.Renderer.View import Viewport 34 from RBRapier.Renderer.View import Transformations 35 from RBRapier.Renderer.View import TransformationSettings 36 from RBRapier.Renderer.Appearance import PolygonRasterization 37 from RBRapier.Renderer.Appearance import Lighting 38 39 from RBRapier.Formats import GeoObject 40 from RBRapier.Renderer.Geometry import ArrayTraversal 34 41 35 42 from RBRapier.Formats.Wavefront import MeshedObject … … 55 62 self.DepthTest = FragmentTests.DepthTest() 56 63 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 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 57 83 58 84 self.Viewport = Viewport.Viewport() 59 self.Sequence.AddElement(self.Viewport , -2)85 self.Sequence.AddElement(self.Viewport.Execute) 60 86 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) 63 120 #self.GeoObj = self.WavefrontOBJ('data/x29.obj', 1, 3) 64 121 #self.GeoObj = self.WavefrontOBJ('data/porsche.obj', 1, 3) 65 122 #self.GeoObj = self.WavefrontOBJ('data/cessna.obj', 1, 3) 66 123 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): 70 125 GL.glEnable(GL.GL_COLOR_MATERIAL) 71 72 #for each in self.Sequence.Elements: print each73 74 def StripeColoredWavefrontOBJ(self, name, *args, **kw):75 126 builder = MeshedObject.MeshedObjectBuilder() 76 from RBRapier.Renderer.Geometry import ArrayTraversal127 builder.GeoObjectFactory = GeoObject.DefaultGeoObject 77 128 builder.IndexedTraversal = ArrayTraversal.ColoredIndexedCollectionTraversal 78 129 GeoObj = builder.Build(open(name, 'r'), *args, **kw) … … 82 133 def WavefrontOBJ(self, name, *args, **kw): 83 134 builder = MeshedObject.MeshedObjectBuilder() 135 builder.GeoObjectFactory = GeoObject.DefaultGeoObject 84 136 GeoObj = builder.Build(open(name, 'r'), *args, **kw) 85 137 self.Sequence.AddElement(GeoObj) 86 138 return GeoObj 87 139 140 Animate = 1 88 141 def Render(self, subject, canvas): 142 # Recalculate the viewport 89 143 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! =) 98 146 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
