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:
Diffstat (limited to 'doc/python_api/examples')
-rw-r--r--doc/python_api/examples/bge.constraints.py37
-rw-r--r--doc/python_api/examples/bge.texture.1.py40
-rw-r--r--doc/python_api/examples/bge.texture.2.py237
-rw-r--r--doc/python_api/examples/bge.texture.py46
-rw-r--r--doc/python_api/examples/bpy.ops.2.py4
-rw-r--r--doc/python_api/examples/gpu.offscreen.1.py2
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,