diff options
Diffstat (limited to 'doc/python_api/examples')
-rw-r--r-- | doc/python_api/examples/bge.constraints.py | 37 | ||||
-rw-r--r-- | doc/python_api/examples/bge.texture.1.py | 40 | ||||
-rw-r--r-- | doc/python_api/examples/bge.texture.2.py | 237 | ||||
-rw-r--r-- | doc/python_api/examples/bge.texture.py | 46 | ||||
-rw-r--r-- | doc/python_api/examples/bpy.ops.2.py | 4 | ||||
-rw-r--r-- | doc/python_api/examples/gpu.offscreen.1.py | 2 |
6 files changed, 4 insertions, 362 deletions
diff --git a/doc/python_api/examples/bge.constraints.py b/doc/python_api/examples/bge.constraints.py deleted file mode 100644 index c617ac0622b..00000000000 --- a/doc/python_api/examples/bge.constraints.py +++ /dev/null @@ -1,37 +0,0 @@ -""" -Basic Physics Constraint -++++++++++++++++++++++++ -Example of how to create a hinge Physics Constraint between two objects. -""" -from bge import logic -from bge import constraints - -# get object list -objects = logic.getCurrentScene().objects - -# get object named Object1 and Object 2 -object_1 = objects["Object1"] -object_2 = objects["Object2"] - -# want to use Edge constraint type -constraint_type = 2 - -# get Object1 and Object2 physics IDs -physics_id_1 = object_1.getPhysicsId() -physics_id_2 = object_2.getPhysicsId() - -# use bottom right edge of Object1 for hinge position -edge_position_x = 1.0 -edge_position_y = 0.0 -edge_position_z = -1.0 - -# rotate the pivot z axis about 90 degrees -edge_angle_x = 0.0 -edge_angle_y = 0.0 -edge_angle_z = 90.0 - -# create an edge constraint -constraints.createConstraint(physics_id_1, physics_id_2, - constraint_type, - edge_position_x, edge_position_y, edge_position_z, - edge_angle_x, edge_angle_y, edge_angle_z) diff --git a/doc/python_api/examples/bge.texture.1.py b/doc/python_api/examples/bge.texture.1.py deleted file mode 100644 index 732c786c667..00000000000 --- a/doc/python_api/examples/bge.texture.1.py +++ /dev/null @@ -1,40 +0,0 @@ -""" -Texture Replacement -+++++++++++++++++++ - -Example of how to replace a texture in game with an external image. -``createTexture()`` and ``removeTexture()`` are to be called from a -module Python Controller. -""" -from bge import logic -from bge import texture - - -def createTexture(cont): - """Create a new Dynamic Texture""" - obj = cont.owner - - # get the reference pointer (ID) of the internal texture - ID = texture.materialID(obj, 'IMoriginal.png') - - # create a texture object - object_texture = texture.Texture(obj, ID) - - # create a new source with an external image - url = logic.expandPath("//newtexture.jpg") - new_source = texture.ImageFFmpeg(url) - - # the texture has to be stored in a permanent Python object - logic.texture = object_texture - - # update/replace the texture - logic.texture.source = new_source - logic.texture.refresh(False) - - -def removeTexture(cont): - """Delete the Dynamic Texture, reversing back the final to its original state.""" - try: - del logic.texture - except: - pass diff --git a/doc/python_api/examples/bge.texture.2.py b/doc/python_api/examples/bge.texture.2.py deleted file mode 100644 index 96619007fba..00000000000 --- a/doc/python_api/examples/bge.texture.2.py +++ /dev/null @@ -1,237 +0,0 @@ -""" -Video Capture with DeckLink -+++++++++++++++++++++++++++ -Video frames captured with DeckLink cards have pixel formats that are generally not directly -usable by OpenGL, they must be processed by a shader. The three shaders presented here should -cover all common video capture cases. - -This file reflects the current video transfer method implemented in the Decklink module: -whenever possible the video images are transferred as float texture because this is more -compatible with GPUs. Of course, only the pixel formats that have a correspondant GL format -can be transferred as float. Look for fg_shaders in this file for an exhaustive list. - -Other pixel formats will be transferred as 32 bits integer red-channel texture but this -won't work with certain GPU (Intel GMA); the corresponding shaders are not shown here. -However, it should not be necessary to use any of them as the list below covers all practical -cases of video capture with all types of Decklink product. - -In other words, only use one of the pixel format below and you will be fine. Note that depending -on the video stream, only certain pixel formats will be allowed (others will throw an exception). -For example, to capture a PAL video stream, you must use one of the YUV formats. - -To find which pixel format is suitable for a particular video stream, use the 'Media Express' -utility that comes with the Decklink software : if you see the video in the 'Log and Capture' -Window, you have selected the right pixel format and you can use the same in Blender. - -Notes: * these shaders only decode the RGB channel and set the alpha channel to a fixed -value (look for color.a = ). It's up to you to add postprocessing to the color. - * these shaders are compatible with 2D and 3D video stream -""" -import bge -from bge import logic -from bge import texture as vt - -# The default vertex shader, because we need one -# -VertexShader = """ -#version 130 - void main() - { - gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex; - gl_TexCoord[0] = gl_MultiTexCoord0; - } - -""" - -# For use with RGB video stream: the pixel is directly usable -# -FragmentShader_R10l = """ - #version 130 - uniform sampler2D tex; - // stereo = 1.0 if 2D image, =0.5 if 3D (left eye below, right eye above) - uniform float stereo; - // eye = 0.0 for the left eye, 0.5 for the right eye - uniform float eye; - - void main(void) - { - vec4 color; - float tx, ty; - tx = gl_TexCoord[0].x; - ty = eye+gl_TexCoord[0].y*stereo; - color = texture(tex, vec2(tx,ty)); - color.a = 0.7; - gl_FragColor = color; - } -""" - -# For use with YUV video stream -# -FragmentShader_2vuy = """ - #version 130 - uniform sampler2D tex; - // stereo = 1.0 if 2D image, =0.5 if 3D (left eye below, right eye above) - uniform float stereo; - // eye = 0.0 for the left eye, 0.5 for the right eye - uniform float eye; - - void main(void) - { - vec4 color; - float tx, ty, width, Y, Cb, Cr; - int px; - tx = gl_TexCoord[0].x; - ty = eye+gl_TexCoord[0].y*stereo; - width = float(textureSize(tex, 0).x); - color = texture(tex, vec2(tx, ty)); - px = int(floor(fract(tx*width)*2.0)); - switch (px) { - case 0: - Y = color.g; - break; - case 1: - Y = color.a; - break; - } - Y = (Y - 0.0625) * 1.168949772; - Cb = (color.b - 0.0625) * 1.142857143 - 0.5; - Cr = (color.r - 0.0625) * 1.142857143 - 0.5; - color.r = Y + 1.5748 * Cr; - color.g = Y - 0.1873 * Cb - 0.4681 * Cr; - color.b = Y + 1.8556 * Cb; - color.a = 0.7; - gl_FragColor = color; - } -""" - -# For use with high resolution YUV -# -FragmentShader_v210 = """ - #version 130 - uniform sampler2D tex; - // stereo = 1.0 if 2D image, =0.5 if 3D (left eye below, right eye above) - uniform float stereo; - // eye = 0.0 for the left eye, 0.5 for the right eye - uniform float eye; - - void main(void) - { - vec4 color, color1, color2, color3; - int px; - float tx, ty, width, sx, dx, bx, Y, Cb, Cr; - tx = gl_TexCoord[0].x; - ty = eye+gl_TexCoord[0].y*stereo; - width = float(textureSize(tex, 0).x); - // to sample macro pixels (6 pixels in 4 words) - sx = tx*width*0.25+0.01; - // index of display pixel in the macro pixel 0..5 - px = int(floor(fract(sx)*6.0)); - // increment as we sample the macro pixel - dx = 1.0/width; - // base x coord of macro pixel - bx = (floor(sx)+0.01)*dx*4.0; - color = texture(tex, vec2(bx, ty)); - color1 = texture(tex, vec2(bx+dx, ty)); - color2 = texture(tex, vec2(bx+dx*2.0, ty)); - color3 = texture(tex, vec2(bx+dx*3.0, ty)); - switch (px) { - case 0: - case 1: - Cb = color.b; - Cr = color.r; - break; - case 2: - case 3: - Cb = color1.g; - Cr = color2.b; - break; - default: - Cb = color2.r; - Cr = color3.g; - break; - } - switch (px) { - case 0: - Y = color.g; - break; - case 1: - Y = color1.b; - break; - case 2: - Y = color1.r; - break; - case 3: - Y = color2.g; - break; - case 4: - Y = color3.b; - break; - default: - Y = color3.r; - break; - } - Y = (Y - 0.0625) * 1.168949772; - Cb = (Cb - 0.0625) * 1.142857143 - 0.5; - Cr = (Cr - 0.0625) * 1.142857143 - 0.5; - color.r = Y + 1.5748 * Cr; - color.g = Y - 0.1873 * Cb - 0.4681 * Cr; - color.b = Y + 1.8556 * Cb; - color.a = 0.7; - gl_FragColor = color; - } -""" - -# The exhausitve list of pixel formats that are transferred as float texture -# Only use those for greater efficiency and compatiblity. -# -fg_shaders = { - '2vuy' :FragmentShader_2vuy, - '8BitYUV' :FragmentShader_2vuy, - 'v210' :FragmentShader_v210, - '10BitYUV' :FragmentShader_v210, - '8BitBGRA' :FragmentShader_R10l, - 'BGRA' :FragmentShader_R10l, - '8BitARGB' :FragmentShader_R10l, - '10BitRGBXLE':FragmentShader_R10l, - 'R10l' :FragmentShader_R10l - } - - -# -# Helper function to attach a pixel shader to the material that receives the video frame. -# - -def config_video(obj, format, pixel, is3D=False, mat=0, card=0): - if pixel not in fg_shaders: - raise('Unsuported shader') - shader = obj.meshes[0].materials[mat].getShader() - if shader is not None and not shader.isValid(): - shader.setSource(VertexShader, fg_shaders[pixel], True) - shader.setSampler('tex', 0) - shader.setUniformEyef("eye") - shader.setUniform1f("stereo", 0.5 if is3D else 1.0) - tex = vt.Texture(obj, mat) - tex.source = vt.VideoDeckLink(format + "/" + pixel + ("/3D" if is3D else ""), card) - print("frame rate: ", tex.source.framerate) - tex.source.play() - obj["video"] = tex - -# -# Attach this function to an object that has a material with texture -# and call it once to initialize the object -# -def init(cont): - # config_video(cont.owner, 'HD720p5994', '8BitBGRA') - # config_video(cont.owner, 'HD720p5994', '8BitYUV') - # config_video(cont.owner, 'pal ', '10BitYUV') - config_video(cont.owner, 'pal ', '8BitYUV') - - -# -# To be called on every frame -# -def play(cont): - obj = cont.owner - video = obj.get("video") - if video is not None: - video.refresh(True) diff --git a/doc/python_api/examples/bge.texture.py b/doc/python_api/examples/bge.texture.py deleted file mode 100644 index 8b24530b10a..00000000000 --- a/doc/python_api/examples/bge.texture.py +++ /dev/null @@ -1,46 +0,0 @@ -""" -Basic Video Playback -++++++++++++++++++++ -Example of how to replace a texture in game with a video. -It needs to run everyframe. -To avoid any confusion with the location of the file, -we will use ``GameLogic.expandPath()`` to build an absolute file name, -assuming the video file is in the same directory as the blend-file. -""" -import bge -from bge import texture -from bge import logic - -cont = logic.getCurrentController() -obj = cont.owner - -# the creation of the texture must be done once: save the -# texture object in an attribute of bge.logic module makes it persistent -if not hasattr(logic, 'video'): - - # identify a static texture by name - matID = texture.materialID(obj, 'IMvideo.png') - - # create a dynamic texture that will replace the static texture - logic.video = texture.Texture(obj, matID) - - # define a source of image for the texture, here a movie - movie = logic.expandPath('//trailer_400p.ogg') - logic.video.source = texture.VideoFFmpeg(movie) - logic.video.source.scale = True - - # Note that we can change the ``Texture`` source at any time. - # Suppose we want to switch between two movies during the game: - logic.mySources[0] = texture.VideoFFmpeg('movie1.avi') - logic.mySources[1] = texture.VideoFFmpeg('movie2.avi') - - #And then assign (and reassign) the source during the game - logic.video.source = logic.mySources[movieSel] - - # quick off the movie, but it wont play in the background - logic.video.source.play() - - -# Video playback is not a background process: it happens only when we refresh the texture. -# So you need to call this function every frame to ensure update of the texture. -logic.video.refresh(True) diff --git a/doc/python_api/examples/bpy.ops.2.py b/doc/python_api/examples/bpy.ops.2.py index dd88c73d5e9..5f98c8a6656 100644 --- a/doc/python_api/examples/bpy.ops.2.py +++ b/doc/python_api/examples/bpy.ops.2.py @@ -20,6 +20,6 @@ The execution context is one of: 'EXEC_SCREEN') """ -# group add popup +# collection add popup import bpy -bpy.ops.object.group_instance_add('INVOKE_DEFAULT') +bpy.ops.object.collection_instance_add('INVOKE_DEFAULT') diff --git a/doc/python_api/examples/gpu.offscreen.1.py b/doc/python_api/examples/gpu.offscreen.1.py index 75ddf804e70..ff1a7ad7cce 100644 --- a/doc/python_api/examples/gpu.offscreen.1.py +++ b/doc/python_api/examples/gpu.offscreen.1.py @@ -52,6 +52,7 @@ class OffScreenDraw(bpy.types.Operator): @staticmethod def _update_offscreen(context, offscreen): scene = context.scene + render_layer = context.render_layer render = scene.render camera = scene.camera @@ -65,6 +66,7 @@ class OffScreenDraw(bpy.types.Operator): offscreen.draw_view3d( scene, + render_layer, context.space_data, context.region, projection_matrix, |