def volume_shader_test(render_engine_name, shader_name): class result_object: def render(self): self.render_engine.render_camera_frame(self.camera, self.output, False) result = result_object result.document = k3d.open_document( k3d.filesystem.generic_path(source_path() + "/shaders/volume_shader_test.k3d")) result.camera = k3d.node.lookup_one(result.document, "Camera") result.render_engine = k3d.node.lookup_one(result.document, "RenderMan Engine") result.material = k3d.node.lookup_one(result.document, "RenderManMaterial") result.shader = k3d.node.lookup_one(result.document, "RenderManVolumeShader") result.shader.shader_path = k3d.share_path() / k3d.filesystem.generic_path( "shaders/volume/" + shader_name + ".sl") result.output = k3d.filesystem.generic_path(binary_path() + "/shaders/volume/" + shader_name + "." + render_engine_name + ".tiff") result.render_engine.render_engine = k3d.node.lookup_one( result.document, render_engine_name) result.render_engine.render_camera_frame(result.camera, result.output, False) return result
def volume_shader_test(render_engine_name, shader_name): class result_object: def render(self): self.render_engine.render_camera_frame(self.camera, self.output, False) result = result_object result.document = k3d.open_document(k3d.filesystem.generic_path(source_path() + "/shaders/volume_shader_test.k3d")) result.camera = k3d.node.lookup_one(result.document, "Camera") result.render_engine = k3d.node.lookup_one(result.document, "RenderMan Engine") result.material = k3d.node.lookup_one(result.document, "RenderManMaterial") result.shader = k3d.node.lookup_one(result.document, "RenderManVolumeShader") result.shader.shader_path = k3d.share_path() / k3d.filesystem.generic_path("shaders/volume/" + shader_name + ".sl") result.output = k3d.filesystem.generic_path(binary_path() + "/shaders/volume/" + shader_name + "." + render_engine_name + ".tiff") result.render_engine.render_engine = k3d.node.lookup_one(result.document, render_engine_name) result.render_engine.render_camera_frame(result.camera, result.output, False) return result
create_property(test_container, "k3d::normal3", k3d.normal3(1, 2, 3)) create_property(test_container, "k3d::point3", k3d.point3(1, 2, 3)) create_property(test_container, "k3d::point4", k3d.point4(1, 2, 3, 4)) create_property(test_container, "k3d::ri::imesh_painter*", test_ri_mesh_painter) create_property(test_container, "k3d::ri::itexture*", test_ri_texture) create_property(test_container, "k3d::string_t", "K-3D Rocks!") create_property(test_container, "k3d::vector3", k3d.vector3(1, 2, 3)) path = testing.binary_path() + "/document.serialization.properties.output.k3d" document.save(path) def test_property(value, expected_value): if value != expected_value: raise "property value doesn't match: ", value, expected_value document2 = k3d.open_document(k3d.filesystem.native_path(path)) test_container2 = k3d.node.lookup_one(document, "test_container") test_property(test_container2.get_property("k3d::bool_t").internal_value(), True) test_property(test_container2.get_property("k3d::color").internal_value(), k3d.color(1, 2, 3)) test_property(test_container2.get_property("k3d::double_t").internal_value(), 3.1415) test_property(test_container2.get_property("k3d::filesystem::path").internal_value(), k3d.filesystem.generic_path("/foo/bar/baz")) test_property(test_container2.get_property("k3d::gl::imesh_painter*").internal_value().name, "test_gl_mesh_painter") test_property(test_container2.get_property("k3d::imaterial*").internal_value().name, "test_material") test_property(test_container2.get_property("k3d::inode*").internal_value().name, "test_node") test_property(test_container2.get_property("k3d::int32_t").internal_value(), 19700827) test_property(test_container2.get_property("k3d::matrix4").internal_value(), k3d.scale3(1, 2, 3)) test_property(test_container2.get_property("k3d::normal3").internal_value(), k3d.normal3(1, 2, 3)) test_property(test_container2.get_property("k3d::point3").internal_value(), k3d.point3(1, 2, 3)) test_property(test_container2.get_property("k3d::point4").internal_value(), k3d.point4(1, 2, 3, 4)) test_property(test_container2.get_property("k3d::ri::imesh_painter*").internal_value().name, "test_ri_mesh_painter")
create_property(test_container, "k3d::ri::imesh_painter*", test_ri_mesh_painter) create_property(test_container, "k3d::ri::itexture*", test_ri_texture) create_property(test_container, "k3d::string_t", "K-3D Rocks!") create_property(test_container, "k3d::vector3", k3d.vector3(1, 2, 3)) path = testing.binary_path() + "/document.serialization.properties.output.k3d" document.save(path) def test_property(value, expected_value): if value != expected_value: raise "property value doesn't match: ", value, expected_value document2 = k3d.open_document(path) test_container2 = document.get_node("test_container") test_property( test_container2.get_property("k3d::bool_t").internal_value(), True) test_property( test_container2.get_property("k3d::color").internal_value(), k3d.color(1, 2, 3)) test_property( test_container2.get_property("k3d::double_t").internal_value(), 3.1415) test_property( test_container2.get_property("k3d::filesystem::path").internal_value(), k3d.filesystem.generic_path("/foo/bar/baz")) test_property( test_container2.get_property( "k3d::gl::imesh_painter*").internal_value().name,
# This scenario can be adapted to many different use-cases. For example, this # script could be modified to load a series of OBJ files into the document, rendering # each in-turn. The script could also modify other properties of the document to # create animated effects. # # To run the script, do the following at the shell: # # $ k3d --ui=none --script-file=/path/to/batch_render.py --batch --exit # # The import k3d import os # Load our "template" document. We assume that the document already contains materials / lighting / render options to suit. document = k3d.open_document(k3d.share_path() / k3d.filesystem.generic_path("scripts/shell/batch_render.k3d")) # Load an external OBJ file into the document. obj_reader = k3d.node.lookup_one(document, "OBJMeshReader") obj_reader.filepath = k3d.share_path() / k3d.filesystem.generic_path("geometry/knot.obj") # Figure-out where to put the rendered results. output = k3d.filesystem.native_path(os.getcwd()) / k3d.filesystem.generic_path("batch_render.tiff") print output # Render the document to the current directory. camera = k3d.node.lookup_one(document, "Camera") render_engine = k3d.node.lookup_one(document, "RenderMan Engine") render_engine.render_camera_frame(camera, output, False)
create_property(test_container, "k3d::ri::imesh_painter*", test_ri_mesh_painter) create_property(test_container, "k3d::ri::itexture*", test_ri_texture) create_property(test_container, "k3d::string_t", "K-3D Rocks!") create_property(test_container, "k3d::vector3", k3d.vector3(1, 2, 3)) path = testing.binary_path() + "/document.serialization.properties.output.k3d" document.save(path) def test_property(value, expected_value): if value != expected_value: raise "property value doesn't match: ", value, expected_value document2 = k3d.open_document(k3d.filesystem.native_path(path)) test_container2 = k3d.node.lookup_one(document, "test_container") test_property( test_container2.get_property("k3d::bool_t").internal_value(), True) test_property( test_container2.get_property("k3d::color").internal_value(), k3d.color(1, 2, 3)) test_property( test_container2.get_property("k3d::double_t").internal_value(), 3.1415) test_property( test_container2.get_property("k3d::filesystem::path").internal_value(), k3d.filesystem.generic_path("/foo/bar/baz")) test_property( test_container2.get_property( "k3d::gl::imesh_painter*").internal_value().name,