def setup_bitmap_test(nodes): if len(nodes) < 1: raise Exception("Bitmap test requires at least one node.") class result_object: pass result = result_object result.document = k3d.new_document() result.nodes = [] for node in nodes: result.nodes.append(k3d.plugin.create(node, result.document)) if len(result.nodes) > 1: k3d.property.connect( result.document, result.nodes[-2].get_property("output_bitmap"), result.nodes[-1].get_property("input_bitmap")) result.source = result.nodes[0] if len(nodes) == 3: result.modifier = result.nodes[1] if len(nodes) > 1: result.sink = result.nodes[-1] return result
def run_mesh_modifier_benchmark(meshModifierNodeName, benchmarkMesh, numberOfRuns=1, properties={}, appendToFile=False, firstInFile=False): document = k3d.new_document() profiler = k3d.plugin.create("PipelineProfiler", document) benchmarkMesh.set_document(document) inputNode = benchmarkMesh.get_mesh() selection = k3d.select_all() benchmarkNode = k3d.plugin.create(meshModifierNodeName, document) for (p, val) in properties.items(): benchmarkNode.get_property(p).set_value(val) benchmarkNode.mesh_selection = selection profilingResults = k3dProfilingProcessor() for n in range(numberOfRuns): k3d.property.connect(document, inputNode.get_property("output_mesh"), benchmarkNode.get_property("input_mesh")) benchmarkNode.output_mesh profilingResults.add_profiler_results_for_node(meshModifierNodeName, profiler.records) description = '%d' % (benchmarkMesh.get_size_metric()) profilingResults.output_and_save(meshModifierNodeName, description, appendToFile, firstInFile)
def setup_bitmap_test(nodes): if len(nodes) < 1: raise Exception("Bitmap test requires at least one node.") class result_object: pass result = result_object result.document = k3d.new_document() result.nodes = [] for node in nodes: result.nodes.append(k3d.plugin.create(node, result.document)) if len(result.nodes) > 1: k3d.property.connect(result.document, result.nodes[-2].get_property("output_bitmap"), result.nodes[-1].get_property("input_bitmap")) result.source = result.nodes[0] if len(nodes) == 3: result.modifier = result.nodes[1] if len(nodes) > 1: result.sink = result.nodes[-1] return result
def run_bitmap_modifier_benchmark(BitmapNodeName, imageDimensions, numberOfRuns=1, appendToFile=False, firstInFile=False): document = k3d.new_document() profiler = document.new_node("PipelineProfiler") inputSolid = document.new_node("BitmapSolid") inputSolid.width = imageDimensions[0] inputSolid.height = imageDimensions[1] benchmarkNode = document.new_node(BitmapNodeName) profilingResults = k3dProfilingProcessor() for n in range(numberOfRuns): document.set_dependency(benchmarkNode.get_property("input_bitmap"), inputSolid.get_property("output_bitmap")) benchmarkNode.output_bitmap profilingResults.add_profiler_results_for_node(BitmapNodeName, profiler.records) description = '%dx%d' % (imageDimensions[0], imageDimensions[1]) profilingResults.output_and_save(BitmapNodeName, description, appendToFile, firstInFile)
def run_mesh_modifier_benchmark(meshModifierNodeName, benchmarkMesh, numberOfRuns = 1, properties = {}, appendToFile = False, firstInFile=False): document = k3d.new_document() profiler = k3d.plugin.create("PipelineProfiler", document) benchmarkMesh.set_document(document) inputNode = benchmarkMesh.get_mesh() selection = k3d.select_all() benchmarkNode = k3d.plugin.create(meshModifierNodeName, document) for (p, val) in properties.items(): benchmarkNode.get_property(p).set_value(val) benchmarkNode.mesh_selection = selection profilingResults = k3dProfilingProcessor() for n in range(numberOfRuns): k3d.property.connect(document, inputNode.get_property("output_mesh"), benchmarkNode.get_property("input_mesh")) benchmarkNode.output_mesh profilingResults.add_profiler_results_for_node(meshModifierNodeName, profiler.records) description = '%d' % (benchmarkMesh.get_size_metric()) profilingResults.output_and_save(meshModifierNodeName, description, appendToFile, firstInFile)
def setup_scalar_source_test(source_name): class result_object: pass result = result_object result.document = k3d.new_document() result.source = k3d.plugin.create(source_name, result.document) return result
def setup_scalar_source_test(source_name): doc = k3d.new_document() source = doc.new_node(source_name) class result_object: pass result = result_object result.document = doc result.source = source return result
def setup_mesh_modifier_test(source_name, modifier_name): class result_object: pass result = result_object result.document = k3d.new_document() result.source = k3d.plugin.create(source_name, result.document) result.add_index_attributes = k3d.plugin.create("AddIndexAttributes", result.document) result.modifier = k3d.plugin.create(modifier_name, result.document) k3d.property.connect(result.document, result.source.get_property("output_mesh"), result.add_index_attributes.get_property("input_mesh")) k3d.property.connect(result.document, result.add_index_attributes.get_property("output_mesh"), result.modifier.get_property("input_mesh")) return result
def setup_bitmap_reader_test(reader_name, source_file): doc = k3d.new_document() reader = doc.new_node(reader_name) reader.file = k3d.filesystem.generic_path(source_path() + "/bitmaps/" + source_file) class result_object: pass result = result_object result.document = doc result.reader = reader return result
def setup_mesh_source_test(source_name): doc = k3d.new_document() source = doc.new_node(source_name) class result_object: pass result = result_object result.document = doc result.source = source result.output_mesh = source.get_property("output_mesh").pipeline_value() return result
def setup_matrix_modifier_test(source_name, matrix): doc = k3d.new_document() source = doc.new_node(source_name) source.input_matrix = matrix class result_object: pass result = result_object result.document = doc result.source = source return result
def setup_mesh_reader_test(reader_name, source_file): doc = k3d.new_document() reader = doc.new_node(reader_name) reader.file = k3d.filesystem.generic_path(source_path() + "/meshes/" + source_file) reader.center = False reader.scale_to_size = False class result_object: pass result = result_object result.document = doc result.reader = reader return result
def run_mesh_source_benchmark(meshSourceNodeName, numberOfRuns = 1, properties = {}, appendToFile = False, firstInFile=False): document = k3d.new_document() profiler = k3d.plugin.create("PipelineProfiler", document) benchmarkNode = k3d.plugin.create(meshSourceNodeName, document) sizeMetric = 1 for (p, val) in properties.items(): benchmarkNode.get_property(p).set_value(val) sizeMetric *= val profilingResults = k3dProfilingProcessor() for n in range(numberOfRuns): benchmarkNode.output_mesh profilingResults.add_profiler_results_for_node(meshSourceNodeName, profiler.records) profilingResults.output_and_save(meshSourceNodeName, '%d' % (sizeMetric), appendToFile, firstInFile)
def setup_mesh_modifier_test(source_name, modifier_name): doc = k3d.new_document() source = doc.new_node(source_name) modifier = doc.new_node(modifier_name) doc.set_dependency(modifier.get_property("input_mesh"), source.get_property("output_mesh")) class result_object: pass result = result_object result.document = doc result.source = source result.modifier = modifier return result
def setup_mesh_modifier_test(source_name, modifier_name): class result_object: pass result = result_object result.document = k3d.new_document() result.source = k3d.plugin.create(source_name, result.document) result.add_index_attributes = k3d.plugin.create("AddIndexAttributes", result.document) result.modifier = k3d.plugin.create(modifier_name, result.document) k3d.property.connect( result.document, result.source.get_property("output_mesh"), result.add_index_attributes.get_property("input_mesh")) k3d.property.connect( result.document, result.add_index_attributes.get_property("output_mesh"), result.modifier.get_property("input_mesh")) return result
def setup_mesh_modifier_image_test(source_name, modifier_name): doc = k3d.new_document() axes = doc.new_node("Axes") axes.xyplane = False painter = create_default_painter(doc) source = doc.new_node(source_name) modifier = doc.new_node(modifier_name) doc.set_dependency(modifier.get_property("input_mesh"), source.get_property("output_mesh")) mesh_instance = doc.new_node("MeshInstance") mesh_instance.gl_painter = painter doc.set_dependency(mesh_instance.get_property("input_mesh"), modifier.get_property("output_mesh")) camera = create_camera(doc) render_engine = create_opengl_engine(doc) camera_to_bitmap = doc.new_node("CameraToBitmap") camera_to_bitmap.camera = camera camera_to_bitmap.render_engine = render_engine class result_object: pass result = result_object result.document = doc result.axes = axes result.painter = painter result.source = source result.modifier = modifier result.mesh_instance = mesh_instance result.camera = camera result.render_engine = render_engine result.camera_to_bitmap = camera_to_bitmap return result
def run_mesh_source_benchmark(meshSourceNodeName, numberOfRuns=1, properties={}, appendToFile=False, firstInFile=False): document = k3d.new_document() profiler = k3d.plugin.create("PipelineProfiler", document) benchmarkNode = k3d.plugin.create(meshSourceNodeName, document) sizeMetric = 1 for (p, val) in properties.items(): benchmarkNode.get_property(p).set_value(val) sizeMetric *= val profilingResults = k3dProfilingProcessor() for n in range(numberOfRuns): benchmarkNode.output_mesh profilingResults.add_profiler_results_for_node(meshSourceNodeName, profiler.records) profilingResults.output_and_save(meshSourceNodeName, '%d' % (sizeMetric), appendToFile, firstInFile)
#python # This script recreates a "normal" environment that allows us to perform automated # regression-testing on our demo scripts. import k3d context.document = k3d.new_document()
def bitmap_modifier_benchmark(BitmapModifier): sys.stdout.write("""<DartMeasurement name="Timing" type="text/html"><![CDATA[\n""") sys.stdout.write("""<table>\n""") sizes = [(640,480), (800,600), (1024,768), (1280,1024), (1600, 1200)] runs = 3 first_row = True for size in sizes: for run in range(runs): document = k3d.new_document() profiler = k3d.plugin.create("PipelineProfiler", document) image = k3d.plugin.create("BitmapSolid", document) image.width = size[0]; image.height = size[1]; modifier = k3d.plugin.create(BitmapModifier, document) k3d.property.connect(document, image.get_property("output_bitmap"), modifier.get_property("input_bitmap")) modifier.output_bitmap if first_row: first_row = False sys.stdout.write("""<tr>""") sys.stdout.write("""<th>Width</th>""") sys.stdout.write("""<th>Height</th>""") sys.stdout.write("""<th>Run</th>""") records = profiler.records for node in records: if node != modifier: continue measurements = records[node] for measurement in measurements: sys.stdout.write("""<th>""") sys.stdout.write(measurement) sys.stdout.write("""</th>""") sys.stdout.write("""</tr>\n""") sys.stdout.write("""<tr>""") sys.stdout.write("""<td>""" + str(size[0]) + """</td>""") sys.stdout.write("""<td>""" + str(size[1]) + """</td>""") sys.stdout.write("""<td>""" + str(run) + """</td>""") records = profiler.records for node in records: if node != modifier: continue measurements = records[node] for measurement in measurements: sys.stdout.write("""<td>""") sys.stdout.write(str(measurements[measurement])) sys.stdout.write("""</td>""") sys.stdout.write("""</tr>\n""") k3d.close_document(document) sys.stdout.write("""</table>\n""") sys.stdout.write("""]]></DartMeasurement>\n""")
def bitmap_modifier_benchmark(BitmapModifier): sys.stdout.write( """<DartMeasurement name="Timing" type="text/html"><![CDATA[\n""") sys.stdout.write("""<table>\n""") sizes = [(640, 480), (800, 600), (1024, 768), (1280, 1024), (1600, 1200)] runs = 3 first_row = True for size in sizes: for run in range(runs): document = k3d.new_document() profiler = k3d.plugin.create("PipelineProfiler", document) image = k3d.plugin.create("BitmapSolid", document) image.width = size[0] image.height = size[1] modifier = k3d.plugin.create(BitmapModifier, document) k3d.property.connect(document, image.get_property("output_bitmap"), modifier.get_property("input_bitmap")) modifier.output_bitmap if first_row: first_row = False sys.stdout.write("""<tr>""") sys.stdout.write("""<th>Width</th>""") sys.stdout.write("""<th>Height</th>""") sys.stdout.write("""<th>Run</th>""") records = profiler.records for node in records: if node != modifier: continue measurements = records[node] for measurement in measurements: sys.stdout.write("""<th>""") sys.stdout.write(measurement) sys.stdout.write("""</th>""") sys.stdout.write("""</tr>\n""") sys.stdout.write("""<tr>""") sys.stdout.write("""<td>""" + str(size[0]) + """</td>""") sys.stdout.write("""<td>""" + str(size[1]) + """</td>""") sys.stdout.write("""<td>""" + str(run) + """</td>""") records = profiler.records for node in records: if node != modifier: continue measurements = records[node] for measurement in measurements: sys.stdout.write("""<td>""") sys.stdout.write(str(measurements[measurement])) sys.stdout.write("""</td>""") sys.stdout.write("""</tr>\n""") k3d.close_document(document) sys.stdout.write("""</table>\n""") sys.stdout.write("""]]></DartMeasurement>\n""")
#python import k3d document = k3d.new_document() pointToVector = k3d.plugin.create("PointToVector", document) vector = k3d.vector3(1, 2, 3) point = k3d.point3(1, 2, 3) pointToVector.point = point if pointToVector.vector != vector: raise Exception("Incorrect convertion: pointToVector.vector = " + str(pointToVector.vector) + "; point = " + str(point))
#python import k3d import testing document = k3d.new_document() setup = testing.setup_mesh_reader_test("PLYMeshReader", "mesh.modifier.PGPRemesh.torus.ply") modifier = setup.document.new_node("PGPRemesh") modifier.use_smooth = True modifier.steps = 15 modifier.h = 1000 modifier.omega = 10 modifier.div = 4 modifier.triangulate = True document.set_dependency(modifier.get_property("input_mesh"), setup.reader.get_property("output_mesh")) #print "source output: " + repr(source.output_mesh) #print "triangles output: " + repr(triangles.output_mesh) #print "modifier output: " + repr(modifier.output_mesh) testing.mesh_comparison_to_reference(document, modifier.get_property("output_mesh"), "mesh.modifier.PGPRemesh.torus", 1)
#python import k3d doc = k3d.new_document();