def create_camera(document): camera_view = k3d.plugin.create("ViewMatrix", document) camera_view.position = k3d.translate3(k3d.vector3(-10, -15, 10)) camera_view.look = k3d.identity3() camera_view.up = k3d.translate3(k3d.vector3(0, 0, 20)) camera = k3d.plugin.create("Camera", document) k3d.property.connect(document, camera_view.get_property("output_matrix"), camera.get_property("input_matrix")) return camera
def create_camera(document): camera_view = document.new_node("ViewMatrix") camera_view.position = k3d.translate3(k3d.vector3(-10, -15, 10)) camera_view.look = k3d.identity3() camera_view.up = k3d.translate3(k3d.vector3(0, 0, 20)) camera = document.new_node("Camera") document.set_dependency(camera.get_property("input_matrix"), camera_view.get_property("output_matrix")) return camera
def evaluate(Curve, T): c = k3d.vector3(0, 0, 0) for i in range(len(Curve.control_points)): control_point = Curve.control_points[i] w = control_point.weight * basis(i, Curve.order - 1, T, Curve.knots) b = control_point.position * w c = c + b return c
def mesh_modifier_benchmark( benchmarkPluginName, maxSize=15, properties={"input_matrix": k3d.translate3(k3d.vector3(0, 0, 1))}): current_count = [1, 1, 1] runsPerBenchmark = 10 append = True for k in range(maxSize): try: benchmark_mesh = benchmarkMesh(current_count) run_mesh_modifier_benchmark(benchmarkPluginName, benchmark_mesh, runsPerBenchmark, properties, append, k == 0) current_count[k % 3] *= 2 except: break
#python import k3d import testing doc = k3d.new_document() source = k3d.plugin.create("Vector3SourceScript", doc) if source.output_vector != k3d.vector3(1, 2, 3): raise "unexpected output_vector: " + str(source.output_vector)
#python import k3d k3d.check_node_environment(locals(), "MeshSourceScript") # Construct a teapot mesh primitive ... teapot = k3d.teapot.create(Output) color = teapot.uniform_data().create("Cs", "k3d::color") # Add three teapots ... teapot.matrices().append(k3d.translate3(k3d.vector3(-7, 0, 0))) teapot.materials().append(None) teapot.selections().append(0.0) color.append(k3d.color(1, 0, 0)) teapot.matrices().append(k3d.translate3(k3d.vector3(0, 0, 0))) teapot.materials().append(None) teapot.selections().append(0.0) color.append(k3d.color(0, 1, 0)) teapot.matrices().append(k3d.translate3(k3d.vector3(7, 0, 0))) teapot.materials().append(None) teapot.selections().append(0.0) color.append(k3d.color(0, 0, 1))
#python from math import radians import k3d k3d.check_node_environment(context, "MeshSourceScript") # Construct a sphere mesh primitive ... hyperboloid = k3d.hyperboloid.create(context.output) color = hyperboloid.parameter_attributes().create("Cs", "k3d::color") # Add two hyperboloids ... hyperboloid.matrices().append(k3d.translate3(k3d.vector3(-5, 0, 0))) hyperboloid.materials().append(None) hyperboloid.start_points().append(k3d.point3(-2, 2, 2)) hyperboloid.end_points().append(k3d.point3(2, 2, -2)) hyperboloid.sweep_angles().append(radians(360)) hyperboloid.selections().append(0) color.append(k3d.color(1, 0, 0)) color.append(k3d.color(1, 0, 0)) color.append(k3d.color(1, 1, 0)) color.append(k3d.color(1, 1, 0)) hyperboloid.matrices().append(k3d.translate3(k3d.vector3(5, 0, 0))) hyperboloid.materials().append(None) hyperboloid.start_points().append(k3d.point3(-2, 2, 2)) hyperboloid.end_points().append(k3d.point3(2, 2, -2)) hyperboloid.sweep_angles().append(radians(360)) hyperboloid.selections().append(0) color.append(k3d.color(1, 0, 0)) color.append(k3d.color(1, 0, 0))
#python from math import radians import k3d k3d.check_node_environment(locals(), "MeshSourceScript") # Construct a sphere mesh primitive ... cylinder = k3d.cylinder.create(Output) color = cylinder.varying_data().create("Cs", "k3d::color") # Add two cylinders ... cylinder.matrices().append(k3d.translate3(k3d.vector3(-3, 0, 0))) cylinder.materials().append(None) cylinder.radii().append(2) cylinder.z_min().append(-5) cylinder.z_max().append(5) cylinder.sweep_angles().append(radians(360)) cylinder.selections().append(0) color.append(k3d.color(1, 0, 0)) color.append(k3d.color(1, 0, 0)) color.append(k3d.color(1, 1, 0)) color.append(k3d.color(1, 1, 0)) cylinder.matrices().append(k3d.translate3(k3d.vector3(3, 0, 0))) cylinder.materials().append(None) cylinder.radii().append(2) cylinder.z_min().append(-5) cylinder.z_max().append(5) cylinder.sweep_angles().append(radians(360)) cylinder.selections().append(0)
#python import k3d k3d.check_node_environment(context, "MeshSourceScript") # Construct a teapot mesh primitive ... teapot = k3d.teapot.create(context.output) color = teapot.surface_attributes().create("Cs", "k3d::color") # Add three teapots ... teapot.matrices().append(k3d.translate3(k3d.vector3(-7, 0, 0))) teapot.materials().append(None) teapot.selections().append(0.0) color.append(k3d.color(1, 0, 0)) teapot.matrices().append(k3d.translate3(k3d.vector3(0, 0, 0))) teapot.materials().append(None) teapot.selections().append(0.0) color.append(k3d.color(0, 1, 0)) teapot.matrices().append(k3d.translate3(k3d.vector3(7, 0, 0))) teapot.materials().append(None) teapot.selections().append(0.0) color.append(k3d.color(0, 0, 1))
def mesh_modifier_benchmark(benchmarkPluginName, maxSize = 15, properties = {"input_matrix" : k3d.translate3(k3d.vector3(0, 0, 1))}): current_count = [1,1,1] runsPerBenchmark = 10 append = True for k in range(maxSize): try: benchmark_mesh = benchmarkMesh(current_count) run_mesh_modifier_benchmark(benchmarkPluginName, benchmark_mesh, runsPerBenchmark, properties, append, k == 0) current_count[k % 3] *= 2 except: break
#python import k3d import sys import testing setup = testing.setup_mesh_writer_test(["FrozenMesh", "K3DMeshWriter"], "K3DMeshReader", "mesh.serialization.k3d") mesh = setup.source.create_mesh() primitive = mesh.primitives().create("test") array_types = [ "k3d::bool_t", "k3d::color", "k3d::double_t", "k3d::imaterial*", "k3d::inode*", "k3d::int16_t", "k3d::int32_t", "k3d::int64_t", "k3d::int8_t", "k3d::matrix4", "k3d::normal3", "k3d::point2", "k3d::point3", "k3d::point4", "k3d::string_t", "k3d::texture3", "k3d::uint16_t", "k3d::uint32_t", "k3d::uint64_t", "k3d::uint8_t", "k3d::vector2", "k3d::vector3", "k3d::uint_t" ] array_values = [ True, k3d.color(1, 2, 3), 1.0, None, None, 1, 2, 3, 4, k3d.identity3(), k3d.normal3(1, 2, 3), k3d.point2(1, 2), k3d.point3(1, 2, 3), k3d.point4(1, 2, 3, 4), "A String", k3d.texture3(1, 2, 3), 1, 2, 3, 4, k3d.vector2(1, 2), k3d.vector3(1, 2, 3), 7 ] structure = primitive.structure().create("generic") attributes = primitive.attributes().create("generic") for i in range(len(array_types)): type = array_types[i] value = array_values[i] structure_array = structure.create(type, type) structure_array.append(value) structure_array.append(value) structure_array.append(value) attribute_array = attributes.create(type, type) attribute_array.append(value) attribute_array.append(value) attribute_array.append(value)
# python from math import radians import k3d k3d.check_node_environment(context, "MeshSourceScript") # Construct a sphere mesh primitive ... hyperboloid = k3d.hyperboloid.create(context.output) color = hyperboloid.parameter_attributes().create("Cs", "k3d::color") # Add two hyperboloids ... hyperboloid.matrices().append(k3d.translate3(k3d.vector3(-5, 0, 0))) hyperboloid.materials().append(None) hyperboloid.start_points().append(k3d.point3(-2, 2, 2)) hyperboloid.end_points().append(k3d.point3(2, 2, -2)) hyperboloid.sweep_angles().append(radians(360)) hyperboloid.selections().append(0) color.append(k3d.color(1, 0, 0)) color.append(k3d.color(1, 0, 0)) color.append(k3d.color(1, 1, 0)) color.append(k3d.color(1, 1, 0)) hyperboloid.matrices().append(k3d.translate3(k3d.vector3(5, 0, 0))) hyperboloid.materials().append(None) hyperboloid.start_points().append(k3d.point3(-2, 2, 2)) hyperboloid.end_points().append(k3d.point3(2, 2, -2)) hyperboloid.sweep_angles().append(radians(360)) hyperboloid.selections().append(0) color.append(k3d.color(1, 0, 0))
#python from math import radians import k3d k3d.check_node_environment(context, "MeshSourceScript") # Construct a sphere mesh primitive ... paraboloids = k3d.paraboloid.create(context.output) color = paraboloids.parameter_attributes().create("Cs", "k3d::color") # Add two paraboloids ... paraboloids.matrices().append(k3d.translate3(k3d.vector3(-5, 0, 0))) paraboloids.materials().append(None) paraboloids.radii().append(3) paraboloids.z_min().append(0) paraboloids.z_max().append(6) paraboloids.sweep_angles().append(radians(360)) paraboloids.selections().append(0.0) color.append(k3d.color(1, 0, 0)) color.append(k3d.color(1, 0, 0)) color.append(k3d.color(1, 1, 0)) color.append(k3d.color(1, 1, 0)) paraboloids.matrices().append(k3d.translate3(k3d.vector3(5, 0, 0))) paraboloids.materials().append(None) paraboloids.radii().append(3) paraboloids.z_min().append(0) paraboloids.z_max().append(6) paraboloids.sweep_angles().append(radians(360)) paraboloids.selections().append(0.0)
#python import k3d k3d.check_node_environment(locals(), "MeshSourceScript") # Construct a cube mesh primitive ... cubes = Output.primitives().create("cube") matrices = cubes.topology().create("matrices", "k3d::matrix4") materials = cubes.topology().create("materials", "k3d::imaterial*") uniform = cubes.attributes().create("uniform") color = uniform.create("Cs", "k3d::color") # Add three cubes ... matrices.append(k3d.translate3(k3d.vector3(-7, 0, 0))) materials.append(None) color.append(k3d.color(1, 0, 0)) matrices.append(k3d.translate3(k3d.vector3(0, 0, 0))) materials.append(None) color.append(k3d.color(0, 1, 0)) matrices.append(k3d.translate3(k3d.vector3(7, 0, 0))) materials.append(None) color.append(k3d.color(0, 0, 1)) print repr(Output)
#python from math import radians import k3d k3d.check_node_environment(context, "MeshSourceScript") # Construct a sphere mesh primitive ... sphere = k3d.sphere.create(context.output) color = sphere.parameter_attributes().create("Cs", "k3d::color") # Add two spheres ... sphere.matrices().append(k3d.translate3(k3d.vector3(-3, 0, 0))) sphere.materials().append(None) sphere.radii().append(2) sphere.z_min().append(-1) sphere.z_max().append(1) sphere.sweep_angles().append(radians(360)) sphere.selections().append(0) color.append(k3d.color(1, 0, 0)) color.append(k3d.color(1, 0, 0)) color.append(k3d.color(1, 1, 0)) color.append(k3d.color(1, 1, 0)) sphere.matrices().append(k3d.translate3(k3d.vector3(3, 0, 0))) sphere.materials().append(None) sphere.radii().append(2) sphere.z_min().append(-1) sphere.z_max().append(1) sphere.sweep_angles().append(radians(360)) sphere.selections().append(0)
#python import k3d import testing setup = testing.setup_mesh_source_test("CUDAPolyGridAndTransformPoints") setup.source.input_matrix = k3d.translate3(k3d.vector3(0, 0, 1)) testing.require_valid_mesh(setup.document, setup.source.get_property("output_mesh")) testing.require_similar_mesh(setup.document, setup.source.get_property("output_mesh"), "mesh.source.PolyGridAndTransformPoints", 1)
#python import k3d document = k3d.new_document() pointSubtraction = k3d.plugin.create("PointSubtraction", document) pointSubtraction.a = k3d.point3(1, 2, 3) pointSubtraction.b = k3d.point3(3, 2, 1) if pointSubtraction.a_minus_b != k3d.vector3(-2, 0, 2): raise Exception("(1, 2, 3) - (3, 2, 1) != (-2, 0, 2)")
create_property(test_container, "k3d::filesystem::path", k3d.filesystem.generic_path("/foo/bar/baz")) create_property(test_container, "k3d::gl::imesh_painter*", test_gl_mesh_painter) create_property(test_container, "k3d::imaterial*", test_material) create_property(test_container, "k3d::inode*", test_node) create_property(test_container, "k3d::int32_t", 19700827) create_property(test_container, "k3d::matrix4", k3d.scale3(1, 2, 3)) 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(path) test_container2 = document.get_node("test_container") test_property( test_container2.get_property("k3d::bool_t").internal_value(), True)
#python import k3d import math a = k3d.angle_axis(math.radians(90), k3d.vector3(0, 0, 1)) if math.degrees(a.angle) != 90: raise "angle incorrect"
#python import k3d document = k3d.new_document() vectorSubtraction = k3d.plugin.create("VectorSubtraction", document) vectorSubtraction.a = k3d.vector3(1, 2, 3) vectorSubtraction.b = k3d.vector3(3, 2, 1) if vectorSubtraction.a_minus_b != k3d.vector3(-2, 0, 2): raise Exception("(1, 2, 3) - (3, 2, 1) != (-2, 0, 2)")
#python import k3d document = k3d.new_document() planeCreation = k3d.plugin.create("PlaneCreation", document) normal = k3d.vector3(0, 0, 1) point = k3d.point3(0, 1, 0) planeCreation.normal = normal planeCreation.point = point if planeCreation.plane != k3d.plane(normal, point): raise Exception("Incorrect plane: " + str(planeCreation.plane))
#python from math import radians import k3d k3d.check_node_environment(locals(), "MeshSourceScript") # Construct a sphere mesh primitive ... sphere = k3d.sphere.create(Output) color = sphere.varying_data().create("Cs", "k3d::color") # Add two spheres ... sphere.matrices().append(k3d.translate3(k3d.vector3(-3, 0, 0))) sphere.materials().append(None) sphere.radii().append(2) sphere.z_min().append(-1) sphere.z_max().append(1) sphere.sweep_angles().append(radians(360)) sphere.selections().append(0) color.append(k3d.color(1, 0, 0)) color.append(k3d.color(1, 0, 0)) color.append(k3d.color(1, 1, 0)) color.append(k3d.color(1, 1, 0)) sphere.matrices().append(k3d.translate3(k3d.vector3(3, 0, 0))) sphere.materials().append(None) sphere.radii().append(2) sphere.z_min().append(-1) sphere.z_max().append(1) sphere.sweep_angles().append(radians(360)) sphere.selections().append(0)
#python import k3d import testing setup = testing.setup_mesh_source_test("CUDAPolyGridAndTransformPoints") setup.source.input_matrix = k3d.translate3(k3d.vector3(0, 0, 1)) testing.mesh_comparison_to_reference(setup.document, setup.source.get_property("output_mesh"), "mesh.source.PolyGridAndTransformPoints", 1)
create_property(test_container, "k3d::bool_t", True) create_property(test_container, "k3d::color", k3d.color(1, 2, 3)) create_property(test_container, "k3d::double_t", 3.1415) create_property(test_container, "k3d::filesystem::path", k3d.filesystem.generic_path("/foo/bar/baz")) create_property(test_container, "k3d::gl::imesh_painter*", test_gl_mesh_painter) create_property(test_container, "k3d::imaterial*", test_material) create_property(test_container, "k3d::inode*", test_node) create_property(test_container, "k3d::int32_t", 19700827) create_property(test_container, "k3d::matrix4", k3d.scale3(1, 2, 3)) 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"))
"k3d::int8_t", "k3d::matrix4", "k3d::normal3", "k3d::point2", "k3d::point3", "k3d::point4", "k3d::string_t", "k3d::texture3", "k3d::uint16_t", "k3d::uint32_t", "k3d::uint64_t", "k3d::uint8_t", "k3d::vector2", "k3d::vector3", "k3d::uint_t" ] array_values = [ True, k3d.color(1, 2, 3), 1.0, None, None, 1, 2, 3, 4, k3d.identity3(), k3d.normal3(1, 2, 3), k3d.point2(1, 2), k3d.point3(1, 2, 3), k3d.point4(1, 2, 3, 4), "A String", k3d.texture3(1, 2, 3), 1, 2, 3, 4, k3d.vector2(1, 2), k3d.vector3(1, 2, 3), 7 ] structure = primitive.structure().create("generic") attributes = primitive.attributes().create("generic") for i in range(len(array_types)): type = array_types[i] value = array_values[i] structure_array = structure.create(type, type) structure_array.append(value) structure_array.append(value) structure_array.append(value) attribute_array = attributes.create(type, type)
#python from math import radians import k3d k3d.check_node_environment(context, "MeshSourceScript") # Construct a sphere mesh primitive ... disk = k3d.disk.create(context.output) color = disk.parameter_attributes().create("Cs", "k3d::color") # Add two disks ... disk.matrices().append(k3d.translate3(k3d.vector3(-5, 0, 0))) disk.materials().append(None) disk.heights().append(0) disk.radii().append(4) disk.sweep_angles().append(radians(360)) disk.selections().append(0) color.append(k3d.color(1, 0, 0)) color.append(k3d.color(1, 0, 0)) color.append(k3d.color(1, 1, 0)) color.append(k3d.color(1, 1, 0)) disk.matrices().append(k3d.translate3(k3d.vector3(5, 0, 0))) disk.materials().append(None) disk.heights().append(0) disk.radii().append(4) disk.sweep_angles().append(radians(360)) disk.selections().append(0) color.append(k3d.color(1, 0, 0)) color.append(k3d.color(1, 0, 0))
#python import k3d k3d.check_node_environment(context, "MeshSourceScript") # Construct a cube mesh primitive ... cubes = context.output.primitives().create("cube") matrices = cubes.topology().create("matrices", "k3d::matrix4") materials = cubes.topology().create("materials", "k3d::imaterial*") uniform = cubes.attributes().create("uniform") color = uniform.create("Cs", "k3d::color") # Add three cubes ... matrices.append(k3d.translate3(k3d.vector3(-7, 0, 0))) materials.append(None) color.append(k3d.color(1, 0, 0)) matrices.append(k3d.translate3(k3d.vector3(0, 0, 0))) materials.append(None) color.append(k3d.color(0, 1, 0)) matrices.append(k3d.translate3(k3d.vector3(7, 0, 0))) materials.append(None) color.append(k3d.color(0, 0, 1)) print repr(context.output)
#python import k3d import sys import testing document = k3d.new_document() source = document.new_node("FrozenMesh") mesh = source.create_mesh() primitive = mesh.primitives().create("test") array_types = [ "k3d::bool_t", "k3d::color", "k3d::double_t", "k3d::imaterial*", "k3d::inode*", "k3d::int16_t", "k3d::int32_t", "k3d::int64_t", "k3d::int8_t", "k3d::matrix4", "k3d::normal3", "k3d::point2", "k3d::point3", "k3d::point4", "k3d::string_t", "k3d::texture3", "k3d::uint16_t", "k3d::uint32_t", "k3d::uint64_t", "k3d::uint8_t", "k3d::vector2", "k3d::vector3", "k3d::uint_t" ] array_values = [ True, k3d.color(1, 2, 3), 1.0, None, None, 1, 2, 3, 4, k3d.identity3(), k3d.normal3(1, 2, 3), k3d.point2(1, 2), k3d.point3(1, 2, 3), k3d.point4(1, 2, 3, 4), "A String", k3d.texture3(1, 2, 3), 1, 2, 3, 4, k3d.vector2(1, 2), k3d.vector3(1, 2, 3), 7 ] attributes = primitive.attributes().create("uniform") for i in range(len(array_types)): type = array_types[i] value = array_values[i] named_array = primitive.structure().create(type, type) named_array.append(value) named_array.append(value) attribute_array = attributes.create(type, type) attribute_array.append(value) attribute_array.append(value) attribute_array.append(value) print repr(mesh) sys.stdout.flush()
#python import k3d import testing setup = testing.setup_mesh_modifier_test("PolyCube", "CUDATransformPoints") selection = k3d.geometry.selection.create(0) selection.points = k3d.geometry.point_selection.uniform(selection, 1) setup.modifier.mesh_selection = selection setup.modifier.input_matrix = k3d.translate3(k3d.vector3(0, 0, 1)) testing.require_valid_mesh(setup.document, setup.modifier.get_property("output_mesh")) testing.require_similar_mesh(setup.document, setup.modifier.get_property("output_mesh"), "mesh.modifier.TransformPoints", 1)
#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 Output = k3d.vector3(1, 2, 3)
#python import k3d import testing setup = testing.setup_mesh_modifier_test("PolyCube", "TransformPoints") selection = k3d.mesh_selection.deselect_all() selection.points = k3d.mesh_selection.component_select_all() setup.modifier.mesh_selection = selection setup.modifier.input_matrix = k3d.translate3(k3d.vector3(0, 0, 1)) testing.mesh_comparison_to_reference( setup.document, setup.modifier.get_property("output_mesh"), "mesh.modifier.TransformPoints", 1)
#python import k3d context.output = k3d.vector3(1, 2, 3)