变换特性 link
变换特性(transform property)可以被 变换 使用,影响可视组件的绘制。
变换特性常用于 ATL 和 Transform
类中。
transform特性列表 link
transform存在以下特性(property)。
当给定的数据类型当作一个坐标 position 时,其可能是一个整型、 absolute 类型或者浮点型。
如果是一个浮点型,其可以用作某块区域(用作坐标 pos
)或者可视组件(用作锚点 anchor
)的比例值。
需要注意的是,并非所有特性都是完全独立的。例如, xalign
和 xpos
都会更新同一批底层数据。
在parallel语句中,对相同的数据,最多只允许一个语句块进行调整。
(这些可能都是在同一个语句块中。)angle和radius特性同时设置水平和垂直坐标。
坐标 link
- pos link
- Type:
(position, position)
- Default:
(0, 0)
相对坐标,以整个区域左上角为原点。
- xpos link
- Type:
position
- Default:
0
水平坐标,以整个区域的最左端为坐标零点。
- ypos link
- Type:
position
- Default:
0
垂直坐标,以整个区域的最上端为坐标零点。
- anchor link
- Type:
(position, position)
- Default:
(0, 0)
锚点坐标,以可视组件左上角为原点。
- xanchor link
- Type:
position
- Default:
0
锚点的水平坐标,以可视组件最左端为坐标零点。
- yanchor link
- Type:
position
- Default:
0
锚点的垂直位置,以可视组件最上端为坐标零点。
- align link
- Type:
(float, float)
- Default:
(0.0, 0.0)
将pos和anchor设置为相同的值。
- xalign link
- Type:
float
- Default:
0.0
将xpos和xanchor设置为相同的值。
- yalign link
- Type:
float
- Default:
0.0
将ypos和yanchor设置为相同的值。
- offset link
- Type:
(absolute, absolute)
- Default:
(0, 0)
可视组件在两个方向偏离的像素数。向右和向下偏离时是正数。
- xoffset link
- Type:
absolute
- Default:
0
可视组件在水平方向偏离的像素数。向右偏离时是正数。
- yoffset link
- Type:
absolute
- Default:
0
可视组件在垂直方向偏离的像素数。向下偏离时是正数。
- xycenter link
- Type:
(position, position)
- Default:
(0.0, 0.0)
等效于将pos的值设置为该特性的值,并同时将archor设置为(0.5, 0.5)。
- xcenter link
- Type:
position
- Default:
0.0
等效于将pos的值设置为该特性的值,并同时将xanchor设置为0.5。
- ycenter link
- Type:
position
- Default:
0.0
等效于将pos的值设置为该特性的值,并同时将yanchor设置为0.5。
- subpixel link
- Type:
boolean
- Default:
False
若为True,子组件将根据子像素(subpixel)确定位置。
子像素位置还影响写入最终像素的颜色(包括不透明度),但具体写入哪个像素依然是不变的。 如果子像素位置还会发生移动(很常见的情况),移动方向上的即将进入的界面图像应该包含带透明度混合的边界。
例如,某个角色立绘在水平方向移动,最好在左右两侧设置半透明的边界。 对于实际大小超过整个可视区域的背景图就没必要使用该特性,反正边界部分是看不到的。
(译者注:subpixel往往跟MSAA相关。具体内容请借助搜索引擎学习。)
旋转 link
- rotate link
- Type:
float or None
- Default:
None
若值为None,不会进行旋转。否则,图像会按指定的角度顺时针旋转。 根据下面会提到的rotate_pad的配置值,旋转可视组件会导致组件尺寸改变。 xanchor和yanchor不为0.5的情况下,旋转整个可视组件会让组件相对整个界面的坐标发生变化。
- rotate_pad link
- Type:
boolean
- Default:
True
若该值为True,一个可以旋转的可视组件就会使用原本的宽度和高度填充旋转矩形,并确保旋转时不会改变组件的尺寸。 若该值为False,transform会给定某个能应用于可视组件的最小尺寸,更适合用于自动匹配的旋转。
- transform_anchor link
- Type:
boolean
- Default:
False
- 若该值为True,锚点会定位在关联的子组件上,当子组件发生变换时拉伸并旋转。
实际效果是,当子组件拉伸或旋转时,这项值可以指定子组件以指定的锚点拉伸或旋转。
缩放与翻转 link
- zoom link
- Type:
float
- Default:
1.0
该值根据系数对可视组件进行缩放。
- xzoom link
- Type:
float
- Default:
1.0
该值根据系数对可视组件在水平方向进行缩放。负值可以让图像水平翻转(即与原图像互为左右镜像)。
- yzoom link
- Type:
float
- Default:
1.0
该值根据系数对可视组件在垂直方向进行缩放。负值可以让图像垂直翻转(即与原图像互为上下镜像)。
像素效果 link
- nearest link
- Type:
boolean
- Default:
None
若该值为True,可视组件及其子组件会使用近邻取样(nearest-neighbor)过滤绘制。 若该值为False,可视组件及其子组件使用双线性(bilinear)过滤绘制。 若该值为None,绘制方式从父组件继承,或者采用
config.nearest_neighbor
配置(默认值是False)。
- alpha link
- Type:
float
- Default:
1.0
该值控制可视组件的不透明度。
alpha变换(transform)会分别作用于每个图像所包含的子组件。 在子组件存在重叠部门的情况,这可能会导致一些不期望出现的结果,比如透过衣服看到角色之类的。
Flatten()
类可视组件可以解决这些问题。
- additive link
- Type:
float
- Default:
0.0
该值控制Ren’Py加性混合后的表现效果。该值为1.0时,Ren’Py使用ADD操作器(operator)绘制;该值为0.0时,Ren’Py使用OVER操作器(operator)绘制。
加性混合会分别作用于transform的每一个子组件。
完全的加性混合不会改变目标图像的alpha通道值,并且添加上去的图像可能不是可见的, 前提是那些图像没有直接绘制在某个不透明的表面上。 (某些复杂的操作,像
Flatten()
,Frame()
和某些转场,使用加性混合可能会出现问题。)
- matrixcolor link
- Type:
None 或 矩阵 或 MatrixColor对象
- Default:
None
若非None,该特性值将应用到所有子组件并重新计算颜色。只有使用MatrixColor并且满足结构性相似的前提下,才能进行插值计算。 详见 Matrixcolor 。
- blur link
- Type:
None 或 float
- Default:
None
使用 blur 像素数模糊图像的子组件, blur 数值不超过可视组件的边长。 Ren’Py不同版本的模糊细节可能存在差异。模糊的结果可能存在瑕疵,尤其是模糊数值不断发生修改的情况下。
极坐标 link
- around link
- Type:
(position, position)
- Default:
(0.0, 0.0)
该特性指定了一个起点坐标,以整个区域左上角做原点。(根据
angle
和radius
计算出的)极向量范围内的区域将被绘制。 以上两者共同决定了pos
的值。
- angle link
- Type:
float
该特性给出极坐标系下某个坐标的角度信息。角度的单位是度(degree),0度时在屏幕正上方,90度时在屏幕右方。
Ren’Py会将角度的值控制在0到360度的区间内,有0度不包含360度。 当数值超过这个区间范围时,Ren’Py使用前会处理成等效角度。(角度值设置为-10度,等效于将角度设置为350度。)
- radius link
- Type:
position
极坐标系下坐标的半径。
如果值是浮点数,会被自动缩小到刚好能适用于宽度和高度的某个值。
极坐标系的锚点 link
Note
使用极坐标系时同时也启用了锚点。通常最简单的处理就是将 anchor
设置为(0.5, 0.5),即可视组件的中心。
- anchoraround link
- Type:
(position, position)
该特性指定了一个起点坐标,以整个区域左上角做原点。(根据
anchorangle
和anchorradius
计算出的)极向量范围内的区域将被绘制。 以上两者共同决定了anchor
的值。
- anchorangle link
- Type:
(float)
极坐标系下锚点坐标的角度。角度的单位是度(degree),0度表示正上方,90度表示右方。
Ren’Py会将角度的值控制在0到360度的区间内,有0度不包含360度。 当数值超过这个区间范围时,Ren’Py使用前会处理成等效角度。(角度值设置为-10度,等效于将角度设置为350度。)
- anchorradius link
- Type:
(position)
极坐标系下锚点坐标的半径。 若该值是浮点数,将乘以可视组件的宽和高,计算得到结果。如果可视组件的高和宽不相等,计算结果不是absolute类型,最终会沿椭圆旋转。 因此,推荐将该特性设置为
int
或absolute
类型的值。
剪裁与重新调整尺寸 link
- crop link
- Type:
None 或 (position, position, position, position)
- Default:
None
若该值非None,会使用给定的矩形剪裁可视组件。指定的矩形是一个(x, y, width, height)形式的元组。
如果各种corner特性与crop特性同时出现,crop的优先级高于各种corner特性。
- corner1 link
- Type:
None 或 (position, position)
- Default:
None
若该值非None,指定剪裁框的左上角坐标。剪裁时优先使用各corner特性值。 若crop_relative为启用状态,且该值为浮点型与子组件的尺寸相关。
- corner2 link
- Type:
None 或 (position, position)
- Default:
None
若该值非None,指定剪裁框的右下角坐标。剪裁时优先使用各corner特性值。 若crop_relative为启用状态,且该值为浮点型与子组件的尺寸相关。
- xysize link
- Type:
None 或 (position, position)
- Default:
None
若该值非None,将可视组件伸缩至给定的尺寸。等效于,将入参元组的第一元素赋值给
xsize
,将入参元祖的第二元素赋值给ysize
。该值受到
fit
影响。
- fit link
- Type:
None 或 string
- Default:
None
若该值非None,会按下面表格的方式调整尺寸。表格中的“维度”分别为:
若fit、xsize和ysize都是None,则该特性不生效。
值
描述
contain
在不超过任何维度尺寸的原则下近可能大。保持宽高比。
cover
在不超过任何维持尺寸的原则下尽可能小。保持宽高比。
None 或
fill
将可视组件拉伸/挤压,以匹配各维度指定大小。
scale-down
类似
contain
,但不会增加可视组件的尺寸。scale-up
类似
cover
,但不会增加可视组件的尺寸。
全景图和平铺 link
- xpan link
- Type:
None 或 float
- Default:
None
若该值非None,其被看作某个360度全景图中的经度。图像中央是0度,图像左端和右端分别是-180度和180度。
- ypan link
- Type:
None 或 float
- Default:
None
若该值非None,其被看作某个360度全景图中的纬度。图像中央是0度,图像顶部和底部分别是-180度和180度。
- xtile link
- Type:
int
- Default:
1
图像水平方向使用图像平铺的次数。
- ytile link
- Type:
int
- Default:
1
图像垂直方向使用图像平铺的次数。
转场 link
详见 ATL转场 。
- delay link
- Type:
float
- Default:
0.0
如果该变换(transform)用作转场(transition),这个值定义了转场时间。
- events link
- Type:
boolean
- Default:
True
若该值为True,事件消息会传给该变换(transform)的子组件。若该值为False,事件消息会被屏蔽。 (这个机制可以用在ATL变换中,放置事件消息达到某些old_widget。)
其他 link
- fps link
- Type:
float or None
- Default:
None
若非None,该特性会更该其所在变换的最小时间颗粒。 例如某个变换的fps为10,那么变换的时间最小值至少为0.1秒。 该特性可以用于模拟低刷新率。
- show_cancels_hide link
- Type:
boolean
- Default:
True
通常,某个同名或带同名标签(tag)的可视组件或界面,从隐藏状态转为显示状态时,将移除组件或界面的隐藏属性,变换中hide部分的效果将取消。 如果该特性为False,则不会中断和取消hide变换,而是会将hide变换的效果处理完。
此外,其他几组变换特性可以在文档其他地方找到:
- 3D舞台特性:
perspective
、point_to
、orientation
、xrotate
、yrotate
、zrotate
、matrixanchor
、matrixtransform
、zpos
、zzoom
- 基于模型渲染特性:
- GL特性:
- uniforms:
以
u_
开头的特性可以用于 自定义着色器 中的uniform变量。
特性生效顺序 link
这些特性按照以下顺序生效:
fps
mesh, blur
tile
pan
crop, corner1, corner2
xysize, size, maxsize
zoom, xzoom, yzoom
point_to
orientation
xrotate, yrotate, zrotate
rotate
zpos
matrixtransform, matrixanchor
zzoom
perspective
nearest, blend, alpha, additive, shader
matrixcolor
GL Properties, Uniforms
position properties
show_cancels_hide
过期的变换特性 link
Warning
下列特性不应再使用近期开发的游戏中,可能会与其他功能特性发生冲突。 暂时保留这些特性是考虑到兼容性。
- alignaround link
- Type:
(float, float)
将
anchor
、around
和anchoraround
设置为相同的值。
- crop_relative link
- Type:
boolean
- Default:
True
若为False,
crop
的值将作为像素数的值,而不再是原图像的宽度或高度的比例。如果计算结果是某个绝对数值像素数,应该将
absolute()
实例应用到crop
特性,而不使用crop_relative特性。 必要时,不确定类型的数值可以传给absolute()
函数处理。