With the introduction of 3Dstage in Ren'Py v7.46, this version has been discontinued. Now, ActionEditor3 is available https://github.com/kyouryuukunn/renpy-ActionEditor3
Ren'Py v7.4.6ã§å°å ¥ããã3Dstageã«åããŠæ¬ããŒãžã§ã³ã¯éçºåæ¢ããŸããã 以åŸã®ããŒãžã§ã³ã§ã¯ActionEditor3ããå©çšãã ããã https://github.com/kyouryuukunn/renpy-ActionEditor3
youtube sample Introduction https://www.youtube.com/watch?v=VMMBj4-7k_Q
Sample https://www.youtube.com/watch?v=lhA8Ib3iKE8
æ¥æ¬èªããã¥ã¢ã«ã¯ããã¥ã¡ã³ãåŸåã«ãããŸãã
This script adds the ability to simulate a 3D camera within Ren'Py, along with an in-game Action Editor and Image Viewer GUI to assist in animating the camera. To install, copy all files in the camera directory to your game directory.
Ren'Py http://www.renpy.org/
This allows you to adjusts coordinates of the simulated camera, 3D layers, and transform properties of images in real-time with a GUI. It can then generate a script based on these changes and place it on the clipboard for later pasting into Ren'Py scripts.
When config.developer
is True, pressing action_editor (by default,
"shift+P") will open the Action editor.
The Action Editor has the following features:
- View and adjust the transform properties of images, camera coordinates, and 3D layer depth with bars
- View and adjust the x and y coordinates of the camera with a mouse-positionable camera
- Adjust the z coordinate of the camera with the mouse wheel.
- Adjust the x,y coordinate of the camera with the keyboard(hjkl, HJKL).
- Alternatively, each value can be adjusted with the keyboard without going back to the original script.
- Add, delete, and edit keyframes on a timeline.
- After setting up a scene with the desired look and animations, the Action Editor will generate a script and place it on your clipboard for pasting into your Ren'Py scripts. (v6.99 and later only)
- Supported the concept of depth of field using blur after v7.40(gl2 or ANGLE2 is required). 1pixel blur is used where the distance from the focus position is dof. DOF is used to adjust the sharp range. Focus is used to adjust the focus position. You can adjust dof config in camera_config.rpy
Press Shift+U to open Image Viewer and view all currently generated displayables.
With some limitations, Ren'Py can simulate 3D camera motion. This will let you achieve a parallax effect by placing sprites and assets on a 3D field. This script works by applying ATL transforms to all displayables on 3D layers in a manner that respects distance from a virtual camera.
To start using the 3D camera, set additional layers to be registered
as 3D layers. If no layers are registered as 3D layers, this script will
register the default master
layer as a 3D layer.
To get started, add the layers you need. For example, add the following to
options.rpy to add background
, middle
, and forward
as regular 2D layers:
config.layers = ['master', 'background', 'middle', 'forward', 'transient', 'screens', 'overlay']
Second, register any layers that you want to respect 3D motion as 3d layers by using
:func:register_3d_layer
. The z coordinates of these layers can be moved and
can have their positions and transforms affected by the camera. If no layers
are registered as 3D layers, the default master
layer becomes the sole 3D
layer:
init python:
register_3d_layer('background', 'middle', 'forward')
This sample script should give an idea of how the system works:
label start:
# Resets the camera and layers positions
$ camera_reset()
# Instantly sets layer distances from the camera
$ layer_move("background", 2000)
$ layer_move("middle", 1500)
$ layer_move("forward", 1000)
scene bg onlayer background
# WARNING: The 'scene' command will reset the depth of whatever layer the image
# is displayed on. Make sure you reset the depth after you call the 'scene' command.
$ layer_move("background", 2000)
show A onlayer middle
show B onlayer forward
with dissolve
"Moves the camera to (1800, 0, 0) in 1 second."
$ camera_move(1800, 0, 0, 0, 1)
"Moves the camera to (0, 0, 1600) in 5 seconds."
$ camera_move(0, 0, 1600, 0, 5)
"Moves the camera to (0, 0, 0) instantaneously."
$ camera_move(0, 0, 0)
"Rotates the camera 180 degrees in 1 second.""
$ camera_move(0, 0, 0, 180, 1)
'Rotates the camera -180 degrees in 1 second and subsequently moves the camera to (-1800, 0, 500) in 1.5 seconds'
$ camera_moves( ( (0, 0, 0, 0, 1, 'linear'), (-1800, 0, 500, 0, 1.5, 'linear') ) )
'Continually moves the camera between (-1800, 0, 500) and (0, 0, 0), taking 0.5 seconds for the first move and 1 second for the second until the action is interrupted.'
$ camera_moves( ( (0, 0, 0, 0, .5, 'linear'), (-1800, 0, 500, 0, 1, 'linear') ), loop=True)
There are some limitations to the 3D camera:
-
Only rotations perpindicular to the camera (Z rotations) can be performed due to the 3D camera relying on Ren'Py's existing transform system.
-
3D camera motion applies its own transforms to 3D layers, so the
show layer
statement or :func:renpy.show_layer_at
can't be used with registered 3D layers. -
Layers still stack in the order they are registered, regardless of what their z coordinates are. In our above example,
background
will always be below the other layers because it was registered first, even if its z coordinate was at0
and theforward
layer's z coordinate was at1000
. -
camera_move
,camera_moves
,layer_move
,layer_moves
, andall_moves
can't play simultaneously within the same interaction. If multiple camera actions are called in the same interaction, only the last one will play out and earlier actions will be done instantenously before the last action is played. -
DOF is simulated using blur for layers, so note the back layer is often seen through the front layer.
-
By default, the
scene
andhide
statements use themaster
layer or a specified layer. If you use 3D layers preferentially, write code like below:init -1 python hide: def hide(name, layer='master'): for l in _3d_layers: if renpy.showing(name, l): renpy.hide(name, l) break else: renpy.hide(name, layer)
config.hide = hide def scene(layer='master'): renpy.scene(layer) for l in _3d_layers: renpy.scene(l) config.scene = scene
def register_3d_layer(*layers):
"""
:doc: camera
Register layers as 3D layers. Only 3D layers will be affected by camera
movement and 3D layer transforms. This should be called in an init
block. If no layers are registered as 3D layers, the 'master' layer
will become a 3D layer by default.
`layers`
This should be a string or a group of strings naming registered layers.
"""
def camera_reset():
"""
:doc: camera
Resets the camera, 3D layers positions and the focus position, the depth of field.
"""
def camera_restore():
"""
:doc: camera
Safety method used internally to deal with unexpected camera behavior.
"""
def camera_move(x, y, z, rotate=0, duration=0, warper='linear', subpixel=True, loop=False, x_express=None, y_express=None, z_express=None, rotate_express=None, **kwargs):
"""
:doc: camera
Moves the camera to a given coordinate and rotation.
`x`
The x coordinate to move the camera to.
`y`
The y coordinate to move the camera to.
`z`
The z coordinate to move the camera to.
`rotate`
Rotation of the camera, perpindicular to the scene, in degrees.
`duration`
The time, in seconds, to complete the camera move. If no time is given,
the move will happen instantaneously.
`warper`
A string that points to a registered ATL warper, like \'ease\'.
If no warper is given, this will default to \'linear\'.
`subpixel`
If True, transforms caused by the 3D camera will be rendered with
subpixel precision. This defaults to True.
`loop`
If true, the camera move will continually loop until another camera
action interrupts. This defaults to False.
`x_express`
This should be a callable function that is called with the shown
timebase and is given an animation timebase in seconds. The
result of this function is added to the x coordinate of the camera.
`y_express`
This should be a callable function that is called with the shown
timebase and is given an animation timebase in seconds. The
result of this function is added to the y coordinate of the camera.
`z_express`
This should be a callable function that is called with the shown
timebase and is given an animation timebase in seconds. The
result of this function is added to the z coordinate of the camera.
`rotate_express`
This should be a callable function that is called with the shown
timebase and is given an animation timebase in seconds. The
result of this function is added to the rotation value of the camera.
`<layer name>_express`
This should be a callable function that is called with the shown
timebase and is given an animation timebase in seconds. The
result of this function is added to the coordinate of the given layer.
"""
def camera_relative_move(x, y, z, rotate=0, duration=0, warper='linear', subpixel=True, loop=False, x_express=None, y_express=None, z_express=None, rotate_express=None, **kwargs):
"""
:doc: camera
Move the coordinate and rotate of a camera relatively and apply transforms to all 3D layers.
`x`
the x coordinate of a camera relative to the current one.
`y`
the y coordinate of a camera relative to the current one.
`z`
the z coordinate of a camera relative to the current one.
`rotate`
Defaul 0, the rotate of a camera relative to the current one.
`duration`
Default 0, this is the second times taken to move a camera.
`warper`
Default 'linear', this should be string and the name of a warper
registered with ATL.
`subpixel`
Default True, if True, causes things to be drawn on the screen
using subpixel positioning
`loop`
Default False, if True, this motion repeats.
'x_express'
This should be callable, which is called with the shown timebase
and the animation timebase, in seconds and return a number. The
result of this is added to the x coordinate of the camera.
'y_express'
This should be callable, which is called with the shown timebase
and the animation timebase, in seconds and return a number. The
result of this is added to the y coordinate of the camera.
'z_express'
This should be callable, which is called with the shown timebase
and the animation timebase, in seconds and return a number. The
result of this is added to the z coordinate of the camera.
'rotate_express'
This should be callable, which is called with the shown timebase
and the animation timebase, in seconds and return a number. The
result of this is added to the rotate coordinate of the camera.
`<layer name>_express`
This should be a callable function that is called with the shown
timebase and is given an animation timebase in seconds. The
result of this function is added to the coordinate of the given layer.
"""
def layer_move(layer, z, duration=0, warper='linear', subpixel=True, loop=False, x_express=None, y_express=None, z_express=None, rotate_express=None, layer_express=None):
"""
:doc: camera
Moves the z coordinate of a layer and applies a transform to the layer.
`layer`
A string that names a registered 3D layer to be moved.
`z`
The z coordinate to move the 3D layer to.
`duration`
The time, in seconds, to complete the layer move. If no time is given,
the move will happen instantaneously.
`warper`
A string that points to a registered ATL warper, like \'ease\'.
If no warper is given, this will default to \'linear\'.
`subpixel`
If True, the resulting layer move will be rendered with
subpixel precision. This defaults to True.
`loop`
If true, the layer move will continually loop until another camera
action interrupts. This defaults to False.
`x_express`
This should be a callable function that is called with the shown
timebase and is given an animation timebase in seconds. The
result of this function is added to the x coordinate of the camera.
`y_express`
This should be a callable function that is called with the shown
timebase and is given an animation timebase in seconds. The
result of this function is added to the y coordinate of the camera.
`z_express`
This should be a callable function that is called with the shown
timebase and is given an animation timebase in seconds. The
result of this function is added to the z coordinate of the camera.
`rotate_express`
This should be a callable function that is called with the shown
timebase and is given an animation timebase in seconds. The
result of this function is added to the rotation value of the camera.
`layer_express`
This should be a callable function that is called with the shown
timebase and is given an animation timebase in seconds. The
result of this function is added to the coordinate of the layer.
"""
def camera_moves(check_points, loop=False, subpixel=True, x_express=None, y_express=None, z_express=None, rotate_express=None, spline=False, **kwargs):
"""
:doc: camera
Allows multiple camera moves to happen in succession.
`check_points`
A list of camera moves, in the format of (x, y, z, rotate, duration, warper)
`loop`
If true, the camera moves will continually loop until another camera
action interrupts. This defaults to False.
`subpixel`
If True, transforms caused by the 3D camera will be rendered with
subpixel precision. This defaults to True.
`x_express`
This should be a callable function that is called with the shown
timebase and is given an animation timebase in seconds. The
result of this function is added to the x coordinate of the camera.
`y_express`
This should be a callable function that is called with the shown
timebase and is given an animation timebase in seconds. The
result of this function is added to the y coordinate of the camera.
`z_express`
This should be a callable function that is called with the shown
timebase and is given an animation timebase in seconds. The
result of this function is added to the z coordinate of the camera.
`rotate_express`
This should be a callable function that is called with the shown
timebase and is given an animation timebase in seconds. The
result of this function is added to the rotation value of the camera.
`<layer name>_express`
This should be a callable function that is called with the shown
timebase and is given an animation timebase in seconds. The
result of this function is added to the coordinate of the given layer.
`spline`
Enable spline interpolation for the coordinates of the camera. If this is True, warpers are ignored. This defaults to False.
"""
def camera_relative_moves(relative_check_points, loop=False, subpixel=True, x_express=None, y_express=None, z_express=None, rotate_express=None, spline=False, **kwargs):
"""
:doc: camera
Allows relative multiple camera moves to happen in succession.
`relative_check_points`
A list of camera moves, in the format of (x, y, z, rotate, duration, warper)
`loop`
If true, the camera moves will continually loop until another camera
action interrupts. This defaults to False.
`subpixel`
If True, transforms caused by the 3D camera will be rendered with
subpixel precision. This defaults to True.
`x_express`
This should be a callable function that is called with the shown
timebase and is given an animation timebase in seconds. The
result of this function is added to the x coordinate of the camera.
`y_express`
This should be a callable function that is called with the shown
timebase and is given an animation timebase in seconds. The
result of this function is added to the y coordinate of the camera.
`z_express`
This should be a callable function that is called with the shown
timebase and is given an animation timebase in seconds. The
result of this function is added to the z coordinate of the camera.
`rotate_express`
This should be a callable function that is called with the shown
timebase and is given an animation timebase in seconds. The
result of this function is added to the rotation value of the camera.
`<layer name>_express`
This should be a callable function that is called with the shown
timebase and is given an animation timebase in seconds. The
result of this function is added to the coordinate of the given layer.
`spline`
Enable spline interpolation for the coordinates of the camera. If this is True, warpers are ignored. This defaults to False.
"""
def layer_moves(layer, check_points, loop=False, subpixel=True, x_express=None, y_express=None, z_express=None, rotate_express=None, layer_express=None, spline=False):
"""
:doc: camera
Move a layer through check points and apply transform to the layer.
`layer`
A string that names a registered 3D layer to be moved.
`check_points`
A list of layer moves, in the format of (z, duration, warper)
`loop`
If true, the layer moves will continually loop until another camera
action interrupts. This defaults to False.
`subpixel`
If True, the resulting layer moves will be rendered with
subpixel precision. This defaults to True.
`layer_express`
This should be a callable function that is called with the shown
timebase and is given an animation timebase in seconds. The
result of this function is added to the coordinate of the layer.
`x_express`
This should be a callable function that is called with the shown
timebase and is given an animation timebase in seconds. The
result of this function is added to the x coordinate of the camera.
`y_express`
This should be a callable function that is called with the shown
timebase and is given an animation timebase in seconds. The
result of this function is added to the y coordinate of the camera.
`z_express`
This should be a callable function that is called with the shown
timebase and is given an animation timebase in seconds. The
result of this function is added to the z coordinate of the camera.
`rotate_express`
This should be a callable function that is called with the shown
timebase and is given an animation timebase in seconds. The
result of this function is added to the rotation value of the camera.
`spline`
Enable spline interpolation for the coordinates of the layer. If this is True, warpers are ignored. This defaults to False.
"""
def focus_set(focus, duration=0, warper='linear', **kwargs):
"""
:doc: camera
Set the focus position.
`focus`
`focus` decides the focus position. It is the z coordinate which is sum of this value and
the z coordinate of camera.
`duration`
The time, in seconds, to complete the focus change. If no time is given,
the change will happen instantaneously.
`warper`
A string that points to a registered ATL warper, like \'ease\'.
If no warper is given, this will default to \'linear\'.
"""
def dof_set(dof, duration=0, warper='linear', **kwargs):
"""
:doc: camera
Set the depth of field.
`dof`
`dof` is the z range where layers aren't blured. it defaults to 9999999.
`duration`
The time, in seconds, to complete the dof change. If no time is given,
the change will happen instantaneously.
`warper`
A string that points to a registered ATL warper, like \'ease\'.
If no warper is given, this will default to \'linear\'.
"""
def all_moves(camera_check_points=None, layer_check_points=None, focus_check_points=None, subpixel=True, play=True, x_loop=False, y_loop=False, z_loop=False, rotate_loop=False, x_express=None, y_express=None, z_express=None, rotate_express=None, camera_spline=False, **kwargs):
"""
:doc: camera
Allows for both camera moves and layer moves to happen within the same interaction, in any given combination. The Action Editor will usually generate these.
`camera_check_points`
A list of check points for the camera to go through, split by coordinate in the following format:
{
'x':[(x, duration, warper)...]
'y':[(y, duration, warper)...]
'z':[(z, duration, warper)...]
'rotate':[(rotate, duration, warper)...]
}
`layer_check_points`
A list of check points for layers to go through, in the following format:
{
'layer name':[(z, duration, warper)...]
}
`focus_check_points`
A list of check points for the depth of field & the focus position,
in the following format:
{
'focus':[(z, duration, warper)...]
'dof':[(dof, duration, warper)...]
}
`dof` is the z range where layers aren't blured. it defaults to 9999999.
`focus` decides the focus position. It is the z coordinate which is sum of this value and
the z coordinate of camera.
`x_loop`
If True, all x coordinate check points will loop continuously. This defaults to False.
`y_loop`
If True, all y coordinate check points will loop continuously. This defaults to False.
`z_loop`
If True, all z coordinate check points will loop continuously. This defaults to False.
`rotate_loop`
If True, all rotation check points will loop continuously. This defaults to False.
`subpixel`
If True, all transforms caused by this function will be drawn with subpixel precision. This defaults to True.
`<layer name>_loop`
If True, all layer move check points for the given layer will loop continuously. This defaults to False.
`x_express`
This should be a callable function that is called with the shown
timebase and is given an animation timebase in seconds. The
result of this function is added to the x coordinate of the camera.
`y_express`
This should be a callable function that is called with the shown
timebase and is given an animation timebase in seconds. The
result of this function is added to the y coordinate of the camera.
`z_express`
This should be a callable function that is called with the shown
timebase and is given an animation timebase in seconds. The
result of this function is added to the z coordinate of the camera.
`rotate_express`
This should be a callable function that is called with the shown
timebase and is given an animation timebase in seconds. The
result of this function is added to the rotation value of the camera.
`<layer name>_express`
This should be a callable function that is called with the shown
timebase and is given an animation timebase in seconds. The
result of this function is added to the coordinate of the given layer.
`camera_spline`
Enable spline interpolation for the coordinates of the camera. If this is True, warpers are ignored. This defaults to False.
`<layer name>_spline`
Enable spline interpolation for the coordinates of the given layer. If this is True, warpers are ignored. This defaults to False.
"""
ãã®ã¹ã¯ãªããã¯Ren'Pyã«æ¬äŒŒçãª3Dã«ã¡ã©æ©èœåã³ãšãããGUIäžã§èšå®ããæŒåºãšãã£ã¿ãŒãããã«ç»åãã¥ãŒã¯ãŒã䟿å©ãªã¯ãŒããŒé¢æ°ãè¿œå ããŸãããã©ã«ãå ã®ãã¡ã€ã«ãgameãã©ã«ãã«ã³ããŒããŠãã ããã
æŒåºãšãã£ã¿ãŒã§ã¯å€æããããã£ãŒãã«ã¡ã©ãã¬ã€ã€ãŒã®åº§æšèšå®ãGUIäžã§å€æŽãã çµæã確èªã§ããŸããããã«ãããã®å€ãæé軞ã«æ²¿ã£ãŠå€æŽå¯èœãªã®ã§ãã¹ã¯ãªãã ãå€æŽãããã³ã«ããªããŒãã§çµæã確èªããåŸæ¥ã®æ¹æ³ããé¥ãã«çæéã§åçæŒåº ãäœæå¯èœã§ããèšå®ããå€ã¯ã¯ãªããããŒãã«éãããã¹ã¯ãªããã«è²Œãä»ããã㟠ãã
config.developer ã True ãªããShift+Pã§æŒåºãšãã£ã¿ãŒãèµ·åããŸãã
æŒåºãšãã£ã¿ãŒã§ã¯ä»¥äžã®æ©èœãå©çšå¯èœã§ãã:
- åç»åã®å€æããããã£ãŒãã«ã¡ã©ãã¬ã€ã€ãŒåº§æšãçŽæ¥å ¥åãŸãã¯ããŒã®æäœã«ããå€æŽ
- æ°å€ãå³ã¯ãªãã¯ã§ãªã»ãã
- ã«ã¡ã©ã¢ã€ã³ã³ã®ãã©ãã°ãŸãã¯ããŠã¹ãã€ãŒã«ãããŒããŒã(hjkl,HJKL)ã«ããã«ã¡ã©ç§»å
- åç»ç·šéãœããã®æ§ã«ããŒãã¬ãŒã ãèšå®ããŠæé軞ã«ãã£ãæŒåºãäœæ
- äœæããæŒåºã®ã³ãŒããã¯ãªããããŒãã«éã(v6.99以äž, Windowséå®)
- v7.40以éã§ã¯ãã©ãŒæ©èœãæµçšããŠæ¬äŒŒçã«è¢«åç深床(dof)ã®æŠå¿µãå°å ¥ããŠããŸã (gl2ãŸãã¯Angle2ã®æå¹åãå¿ èŠã§ã) ã«ã¡ã©ãããã©ãŒã«ã¹ååæ¹ã®äœçœ®ããDOFé¢ããäœçœ®ã§1ãã¯ã»ã«ã®ãã©ãŒãçºçããŸãã DOFã®æ°å€ã§ãã³ãã®åãç¯å²ãFocusã§ãã³ãäœçœ®ã調æŽã§ããŸãã camera_config.rpyã§çŽ°ããæåã調æŽã§ããŸãã
å®çŸ©ãããç»åãç»åã¿ã°ãå±æ§ããçžã蟌ãã§è¡šç€ºããŸãã
config.developer ã True ãªããShift+Uã§èµ·åããŸãã
äžæ¬¡å ãåçŸããé¢æ°çŸ€ãRen'Py ã«è¿œå ããŸãããããã¯3Dã¬ã€ã€ãŒã«ç»é²ãããå㬠ã€ã€ãŒã«z座æšãäžããã«ã¡ã©ãšã®äœçœ®é¢ä¿ã«ããæ¡å€§çž®å°ç§»åãããŠäžæ¬¡å ãã· ãã¥ã¬ãŒãããŸããããã«ãã奥è¡ãã®è¡šçŸãç°¡åã«å¯èœã«ãªããŸãããã®æ©èœã å©çšããã«ã¯ãå ã3Dã¬ã€ã€ãŒã«ç»é²ããã¬ã€ã€ãŒãè¿œå ããªããã°ãªããŸããã3D㬠ã€ã€ãŒã«äœãç»é²ãããŠããªãå Žåãããã©ã«ãã§"master"ã¬ã€ã€ãŒã®ã¿ã3Dã¬ã€ ã€ãŒã«ç»é²ãããŸãã
äŸ
options.rpy ã«3Dã¬ã€ã€ãŒã«ãããã¬ã€ã€ãŒãè¿œå ããŸããäŸãã° 'background', 'middle', 'forward' ã¬ã€ã€ãŒã以äžã®ããã«èšå®ã«è¿œå ããŸãã
config.layers = [ 'master', 'background', 'middle', 'forward', 'transient', 'screens', 'overlay']
次㫠register_3d_layer é¢æ°ã§3Dã¬ã€ã€ãŒãç»é²ããŸããç»é²ããã¬ã€ã€ãŒã¯z座æšã移ååºæ¥ãã«ã¡ã©ã®åœ±é¿ãåããŸããregister_3d_layerã䜿çšãããªããšãããã©ã«ãã§"master"ã¬ã€ã€ãŒãç»é²ãããŸãã
init python:
register_3d_layer( 'background', 'middle', 'forward',)
以äžã®èšå®ã§ãã²ãŒã äžã§ã«ã¡ã©ãåãããš3Dã¬ã€ã€ãŒãäžæ¬¡å ãåçŸããããã«åäœããŸãã
label start:
# ã«ã¡ã©ãã¬ã€ã€ãŒäœçœ®ããªã»ãã
$ camera_reset()
# 0ç§ã§ã¬ã€ã€ãŒz座æšãå€æŽããŸãã
$ layer_move("background", 2000)
$ layer_move("middle", 1500)
$ layer_move("forward", 1000)
scene bg onlayer background
# 泚æ: 'scene' ã¹ããŒãã¡ã³ãã¯ç»åã衚瀺ãããã ãã§ãªãããã®ç»åã衚瀺ãããã¬ã€ã€ãŒã®ç¶æ
ããªã»ããããŸãã
# åé¡ãçºçããå Žåã¯sceneã¹ããŒãã¡ã³ãåŸã«layer_moveé¢æ°ã§ã¬ã€ã€ãŒäœçœ®ãåèšå®ããŠãã ããã
show A onlayer middle
show B onlayer forward
with dissolve
'1ç§ã§ã«ã¡ã©ã(0, 130, 0)ãŸã§ç§»åãããŸãã'
$ camera_move(0, 130, 0, 0, 1)
'5ç§ã§ã«ã¡ã©ã(-70, 130, 1000)ãŸã§ç§»åãããŸãã'
$ camera_move(-70, 130, 1000, 0, 5)
'0ç§ãããŠã«ã¡ã©ã(0, 0, 0)ãŸã§ç§»åãããŸãã'
$ camera_move(0, 0, 0)
'1ç§ãããŠã«ã¡ã©ãæèšåãã«180床å転ããŸãã'
$ camera_move(0, 0, 0, 180, 1)
'1ç§ãããŠã«ã¡ã©ãåæèšåãã«180床å転ããã4ç§ãããŠã«ã¡ã©ã(100, 100, 100)ãŸã§ç§»åãããŸãã'
$ camera_moves( ( (0, 0, 0, 0, 1, 'linear'), (100, 100, 100, 0, 5, 'linear') ) )
'ã«ã¡ã©ã(100, 100, 100)ãã(0, 0, 0)ãŸã§ãç¹°ãè¿ãåŸåŸ©ããŸã'
$ camera_moves( ( (0, 0, 0, 0, 1, 'linear'), (100, 100, 100, 0, 2, 'linear') ), loop=True)
ã«ã¡ã©æ©èœã«ã¯ããã€ãã®å¶éãããããšã«æ³šæããŠãã ããã
-
ã«ã¡ã©ã¢ãŒã·ã§ã³ã¯3Dã¬ã€ã€ãŒã«å¯ŸããŠå€æãé©çšããŠåçŸããŠããããã3Dã¬ã€ã€ãŒã«å¯Ÿã㊠show layer ã¹ããŒãã¡ã³ãã renpy.show_layer_at é¢æ°ã¯äœ¿çšåºæ¥ãŸããã
-
ã¬ã€ã€ãŒã®éãªãé ã¯ã¬ã€ã€ãŒã®z座æšãåæ ããŸããã
-
camera_move, camera_moves, layer_move, layer_moves, all_moves ã¯ããããæä»çã§ããã²ãšã€ã®ã€ã³ã¿ã©ã¯ã·ã§ã³äžã«è€æ°ååŒã³åºããããšãæåŸã«åŒã³åºããããã®ã®ã¿ãæ£åžžã«åäœãããã以å€ã¯ç¬æã«ç§»åããŸãã
-
被åç深床ã¯ã¬ã€ã€ãŒæ¯ã®ãã©ãŒãæµçšããŠãããããæ¬ç©ã®ãã©ãŒãšéãè£åŽãéããŠèŠããããšããããŸãã
-
ããã©ã«ãã§ã¯Ren'Pyã® scene, show, hide ã¹ããŒãã¡ã³ã㯠master ã¬ã€ã€ãŒåã¯æå®ãããã¬ã€ã€ãŒã«ã®ã¿äœçšããŸãã3Dã¬ã€ã€ãŒã«å¯ŸããŠåªå çã«äœçšããããå Žåã¯ä»¥äžã®ããã«ããŠRen'Pyã®èšå®ãå€æŽããŠãã ããã
init -1 python hide: def hide(name, layer='master'): for l in _3d_layers: if renpy.showing(name, l): renpy.hide(name, l) else: renpy.hide(name, layer) config.hide = hide def scene(layer='master'): renpy.scene(layer) for l in _3d_layers: renpy.scene(l) config.scene = scene
def register_3d_layer(*layers):
"""
:doc: camera
ã¬ã€ã€ãŒã3Dã¬ã€ã€ãŒãšããŠç»é²ããŸãã3Dã¬ã€ã€ãŒã«ç»é²ãããã¬ã€ã€ãŒ
ã«ã¯ããã®z座æšãšã«ã¡ã©ã®äœçœ®ã«åºã¥ããå€æãé©çšãããŸããinitã
ããã¯ã§äžåºŠã ãåŒã³åºããŠãã ããã3Dã¬ã€ã€ãŒã«ãªã«ãç»é²ãããŠããª
ãå Žåã"master"ã¬ã€ã€ãŒã3Dã¬ã€ã€ãŒã«ç»é²ããŸãã
`layers`
3Dã¬ã€ã€ãŒã«ç»é²ãããäžã€ä»¥äžã®ã¬ã€ã€ãŒåã®æååã§ãã
"""
def camera_reset():
"""
:doc: camera
ã«ã¡ã©ãšã¬ã€ã€ãŒ,ãã©ãŒã«ã¹äœçœ®ã被åç深床ãåæå€ã«æ»ããŸãã
"""
def camera_restore():
"""
:doc: camera
ã«ã¡ã©ãšã¬ã€ã€ãŒãçŸåšèšå®ãããŠããäœçœ®ã«æ»ããŸãã
sceneã¹ããŒãã¡ã³ãããshow layerã¹ããŒãã¡ã³ãã§ç»åäœçœ®ãçã£ããšãã®ä¿®æ£ããã§ãã
"""
def camera_move(x, y, z, rotate=0, duration=0, warper='linear', subpixel=True, loop=False, x_express=None, y_express=None, z_express=None, rotate_express=None, **kwargs):
"""
:doc: camera
ã«ã¡ã©ã®åº§æšãšè§åºŠãæå®ã®æéãããŠå€æŽããŸãã
`x`
ã«ã¡ã©ã®x座æšã®æ°åã§ãã
`y`
ã«ã¡ã©ã®y座æšã®æ°åã§ãã
`z`
ã«ã¡ã©ã®y座æšã®æ°åã§ãã
`rotate`
ããã©ã«ãã¯0ã§ãã«ã¡ã©ã®åŸãã®æ°åã§ãã
`duration`
ããã©ã«ãã¯0ã§ãã«ã¡ã©ç§»åã«ãããæéã®ç§æ°ã§ãã
`loop`
ããã©ã«ã㯠Falseã§ãTrue ãªããã®ã¢ãŒã·ã§ã³ãç¹°ãæ¿ããããŸãã
`warper`
ããã©ã«ãã¯'linear'ã§, æéè£éã«äœ¿çšããé¢æ°åã®æååã§ããã
ãã«ã¯ATLã«ç»é²ãããæéè£éé¢æ°ãæå®åºæ¥ãŸãã
`subpixel`
ããã©ã«ã㯠Trueã§ã True ãªãã1 pixel 以äžã®å€ã䜿çšããŠç»é¢
ã«æç»ããŸãã
'x_express'
ããã¯åŒåºå¯èœãªãªããžã§ã¯ãã§ãåºçŸæé軞ãšã¢ãã¡ãŒã·ã§ã³æé
軞ã®ç§æ°ãåŒæ°ã«åŒã³åºãããæ°åãè¿ããŸãããã®çµæã¯ã«ã¡ã©ã®
x座æšã«å ããããŸãã
'y_express'
ããã¯åŒåºå¯èœãªãªããžã§ã¯ãã§ãåºçŸæé軞ãšã¢ãã¡ãŒã·ã§ã³æé
軞ã®ç§æ°ãåŒæ°ã«åŒã³åºãããæ°åãè¿ããŸãããã®çµæã¯ã«ã¡ã©ã®
y座æšã«å ããããŸãã
'z_express'
ããã¯åŒåºå¯èœãªãªããžã§ã¯ãã§ãåºçŸæé軞ãšã¢ãã¡ãŒã·ã§ã³æé
軞ã®ç§æ°ãåŒæ°ã«åŒã³åºãããæ°åãè¿ããŸãããã®çµæã¯ã«ã¡ã©ã®
z座æšã«å ããããŸãã
'rotate_express'
ããã¯åŒåºå¯èœãªãªããžã§ã¯ãã§ãåºçŸæé軞ãšã¢ãã¡ãŒã·ã§ã³æé
軞ã®ç§æ°ãåŒæ°ã«åŒã³åºãããæ°åãè¿ããŸãããã®çµæã¯ã«ã¡ã©ã®
rotate座æšã«å ããããŸãã
`<layer name>_express`
ããã¯åŒåºå¯èœãªãªããžã§ã¯ãã§ãåºçŸæé軞ãšã¢ãã¡ãŒã·ã§ã³æ
é軞ã®ç§æ°ãåŒæ°ã«åŒã³åºãããæ°åãè¿ããŸãããã®çµæã¯æå®
ããã¬ã€ã€ãŒã®åº§æšã«å ããããŸãã
"""
def camera_relative_move(x, y, z, rotate=0, duration=0, warper='linear', subpixel=True, loop=False, x_express=None, y_express=None, z_express=None, rotate_express=None, **kwargs):
"""
:doc: camera
ã«ã¡ã©ã®åº§æšãšè§åºŠãæå®ã®æéãããŠå€æŽããŸãã
`x`
çŸåšã®åº§æšã«å¯ŸããŠçžå¯Ÿçãªã«ã¡ã©ã®x座æšã®æ°åã§ãã
`y`
çŸåšã®åº§æšã«å¯ŸããŠçžå¯Ÿçãªã«ã¡ã©ã®y座æšã®æ°åã§ãã
`z`
çŸåšã®åº§æšã«å¯ŸããŠçžå¯Ÿçãªã«ã¡ã©ã®y座æšã®æ°åã§ãã
`rotate`
ããã©ã«ãã¯0ã§ãçŸåšã®è§åºŠã«å¯ŸããŠçžå¯Ÿçãªã«ã¡ã©ã®åŸãã®æ°åã§ãã
`duration`
ããã©ã«ãã¯0ã§ãã«ã¡ã©ç§»åã«ãããæéã®ç§æ°ã§ãã
`loop`
ããã©ã«ã㯠Falseã§ãTrue ãªããã®ã¢ãŒã·ã§ã³ãç¹°ãæ¿ããããŸãã
`warper`
ããã©ã«ãã¯'linear'ã§, æéè£éã«äœ¿çšããé¢æ°åã®æååã§ããã
ãã«ã¯ATLã«ç»é²ãããæéè£éé¢æ°ãæå®åºæ¥ãŸãã
`subpixel`
ããã©ã«ã㯠Trueã§ã True ãªãã1 pixel 以äžã®å€ã䜿çšããŠç»é¢
ã«æç»ããŸãã
'x_express'
ããã¯åŒåºå¯èœãªãªããžã§ã¯ãã§ãåºçŸæé軞ãšã¢ãã¡ãŒã·ã§ã³æé
軞ã®ç§æ°ãåŒæ°ã«åŒã³åºãããæ°åãè¿ããŸãããã®çµæã¯ã«ã¡ã©ã®
x座æšã«å ããããŸãã
'y_express'
ããã¯åŒåºå¯èœãªãªããžã§ã¯ãã§ãåºçŸæé軞ãšã¢ãã¡ãŒã·ã§ã³æé
軞ã®ç§æ°ãåŒæ°ã«åŒã³åºãããæ°åãè¿ããŸãããã®çµæã¯ã«ã¡ã©ã®
y座æšã«å ããããŸãã
'z_express'
ããã¯åŒåºå¯èœãªãªããžã§ã¯ãã§ãåºçŸæé軞ãšã¢ãã¡ãŒã·ã§ã³æé
軞ã®ç§æ°ãåŒæ°ã«åŒã³åºãããæ°åãè¿ããŸãããã®çµæã¯ã«ã¡ã©ã®
z座æšã«å ããããŸãã
'rotate_express'
ããã¯åŒåºå¯èœãªãªããžã§ã¯ãã§ãåºçŸæé軞ãšã¢ãã¡ãŒã·ã§ã³æé
軞ã®ç§æ°ãåŒæ°ã«åŒã³åºãããæ°åãè¿ããŸãããã®çµæã¯ã«ã¡ã©ã®
rotate座æšã«å ããããŸãã
`<layer name>_express`
ããã¯åŒåºå¯èœãªãªããžã§ã¯ãã§ãåºçŸæé軞ãšã¢ãã¡ãŒã·ã§ã³æ
é軞ã®ç§æ°ãåŒæ°ã«åŒã³åºãããæ°åãè¿ããŸãããã®çµæã¯æå®
ããã¬ã€ã€ãŒã®åº§æšã«å ããããŸãã
"""
def camera_moves(check_points, loop=False, subpixel=True, x_express=None, y_express=None, z_express=None, rotate_express=None, spline=False, **kwargs):
"""
:doc: camera
1ã€ä»¥äžã®ãã§ãã¯ãã€ã³ããéã£ãŠã«ã¡ã©ãåãããŸãã
`check_points`
ã«ã¡ã©ã®x,y,z座æšãåŸããã«ã¡ã©ã®ç§»åéå§ãããã®äœçœ®ã«å°é
ãããŸã§ã®ç§æ°ããã®éã®æéè£éé¢æ°åã®æååãããªãã¿ãã«
ã®ãªã¹ãã§ããã«ã¡ã©ã¯ããã§æå®ãããåã¿ãã«ãé çªã«ç§»åã
ãã®ã§ãã¿ãã«ã¯æç³»åã«æ²¿ã£ãŠäžŠã¹ãŠãã ããã
`loop`
ããã©ã«ã㯠Falseã§ãTrue ãªããã®ã¢ãŒã·ã§ã³ãç¹°ãæ¿ããããŸãã
`subpixel`
ããã©ã«ã㯠Trueã§ã True ãªãã1 pixel 以äžã®å€ã䜿çšããŠç»é¢
ã«æç»ããŸãã
'x_express'
ããã¯åŒåºå¯èœãªãªããžã§ã¯ãã§ãåºçŸæé軞ãšã¢ãã¡ãŒã·ã§ã³æé
軞ã®ç§æ°ãåŒæ°ã«åŒã³åºãããæ°åãè¿ããŸãããã®çµæã¯ã«ã¡ã©ã®
x座æšã«å ããããŸãã
'y_express'
ããã¯åŒåºå¯èœãªãªããžã§ã¯ãã§ãåºçŸæé軞ãšã¢ãã¡ãŒã·ã§ã³æé
軞ã®ç§æ°ãåŒæ°ã«åŒã³åºãããæ°åãè¿ããŸãããã®çµæã¯ã«ã¡ã©ã®
y座æšã«å ããããŸãã
'z_express'
ããã¯åŒåºå¯èœãªãªããžã§ã¯ãã§ãåºçŸæé軞ãšã¢ãã¡ãŒã·ã§ã³æé
軞ã®ç§æ°ãåŒæ°ã«åŒã³åºãããæ°åãè¿ããŸãããã®çµæã¯ã«ã¡ã©ã®
z座æšã«å ããããŸãã
'rotate_express'
ããã¯åŒåºå¯èœãªãªããžã§ã¯ãã§ãåºçŸæé軞ãšã¢ãã¡ãŒã·ã§ã³æé
軞ã®ç§æ°ãåŒæ°ã«åŒã³åºãããæ°åãè¿ããŸãããã®çµæã¯ã«ã¡ã©ã®
rotate座æšã«å ããããŸãã
`<layer name>_express`
ããã¯åŒåºå¯èœãªãªããžã§ã¯ãã§ãåºçŸæé軞ãšã¢ãã¡ãŒã·ã§ã³æ
é軞ã®ç§æ°ãåŒæ°ã«åŒã³åºãããæ°åãè¿ããŸãããã®çµæã¯æå®
ããã¬ã€ã€ãŒã®åº§æšã«å ããããŸãã
`spline`
ã«ã¡ã©ã®åº§æšã«å¯ŸããŠã¹ãã©ã€ã³è£éãæå¹ã«ããŸããTrue ãªãã¯ãŒããŒã¯ç¡èŠãããŸããããã¯ããã©ã«ãã§Falseã§ãã
"""
def camera_relative_move(relative_check_points, loop=False, subpixel=True, x_express=None, y_express=None, z_express=None, rotate_express=None, spline=False, **kwargs):
"""
:doc: camera
1ã€ä»¥äžã®ãã§ãã¯ãã€ã³ããéã£ãŠã«ã¡ã©ãåãããŸãã
`relative_check_points`
çŸåšå°ã«å¯Ÿããçžå¯Ÿçãªã«ã¡ã©ã®x,y,z座æšãåŸãããã³ã«ã¡ã©ã®
移åéå§ãããã®äœçœ®ã«å°éãããŸã§ã®ç§æ°ããã®éã®æéè£éé¢
æ°åã®æååãããªãã¿ãã«ã®ãªã¹ãã§ããã«ã¡ã©ã¯ããã§æå®ã
ããåã¿ãã«ãé çªã«ç§»åããã®ã§ãã¿ãã«ã¯æç³»åã«æ²¿ã£ãŠäžŠã¹
ãŠãã ããã
`loop`
ããã©ã«ã㯠Falseã§ãTrue ãªããã®ã¢ãŒã·ã§ã³ãç¹°ãæ¿ããããŸãã
`subpixel`
ããã©ã«ã㯠Trueã§ã True ãªãã1 pixel 以äžã®å€ã䜿çšããŠç»é¢
ã«æç»ããŸãã
'x_express'
ããã¯åŒåºå¯èœãªãªããžã§ã¯ãã§ãåºçŸæé軞ãšã¢ãã¡ãŒã·ã§ã³æé
軞ã®ç§æ°ãåŒæ°ã«åŒã³åºãããæ°åãè¿ããŸãããã®çµæã¯ã«ã¡ã©ã®
x座æšã«å ããããŸãã
'y_express'
ããã¯åŒåºå¯èœãªãªããžã§ã¯ãã§ãåºçŸæé軞ãšã¢ãã¡ãŒã·ã§ã³æé
軞ã®ç§æ°ãåŒæ°ã«åŒã³åºãããæ°åãè¿ããŸãããã®çµæã¯ã«ã¡ã©ã®
y座æšã«å ããããŸãã
'z_express'
ããã¯åŒåºå¯èœãªãªããžã§ã¯ãã§ãåºçŸæé軞ãšã¢ãã¡ãŒã·ã§ã³æé
軞ã®ç§æ°ãåŒæ°ã«åŒã³åºãããæ°åãè¿ããŸãããã®çµæã¯ã«ã¡ã©ã®
z座æšã«å ããããŸãã
'rotate_express'
ããã¯åŒåºå¯èœãªãªããžã§ã¯ãã§ãåºçŸæé軞ãšã¢ãã¡ãŒã·ã§ã³æé
軞ã®ç§æ°ãåŒæ°ã«åŒã³åºãããæ°åãè¿ããŸãããã®çµæã¯ã«ã¡ã©ã®
rotate座æšã«å ããããŸãã
`<layer name>_express`
ããã¯åŒåºå¯èœãªãªããžã§ã¯ãã§ãåºçŸæé軞ãšã¢ãã¡ãŒã·ã§ã³æ
é軞ã®ç§æ°ãåŒæ°ã«åŒã³åºãããæ°åãè¿ããŸãããã®çµæã¯æå®
ããã¬ã€ã€ãŒã®åº§æšã«å ããããŸãã
`spline`
ã«ã¡ã©ã®åº§æšã«å¯ŸããŠã¹ãã©ã€ã³è£éãæå¹ã«ããŸããTrue ãªãã¯ãŒããŒã¯ç¡èŠãããŸããããã¯ããã©ã«ãã§Falseã§ãã
"""
def layer_move(layer, z, duration=0, warper='linear', subpixel=True, loop=False, x_express=None, y_express=None, z_express=None, rotate_express=None, layer_express=None):
"""
:doc: camera
3Dã¬ã€ã€ãŒã®z座æšãæå®ã®æéãããŠå€æŽããŸãã
`layer`
移åããã¬ã€ã€ãŒåã®æååã§ãã
`z`
ã¬ã€ã€ãŒã®z座æšã®æ°åã§ãã
`duration`
ããã©ã«ãã¯0ã§ãã¬ã€ã€ãŒç§»åã«ãããæéã®ç§æ°ã§ãã
`warper`
ããã©ã«ãã¯'linear'ã§, æéè£éã«äœ¿çšããé¢æ°åã®æååã§ããã
ãã«ã¯ATLã«ç»é²ãããæéè£éé¢æ°ãæå®åºæ¥ãŸãã
`subpixel`
ããã©ã«ã㯠Trueã§ã True ãªãã1 pixel 以äžã®å€ã䜿çšããŠç»é¢
ã«æç»ããŸãã
`loop`
ããã©ã«ã㯠Falseã§ãTrue ãªããã®ã¢ãŒã·ã§ã³ãç¹°ãæ¿ããããŸãã
`layer_express`
ããã¯åŒåºå¯èœãªãªããžã§ã¯ãã§ãåºçŸæé軞ãšã¢ãã¡ãŒã·ã§ã³æ
é軞ã®ç§æ°ãåŒæ°ã«åŒã³åºãããæ°åãè¿ããŸãããã®çµæã¯ã¬ã€
ã€ãŒã®åº§æšã«å ããããŸãã
'x_express'
ããã¯åŒåºå¯èœãªãªããžã§ã¯ãã§ãåºçŸæé軞ãšã¢ãã¡ãŒã·ã§ã³æé
軞ã®ç§æ°ãåŒæ°ã«åŒã³åºãããæ°åãè¿ããŸãããã®çµæã¯ã«ã¡ã©ã®
x座æšã«å ããããŸãã
'y_express'
ããã¯åŒåºå¯èœãªãªããžã§ã¯ãã§ãåºçŸæé軞ãšã¢ãã¡ãŒã·ã§ã³æé
軞ã®ç§æ°ãåŒæ°ã«åŒã³åºãããæ°åãè¿ããŸãããã®çµæã¯ã«ã¡ã©ã®
y座æšã«å ããããŸãã
'z_express'
ããã¯åŒåºå¯èœãªãªããžã§ã¯ãã§ãåºçŸæé軞ãšã¢ãã¡ãŒã·ã§ã³æé
軞ã®ç§æ°ãåŒæ°ã«åŒã³åºãããæ°åãè¿ããŸãããã®çµæã¯ã«ã¡ã©ã®
z座æšã«å ããããŸãã
'rotate_express'
ããã¯åŒåºå¯èœãªãªããžã§ã¯ãã§ãåºçŸæé軞ãšã¢ãã¡ãŒã·ã§ã³æé
軞ã®ç§æ°ãåŒæ°ã«åŒã³åºãããæ°åãè¿ããŸãããã®çµæã¯ã«ã¡ã©ã®
rotate座æšã«å ããããŸãã
`<layer name>_express`
ããã¯åŒåºå¯èœãªãªããžã§ã¯ãã§ãåºçŸæé軞ãšã¢ãã¡ãŒã·ã§ã³æ
é軞ã®ç§æ°ãåŒæ°ã«åŒã³åºãããæ°åãè¿ããŸãããã®çµæã¯æå®
ããã¬ã€ã€ãŒã®åº§æšã«å ããããŸãã
`spline`
ã¬ã€ã€ãŒã®åº§æšã«å¯ŸããŠã¹ãã©ã€ã³è£éãæå¹ã«ããŸããTrue ãªãã¯ãŒããŒã¯ç¡èŠãããŸããããã¯ããã©ã«ãã§Falseã§ãã
"""
def layer_moves(layer, check_points, loop=False, subpixel=True, x_express=None, y_express=None, z_express=None, rotate_express=None, layer_express=None, spline=False):
"""
:doc: camera
1ã€ä»¥äžã®ãã§ãã¯ãã€ã³ããéã£ãŠ3Dã¬ã€ã€ãŒãåãããŸãã
`layer`
移åããã¬ã€ã€ãŒåã®æååã§ãã
`check_points`
ã¬ã€ã€ãŒã®z座æšã®æ°åãã¬ã€ã€ãŒã®ç§»åéå§ãããã®äœçœ®ã«å°éãããŸã§ã®
ç§æ°ã®æ°åããã®éã®æéè£éé¢æ°ã®æååãããªãã¿ãã«ã®listã§ãã
ã¬ã€ã€ãŒã¯ããã§æå®ãããåã¿ãã«ãé çªã«ç§»åããã®ã§ãã¿ãã«
ã¯æç³»åã«æ²¿ã£ãŠäžŠã¹ãŠãã ããã
`loop`
ããã©ã«ã㯠Falseã§ãTrue ãªããã®ã¢ãŒã·ã§ã³ãç¹°ãæ¿ããããŸãã
`subpixel`
ããã©ã«ã㯠Trueã§ã True ãªãã1 pixel 以äžã®å€ã䜿çšããŠç»é¢
ã«æç»ããŸãã
`layer_express`
ããã¯åŒåºå¯èœãªãªããžã§ã¯ãã§ãåºçŸæé軞ãšã¢ãã¡ãŒã·ã§ã³æ
é軞ã®ç§æ°ãåŒæ°ã«åŒã³åºãããæ°åãè¿ããŸãããã®çµæã¯ã¬ã€
ã€ãŒã®åº§æšã«å ããããŸãã
'x_express'
ããã¯åŒåºå¯èœãªãªããžã§ã¯ãã§ãåºçŸæé軞ãšã¢ãã¡ãŒã·ã§ã³æé
軞ã®ç§æ°ãåŒæ°ã«åŒã³åºãããæ°åãè¿ããŸãããã®çµæã¯ã«ã¡ã©ã®
x座æšã«å ããããŸãã
'y_express'
ããã¯åŒåºå¯èœãªãªããžã§ã¯ãã§ãåºçŸæé軞ãšã¢ãã¡ãŒã·ã§ã³æé
軞ã®ç§æ°ãåŒæ°ã«åŒã³åºãããæ°åãè¿ããŸãããã®çµæã¯ã«ã¡ã©ã®
y座æšã«å ããããŸãã
'z_express'
ããã¯åŒåºå¯èœãªãªããžã§ã¯ãã§ãåºçŸæé軞ãšã¢ãã¡ãŒã·ã§ã³æé
軞ã®ç§æ°ãåŒæ°ã«åŒã³åºãããæ°åãè¿ããŸãããã®çµæã¯ã«ã¡ã©ã®
z座æšã«å ããããŸãã
'rotate_express'
ããã¯åŒåºå¯èœãªãªããžã§ã¯ãã§ãåºçŸæé軞ãšã¢ãã¡ãŒã·ã§ã³æé
軞ã®ç§æ°ãåŒæ°ã«åŒã³åºãããæ°åãè¿ããŸãããã®çµæã¯ã«ã¡ã©ã®
rotate座æšã«å ããããŸãã
`spline`
ã¬ã€ã€ãŒã®åº§æšã«å¯ŸããŠã¹ãã©ã€ã³è£éãæå¹ã«ããŸããTrue ãªãã¯ãŒããŒã¯ç¡èŠãããŸããããã¯ããã©ã«ãã§Falseã§ãã
"""
def dof_set(dof, duration=0, warper='linear', **kwargs):
"""
:doc: camera
被åç深床ãèšå®ããŸãã
`dof`
`dof` ã¯layerã«ãã©ãŒãããããªãzå€ã®ç¯å²ã§ãããã©ã«ãã§9999999ã§ã
`duration`
dof ã®å€åãå®äºããã®ã«ãããç§æ°ã§ããæéãæå®ããªãããã°ã
ç¬æã«å€åããŸãã
`warper`
\'ease\' ã®ãããªç»é²ããã ATL warper ãæååã§ãã
æå®ãããªããã°ããã©ã«ã㧠\'linear\' ã§ãã
"""
def all_moves(camera_check_points=None, layer_check_points=None, subpixel=True, play=True, x_loop=False, y_loop=False, z_loop=False, rotate_loop=False, x_express=None, y_express=None, z_express=None, rotate_express=None, camera_spline=False, **kwargs):
"""
:doc: camera
1ã€ä»¥äžã®ãã§ãã¯ãã€ã³ããéã£ãŠã«ã¡ã©ãš3Dã¬ã€ã€ãŒãåæã«åãããŸãã
`camera_check_points`
ã«ã¡ã©ã®åãã©ã¡ãŒã¿ãŒåã®æååãããŒãšãããã®å€ããã®å€ã«
ãªããŸã§ã®ç§æ°ããã®éã®æéè£éé¢æ°åã®æååãããªãã¿ãã«
ã®ãªã¹ããå€ã«æã€èŸæžã§ããã«ã¡ã©ã¯ããã§æå®ãããåã¿ãã«
ãé çªã«ç§»åããã®ã§ãã¿ãã«ã¯æç³»åã«æ²¿ã£ãŠäžŠã¹ãŠãã ããã
{
'x':[(x, duration, warper)...],
'y':[(y, duration, warper)...],
'z':[(z, duration, warper)...],
'rotate':[(rotate, duration, warper)...],
}
`layer_check_points`
移åããã¬ã€ã€ãŒåã®æååãããŒãšããã¬ã€ã€ãŒã®z座æšã®æ°åãã¬
ã€ã€ãŒã®ç§»åéå§ãããã®äœçœ®ã«å°éãããŸã§ã®ç§æ°ã®æ°åããã®é
ã®æéè£éé¢æ°ã®æååãããªãã¿ãã«ã®ãªã¹ããå€ã«æã€èŸæžã§
ããã¬ã€ã€ãŒã¯ããã§æå®ãããåã¿ãã«ãé çªã«ç§»åããã®ã§ãã¿
ãã«ã¯æç³»åã«æ²¿ã£ãŠäžŠã¹ãŠãã ããã
`focus_check_points`
被åç深床ãšãã©ãŒã«ã¹äœçœ®ã®èŸæžã§ããã®å€ããã®å€ã«ãªããŸã§ã®
ç§ãã®éã®æéè£éé¢æ°åã®æååãããªãã¿ãã«ã®ãªã¹ããå€ãšããŸãã
{
'focus':[(z, duration, warper)...]
'dof':[(dof, duration, warper)...]
}
`dof` ã¯ã¬ã€ã€ãŒã«ãã©ãŒã®æããªããã©ãŒã«ã¹äœçœ®ããã®Zå€ã®ç¯å²ã§ã
ããã©ã«ãã§ã¯9999999ã§ãã
`focus` ã®å€ã«ã«ã¡ã©ã®Z座æšã足ãããã®ãã«ã¡ã©ã®ãã©ãŒã«ã¹äœçœ®ãšãªããŸãã
`x_loop`
ããã©ã«ã㯠Falseã§ãTrue ãªãã«ã¡ã©ã®ã¢ãŒã·ã§ã³ãç¹°ãæ¿ããããŸãã
`y_loop`
ããã©ã«ã㯠Falseã§ãTrue ãªãã«ã¡ã©ã®ã¢ãŒã·ã§ã³ãç¹°ãæ¿ããããŸãã
`z_loop`
ããã©ã«ã㯠Falseã§ãTrue ãªãã«ã¡ã©ã®ã¢ãŒã·ã§ã³ãç¹°ãæ¿ããããŸãã
`rotate_loop`
ããã©ã«ã㯠Falseã§ãTrue ãªãã«ã¡ã©ã®ã¢ãŒã·ã§ã³ãç¹°ãæ¿ããããŸãã
`subpixel`
ããã©ã«ã㯠Trueã§ã True ãªãã1 pixel 以äžã®å€ã䜿çšããŠç»é¢
ã«æç»ããŸãã
'x_express'
ããã¯åŒåºå¯èœãªãªããžã§ã¯ãã§ãåºçŸæé軞ãšã¢ãã¡ãŒã·ã§ã³æé
軞ã®ç§æ°ãåŒæ°ã«åŒã³åºãããæ°åãè¿ããŸãããã®çµæã¯ã«ã¡ã©ã®
x座æšã«å ããããŸãã
'y_express'
ããã¯åŒåºå¯èœãªãªããžã§ã¯ãã§ãåºçŸæé軞ãšã¢ãã¡ãŒã·ã§ã³æé
軞ã®ç§æ°ãåŒæ°ã«åŒã³åºãããæ°åãè¿ããŸãããã®çµæã¯ã«ã¡ã©ã®
y座æšã«å ããããŸãã
'z_express'
ããã¯åŒåºå¯èœãªãªããžã§ã¯ãã§ãåºçŸæé軞ãšã¢ãã¡ãŒã·ã§ã³æé
軞ã®ç§æ°ãåŒæ°ã«åŒã³åºãããæ°åãè¿ããŸãããã®çµæã¯ã«ã¡ã©ã®
z座æšã«å ããããŸãã
'rotate_express'
ããã¯åŒåºå¯èœãªãªããžã§ã¯ãã§ãåºçŸæé軞ãšã¢ãã¡ãŒã·ã§ã³æé
軞ã®ç§æ°ãåŒæ°ã«åŒã³åºãããæ°åãè¿ããŸãããã®çµæã¯ã«ã¡ã©ã®
rotate座æšã«å ããããŸãã
`<layer name>_express`
ããã¯åŒåºå¯èœãªãªããžã§ã¯ãã§ãåºçŸæé軞ãšã¢ãã¡ãŒã·ã§ã³æ
é軞ã®ç§æ°ãåŒæ°ã«åŒã³åºãããæ°åãè¿ããŸãããã®çµæã¯æå®
ããã¬ã€ã€ãŒã®åº§æšã«å ããããŸãã
`camera_spline`
ã«ã¡ã©ã®åº§æšã«å¯ŸããŠã¹ãã©ã€ã³è£éãæå¹ã«ããŸããTrue ãªãã¯ãŒããŒã¯ç¡èŠãããŸããããã¯ããã©ã«ãã§Falseã§ãã
`spline`
ã¬ã€ã€ãŒã®åº§æšã«å¯ŸããŠã¹ãã©ã€ã³è£éãæå¹ã«ããŸããTrue ãªãã¯ãŒããŒã¯ç¡èŠãããŸããããã¯ããã©ã«ãã§Falseã§ãã
ããŒã¯ãŒãåŒæ°ãšã㊠<ã¬ã€ã€ãŒå>_loop ããšããŸããããã©ã«ã㯠Falseã§ãTrue ãªããã®ã¬ã€ã€ãŒã®ã¢ãŒã·ã§ã³ãç¹°ãæ¿ããããŸãã
"""