def run(self, rhoNo=1, phiNo=0, tfNo=1): dataset = Dataset(rhoNo, phiNo, tfNo) texDimSize = 128 renderer = Renderer(self.eye, self.screen) rho = dataset.rho phi = dataset.phi tf = dataset.tf phiPlane = SplinePlane(phi, self.splineInterval, self.intersectTolerance) boundingBox = phiPlane.createBoundingBox() plotter = Plotter(self.splineInterval) refSplinePlotter = plotter.refSplineModelPlotter directSplinePlotter = plotter.directSplineModelPlotter voxelPlotter = plotter.voxelModelPlotter paramPlotter = plotter.paramPlotter refSplinePlotter.plotGrid(phi.evaluate, 10, 10) directSplinePlotter.plotGrid(phi.evaluate, 10, 10) paramPlotter.plotGrid(10, 10) paramPlotter.plotScalarField(rho, tf) refSplinePlotter.plotBoundingBox(boundingBox) directSplinePlotter.plotBoundingBox(boundingBox) voxelPlotter.plotBoundingBox(boundingBox) # Creating models refSplineModel = SplineModel(tf, phiPlane, rho, self.refTolerance) directSplineModel = SplineModel(tf, phiPlane, rho) samplingScalars = refSplineModel.generateScalarMatrix(boundingBox, texDimSize, texDimSize, self.voxelizationTolerance) #voxelPlotter.plotScalars(samplingScalars, boundingBox) scalarTexture = Texture2D(samplingScalars) plotter.plotScalarTexture(scalarTexture) voxelModel = VoxelModel(tf, scalarTexture, boundingBox) choice = 0 if choice == 0: model = voxelModel modelType = ModelType.VOXEL elif choice == 1: model = BoundaryAccurateModel(tf, directSplineModel, voxelModel) modelType = ModelType.BOUNDARYACCURATE elif choice == 2: voxelWidth = boundingBox.getHeight() / float(texDimSize) criterion = GeometricCriterion(self.screen.pixelWidth, voxelWidth) model = HybridModel(tf, directSplineModel, voxelModel, criterion) modelType = ModelType.HYBRID else: lodTextures = [scalarTexture] size = texDimSize / 2 while size >= 2: scalars = refSplineModel.generateScalarMatrix(boundingBox, size, size, self.voxelizationTolerance) lodTextures.append(Texture2D(scalars)) size /= 2 model = VoxelLodModel(tf, lodTextures, boundingBox, self.screen.pixelWidth) modelType = ModelType.VOXEL # Rendering refRenderData = RenderData(ModelType.REFERENCE, self.viewRayDeltaRef) refRenderData.renderResult = renderer.render(refSplineModel, self.viewRayDeltaRef, refSplinePlotter) directRenderData = RenderData(ModelType.DIRECT, self.viewRayDelta) directRenderData.renderResult = renderer.render(directSplineModel, self.viewRayDelta, directSplinePlotter) renderData = RenderData(modelType, self.viewRayDelta, texSize=texDimSize) renderData.renderResult = renderer.render(model, self.viewRayDelta, voxelPlotter) # Plotting refPixelColors = refRenderData.renderResult.colors directPixelColors = directRenderData.renderResult.colors pixelColors = renderData.renderResult.colors plotter.pixelReferencePlot.plotPixelColors(refPixelColors) plotter.pixelDirectPlot.plotPixelColors(directPixelColors) plotter.pixelVoxelizedPlot.plotPixelColors(pixelColors) directDiffs = colordiff.compare(refPixelColors, directPixelColors) diffs = colordiff.compare(refPixelColors, pixelColors) plotter.pixelDirectDiffPlot.plotPixelColorDiffs(directDiffs) plotter.pixelVoxelizedDiffPlot.plotPixelColorDiffs(diffs) plotter.draw() # Printing directSummary = Summary(directRenderData, directDiffs) directSummary.printData() print "" summary = Summary(renderData, diffs) summary.printData()