變換特性 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()
函數處理。