Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2012-12-30 05:39:55 +0400
committerCampbell Barton <ideasman42@gmail.com>2012-12-30 05:39:55 +0400
commit33955940e4931e2184434393e0f8c15c36a5c3c6 (patch)
tree7b3c10343162a256e85ff4346f57122032715e82 /release/scripts/templates_py/background_job.py
parente12354c4c5850864f925d22f53ec31578384bc63 (diff)
add templates menu for OSL, use preprocessor directive color for decorators in python.
Diffstat (limited to 'release/scripts/templates_py/background_job.py')
-rw-r--r--release/scripts/templates_py/background_job.py122
1 files changed, 122 insertions, 0 deletions
diff --git a/release/scripts/templates_py/background_job.py b/release/scripts/templates_py/background_job.py
new file mode 100644
index 00000000000..11b51e5a9b5
--- /dev/null
+++ b/release/scripts/templates_py/background_job.py
@@ -0,0 +1,122 @@
+# This script is an example of how you can run blender from the command line
+# (in background mode with no interface) to automate tasks, in this example it
+# creates a text object, camera and light, then renders and/or saves it.
+# This example also shows how you can parse command line options to scripts.
+#
+# Example usage for this test.
+# blender --background --factory-startup --python $HOME/background_job.py -- \
+# --text="Hello World" \
+# --render="/tmp/hello" \
+# --save="/tmp/hello.blend"
+#
+# Notice:
+# '--factory-startup' is used to avoid the user default settings from
+# interfearing with automated scene generation.
+#
+# '--' causes blender to ignore all following arguments so python can use them.
+#
+# See blender --help for details.
+
+import bpy
+
+
+def example_function(text, save_path, render_path):
+
+ scene = bpy.context.scene
+
+ # Clear existing objects.
+ scene.camera = None
+ for obj in scene.objects:
+ scene.objects.unlink(obj)
+
+ txt_data = bpy.data.curves.new(name="MyText", type='FONT')
+
+ # Text Object
+ txt_ob = bpy.data.objects.new(name="MyText", object_data=txt_data)
+ scene.objects.link(txt_ob) # add the data to the scene as an object
+ txt_data.body = text # the body text to the command line arg given
+ txt_data.align = 'CENTER' # center text
+
+ # Camera
+ cam_data = bpy.data.cameras.new("MyCam")
+ cam_ob = bpy.data.objects.new(name="MyCam", object_data=cam_data)
+ scene.objects.link(cam_ob) # instance the camera object in the scene
+ scene.camera = cam_ob # set the active camera
+ cam_ob.location = 0.0, 0.0, 10.0
+
+ # Lamp
+ lamp_data = bpy.data.lamps.new("MyLamp", 'POINT')
+ lamp_ob = bpy.data.objects.new(name="MyCam", object_data=lamp_data)
+ scene.objects.link(lamp_ob)
+ lamp_ob.location = 2.0, 2.0, 5.0
+
+ if save_path:
+ try:
+ f = open(save_path, 'w')
+ f.close()
+ ok = True
+ except:
+ print("Cannot save to path %r" % save_path)
+
+ import traceback
+ traceback.print_exc()
+
+ if ok:
+ bpy.ops.wm.save_as_mainfile(filepath=save_path)
+
+ if render_path:
+ render = scene.render
+ render.use_file_extension = True
+ render.filepath = render_path
+ bpy.ops.render.render(write_still=True)
+
+
+def main():
+ import sys # to get command line args
+ import argparse # to parse options for us and print a nice help message
+
+ # get the args passed to blender after "--", all of which are ignored by
+ # blender so scripts may receive their own arguments
+ argv = sys.argv
+
+ if "--" not in argv:
+ argv = [] # as if no args are passed
+ else:
+ argv = argv[argv.index("--") + 1:] # get all args after "--"
+
+ # When --help or no args are given, print this help
+ usage_text = \
+ "Run blender in background mode with this script:"
+ " blender --background --python " + __file__ + " -- [options]"
+
+ parser = argparse.ArgumentParser(description=usage_text)
+
+ # Example utility, add some text and renders or saves it (with options)
+ # Possible types are: string, int, long, choice, float and complex.
+ parser.add_argument("-t", "--text", dest="text", type=str, required=True,
+ help="This text will be used to render an image")
+
+ parser.add_argument("-s", "--save", dest="save_path", metavar='FILE',
+ help="Save the generated file to the specified path")
+ parser.add_argument("-r", "--render", dest="render_path", metavar='FILE',
+ help="Render an image to the specified path")
+
+ args = parser.parse_args(argv) # In this example we wont use the args
+
+ if not argv:
+ parser.print_help()
+ return
+
+ if not args.text:
+ print("Error: --text=\"some string\" argument not given, aborting.")
+ parser.print_help()
+ return
+
+ # Run the example function
+ example_function(args.text, args.save_path, args.render_path)
+
+ print("batch job finished, exiting")
+
+
+if __name__ == "__main__":
+ main()