示例#1
0
文件: testing.py 项目: yurivict/k3d
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
示例#2
0
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")
示例#4
0
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,
示例#5
0
# 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,