场景

Pixor 把你的模型显示为一个场景:带有部件和骨架的模型、生成精灵表的摄像机,以及灯光。你可以在 3D 中四处查看,把任意视图切换为像素画,并查看像素画管线每个阶段的内部。

四个步骤,以及顶部的工作区

四个步骤是从模型到完成的精灵表所经历的阶段,从左到右依次为:场景、动作、风格和资产。按键 1 到 4(或 Ctrl+1 到 Ctrl+4)在它们之间切换。像素画首先出现在风格步骤,而精灵从资产步骤才开始存在:运动先在 3D 中确定。

每个步骤是一项不同的工作,右侧的检查器只显示该工作的设置:

级 它的用途 检查器中的内容
场景 组建场景:模型、你添加的形状、物体的位置、摄像机、灯光 当前所选的任何内容
动作 制作动作:由节点(片段、旋转、手动设置的关键帧)组成的节点图,在 3D 中流畅播放 所选动作的运动方式:根运动、站定的脚、幅度、关键帧片段的时间
风格 决定像素如何生成 预设、颜色、材质、线条、明暗、清理,以及以节点表示的外观
资产 把每个动作切分成精灵帧,以及精灵表和它们写出的文件 资产节点图中所选的节点:每秒帧数或选定帧、帧范围、停留、布局、文件、变体

顶部的标签页是工作区,而且由你掌控。工作区由名称、它所作用的步骤(场景、动作、风格或资产)以及它自己的面板布局组成。Pixor 一开始为每个步骤各提供一个。右键点击标签页,就能像处理面板一样处理它:复制、重命名、向左或向右移动、删除(删除 NAME,立即生效),或新建任意步骤的工作区(新建风格工作区…),或一个新建自定义工作区:一个空白区域,可以随意拆分和填充;标签栏末尾的 + 也能添加一个,沿标签栏拖动标签页可以调整顺序。两个风格工作区——一个让节点图高高地立在精灵旁边,一个用于调颜色——就是两个标签页,各自记住自己的面板。在另一个标签页的菜单中选择并排显示会拆分窗口:当前工作区在左,那个在右,各自有自己的步骤和面板——比如风格节点图旁边放着资产节点图。在它的菜单中选择停止并排显示即可恢复。

每个面板属于一个步骤。你所在工作区的步骤决定有哪些面板,面板菜单(此工作区中的面板)只提供与该步骤相关的面板:

级 它的面板
场景 大纲、3D 视图、场景节点图、检查器、历史记录
动作 大纲、动作、3D 视图、时间轴、动作节点图、片段编辑器、检查器、历史记录
风格 风格、2D 视图、风格节点图、检查器、历史记录
资产 资产、2D 视图、资产节点图、时间轴、检查器、历史记录

面板菜单中还有 重置面板,可将当前显示的工作区恢复为该步骤的默认布局;以及 保存工作区…和 使用工作区…:一个 .pixorlayout 文件保存一个完整的工作区——它的名称、步骤和面板——使用工作区…会将其作为一个独立的工作区添加到当前工作区旁边。工作区文件(以及 --ui-test 脚本)用面板标题的小写形式来指代面板,单词之间用连字符连接:outliner、3d-view、2d-view、scene-graph、style-graph、asset-graph、clip-editor、empty-area。

窗口标题栏包含项目菜单(新建项目(Ctrl+N)、打开项目…(Ctrl+O)、保存项目(Ctrl+S)、项目另存为…、另存为蓝图…、复制场景、最近的项目和退出(Ctrl+Q))、导入…(Ctrl+I)——它接受 Pixor 可读取的所有格式——紧随其后的是左侧的导出(Ctrl+E)、中间的项目名称,以及右侧的撤销、重做、历史记录和面板菜单,然后是界面大小、偏好设置和帮助。界面支持十种语言——英语、法语、西班牙语、德语、巴西葡萄牙语、意大利语、俄语、简体中文、日语和韩语:起初使用系统语言,也可以在偏好设置 › 语言中换成其他语言。Pixor 写出的文件、你所创建内容的名称以及命令行保持不变。它下方的工作区标签栏右端是播放/暂停和所有步骤共用的四个选择框(有多个场景时,它们前面还有一个场景选择框)——摄像机、动作、风格和资产,各自显示图标和当前选择。动作、风格和资产是相互独立的管线;前两者以标题栏的选择作为输入——动作步骤播放所选摄像机看到的所选动作,风格步骤用所选风格来绘制它。资产步骤不跟随它们:资产节点图的「精灵」节点各自指定自己的摄像机、动作、风格、部件组和切分方式,而导出窗口初始使用资产选择框所选的资产管线(见资产节点图和导出窗口)。

项目名称显示在标题栏中间和窗口标题中:新项目为未命名项目——无论是空白创建、从导入的模型、示例、蓝图还是首次运行界面创建——之后则是你为它取的名字。保存后,括号中会跟上它所在的文件,如 Crown jewels (crowns.pixor);导入其中的模型从不在此显示。点击名称即可重命名项目:它会变成一个选中了名称的输入框,按 Enter 或点击别处保留输入内容,按 Escape 恢复原名,空名称会被拒绝。一次重命名是历史记录中的一步,也算一处未保存的修改。项目另存为…会建议以项目命名的文件;保存会保留名称,重命名也从不会重命名文件。脚本用 pxr project set P --name NAME 设置它。

未保存的修改在丢失之前会先询问。关闭窗口(关闭按钮、退出或 Ctrl+Q),以及任何会用另一个项目替换当前项目的操作——新建项目、打开项目…、最近的项目、拖到窗口上的文件或在 Pixor 运行时从文件管理器打开的文件、素材库中的条目、首次运行界面上的选择——都会先询问保存对 NAME 的修改?:保存(Enter)、不保存或取消(Escape)。对从未保存过的项目选择保存时会先询问保存位置,只有保存成功才会继续;保存失败时项目保持打开,并显示错误。「不保存」也会丢弃自动保存,因此下次不会再提供这些修改。未保存指与上次保存或打开时不同(标题栏中间的名称以 * 结尾):刚导入的模型、保持原样的示例或蓝图项目不会询问,因为它们可以再次生成;从自动保存中恢复的项目从未被保存过,在保存之前会一直询问。

窗口中间是一个视图,仅仅是一个视图。场景和动作步骤使用3D 视图。风格和资产步骤使用2D 视图,显示该步骤节点图中所选节点生成的内容:

  • 在风格步骤中,显示所选节点输出的图像——如果选中的是「输出」节点或什么都没选,则显示完成的精灵及其工具(网格、洋葱皮、光照预览);
  • 在资产步骤中,显示「精灵」「帧范围」或「停留」节点输出的精灵列表,按将要写出的方式播放、切分、切片和分层;中间节点输出的内容;输出节点将要写出的文件(PNG、播放中的动画、以文本显示的 JSON);或「精灵表」节点生成的精灵表(什么都没选时则是整张精灵表)。上方的图层选择绘制精灵表的哪个图层,或选择全部,叠放:按引擎的叠放方式叠放精灵表的各个图层,每个图层都有开关,可以实时显示,也可以从导出的文件中读回。列表选择显示哪个精灵列表,精灵表来源选择所选「精灵」节点渲染内容中的哪台摄像机(哪个朝向)。

没有精灵表、图层或精灵列表面板:精灵列表是资产节点图的输入节点,其余功能则都是 2D 视图中的查看方式。

2D 视图显示的一切都以同一种方式移动——精灵、旁边保留的渲染、看板、节点的预览图、CRT 屏幕、精灵表、叠放的图层、写出的图像、JSON 或其他任何文本:

操作 到
滚轮(或双指缩放) 围绕指针缩放,每级步长与 3D 视图和节点图中相同
按住鼠标中键拖动(或 Alt 加左键) 移动它
主页 重新适配:能容纳它的最大整数缩放(文字则按实际大小)
精灵栏上的 - 和 + 缩小或放大一级

一开始每张图像都会适应视图大小显示。缩放比例以百分比显示在右下角(精灵的缩放在精灵的工具条上)。在整数倍之间,像素画依然是像素画:每个像素都以整数个屏幕像素绘制,相邻两个像素最多相差一个屏幕像素。文字则缩放其字母。

每个步骤的工作区一开始都是同样的布局:左侧是它的列表,中间是它的视图,右侧是检查器,底部是它的节点图——

级 左 中间 右 底部
场景 大纲,占满整个高度 3D 视图 检查器,占满整个高度 场景节点图,仅位于 3D 视图下方
动作 动作 3D 视图,正在播放动作 检查器 动作节点图,占满整个宽度(时间轴和片段编辑器在其后面)
风格 风格(每个风格) 2D 视图 检查器 风格节点图,占满整个宽度(与所有节点图一样,节点库在左侧)
资产 资产(每条资产管线) 2D 视图 检查器 资产节点图,占满整个宽度(后面有一个时间轴;每项导出设置都在它的某个节点上)

在列表中点击,就会在该步骤的节点图和 2D 视图中显示那个风格或资产管线——与标题栏中同类选择框的选择相同,状态栏也会说明(正在显示资产管线 icons)。列表下方的按钮——新建风格、新建资产管线——会复制当前显示的那个,并以它命名(Pixel Art 2、Main 2);每一行的右键菜单可以重命名、复制、删除它(删除 NAME…,会先询问:只要还剩另一个,任何一个都能删,包括第一个),保存套件…和使用套件…则以套件形式分享它。上下拖动行可以调整列表顺序(每次拖动为一步撤销)。

检查器在四个步骤中都有,显示该步骤的当前对象;历史记录在任何步骤中都能打开。其余面板都位于各自工作所在的地方:大纲列出 3D 场景中的内容,所以它出现在场景和动作步骤中(用于选择要移动的对象);资产节点图负责写出文件,所以它只出现在资产步骤中。历史记录是检查器后面的一个标签页。

拖动面板的标签页即可移动面板:拖到另一个区域的标题栏上,与其标签页合并;拖到区域中央,效果相同;拖到靠近区域边缘处,则拆分该区域——也可以拖进不属于该面板所在步骤的工作区,只要你喜欢这样工作。右键单击标题栏(或点击其右端的箭头)打开区域菜单:拆分区域、关闭面板、在此添加另一个面板。面板没有关闭按钮;面板菜单可以找回关闭的面板。标题栏左侧的图标表示区域的类型(每个节点图面板显示其步骤的图标;时间轴是标尺,动作列表是动作图标,片段编辑器是关键帧图标),与 Blender 一样:点击它并选择该步骤的其他面板,区域就会改为显示那个面板(如果该面板已在别处显示,两者会互换位置)。面板始终跟随窗口:调整窗口大小时,每个区域随之放大或缩小,不会有区域被折叠。面板菜单中的重置面板会把工作区恢复为该步骤的默认布局。

  • 大纲(场景和动作步骤,左侧):以树形显示场景中的所有内容。点击一行即可选中,Ctrl+点击或 Shift+点击可选中多个(见选择多个);它的 + 用于向场景添加内容。它添加的东西——另一个模型(物品)、骨骼上的道具、形状、图像、文字、体积、灯、效果、世界的一部分——都是场景节点图中的一个节点,行和节点是同一个东西:选中其中一个就会选中另一个,删除其中一个就会把两者都删除。+ 菜单和每个节点图的添加菜单一样,会按窗口需要分成若干列,以完整显示;如果连分列也放不下(窗口太小、文字太大或间距宽敞),每个分组会变成一个子菜单。
  • 检查器(右侧):该步骤所关注内容的设置。
  • 历史记录(检查器后面的一个标签页):你做过的每一项更改,按顺序排列。参见撤销与历史记录。
  • 3D 视图:Tab 让它铺满窗口,再按一次恢复。
  • 动作(动作,左侧):项目的动作,以及其下的例程。
  • 风格、资产(风格和资产步骤的左侧):项目的风格和资产管线。
  • 时间轴和片段编辑器(动作步骤,动作节点图旁边的标签页):显示动作的帧,以及所选「片段」或「关键帧」节点的关键帧和曲线。在资产步骤中,时间轴位于资产节点图后面,用于手动选取「精灵」节点的帧。

选择在任何地方的方式都一样:大纲中的一行,3D 场景中的部件、摄像机或灯光,或动作列表中的动作。在大纲或 3D 场景中选取对象会转到场景步骤,那里有它的属性(在动作步骤中则保持不变,以便打关键帧);在时间轴或精灵表中点击则不会离开当前位置。

选择多个

选择可以包含多个对象,其中一个是主选对象:即最后点击的那个。操纵器位于它上面;如果主选对象是摄像机,3D 视图就显示这台摄像机;场景节点图会放大显示它的节点。

在大纲中 执行
点击 只选中这一行
Ctrl+点击 一并选中它,或再次取消选中
Shift+点击 选中从上次点击的行到这一行之间的所有行
Ctrl+Shift+单击 把这一段加入当前选择
Ctrl+A、Escape(指针位于大纲上方) 选中显示的所有行,或全不选
Ctrl+D(指针位于大纲上方) 复制选中的内容
删除 删除选中的内容:一次询问,一步撤销

大纲:模型的部件和骨架、摄像机以及灯光

Shift+点击选择的连续范围按屏幕上从上到下的行顺序,跨越各个标题(形状、摄像机和灯可以在同一个范围中),但只包括显示的行:折叠的标题隐藏的内容不在其中。在 3D 视图中,Ctrl+点击像在大纲中一样添加或取消选择,Shift+点击则是添加(空间中没有可供连续选择遵循的顺序);然后控件以及 G、R 和 S 会把所有选中的对象一起移动、旋转或缩放,每个移动的量与主对象相同(缩放则是相同的倍数)。场景节点图中的选择也是同一个:选中的行就是选中的节点,在那里框选或 Shift+点击也会选中它们的行。拖动一个选中摄像机的行会让所有选中的摄像机随它一起移动,每次移动一个位置。

选中多个时的检查器会说明它们是什么(「3 台摄像机」,类型不同时为「4 个物体」),并显示它们共有的内容:

  • 同类全部:该类的所有设置——摄像机为游戏、视图、俯仰角、投影、视野、旋转、尺寸、宽度、高度和缩放;形状、灯、体积和图像则为其节点的设置。
  • 多种类型:只显示它们都具有的设置,名称和范围都相同。形状、体积和模型共有所在位置(位置)和旋转方式(转角);形状和部件共有已显示。摄像机和形状没有共同设置,检查器会如实说明。
  • 名称永远不会共用:两个同名的东西会各自把两者都画出来。

它们一致的设置显示其值。不一致的设置显示为混合:数字、文本或颜色字段中显示破折号(—),下拉菜单中显示混合,复选框中显示一条横线。编辑是绝对的:你设置的任何值都会设置到每一个对象上,因此选中所有摄像机后,在宽度中输入 48、在高度中输入 48,每台摄像机的画布都会变成 48x48。拖动数值时从主对象的值开始,并把显示的数值赋给所有对象。每次编辑都是历史记录中的一步,无论它改变了多少东西。没有自己画布的摄像机(按每米像素数确定大小)没有宽度:请先为它们全部选择尺寸。没有任何摄像机拥有风格(风格由「精灵」节点指定),因此这里没有可以按摄像机设置的风格。

四处移动

3D 面板的标题栏用于选择场景的绘制方式。从哪里观看则无需选择:拖动即可进入自由视角;在 3D 视图上按 C(或标题栏的观察视角)会通过标题栏中选择的摄像机观看。

操作 到
拖动 环绕
右键拖动、中键拖动或 Shift 拖动 平底锅
滚轮(或双指缩放) 朝轴心点缩放;每级步长(约 1.22x)与 2D 视图和节点图中相同
W A S D, Q E 向前、侧向、向下和向上飞行(Shift:更快)
F 或双击 框选模型
Z 逐个切换着色模式
Tab 把指针下的面板全屏显示,再切换回来(或点击任意面板标题栏右侧的按钮)
C(鼠标在 3D 视图上时) 通过显示的摄像机观看,或返回自由视角
P 透视或正交
Shift+G 3D 中的地面网格,精灵上的像素网格
C、D、A(鼠标位于 2D 视图上时) 这一帧使用的颜色;与前一帧相比的变化;保留一次渲染,在它和新渲染之间来回切换
G, R, S 移动、旋转或缩放所选对象(然后按 X、Y 或 Z 锁定轴,输入数字指定精确数值,Enter 确认,Escape 还原)
Shift+D、X 复制、删除(所有选中项)
Ctrl+点击、Shift+点击 一并选中(再次按 Ctrl 取消)
. , Home 框选所选内容,框选全部

3D 视图:带摄像机取景框的模型,左侧是工具,上方是视图按钮

导航控件位于右上角,代表场景的坐标轴:三根短轴,每根顶端有一个方块。点击方块即可沿该轴正视,再点一次则从另一侧观看;拖动控件可以旋转视图。指针停在方块上时会显示轴名,视图旋转时控件会变暗。它下方是缩放、投影和摄像机。

变换控件位于所选对象上——模型、形状、体积、发射器;选中多个时位于主对象上,并移动所有对象——3D 视图的工具栏中有五个工具决定它的作用:选择(无控件)、移动、旋转、比例和变换(三者同时);无论选择哪个工具,G、R 和 S 都可用。拖动某个轴臂即可改变该轴。移动以整数个精灵像素为单位,旋转每次 15 度,缩放以整数像素大小为单位;按住 Shift 可自由调整。检查器顶部的变换区块(位置、旋转、比例)中有同样的数值。

明暗模式

在 3D 面板标题栏的右侧,同样与 Blender 一致:

模式 显示
线框 只显示网格边,隐藏背面的边。适合检查形状的构造,以及把模型与像素网格对齐
实心 简单着色的表面:日常移动视角时使用
已渲染 真正的像素画管线,从这个视角实时运行,让你看到这个角度会生成的精灵

已渲染的生成方式与精灵表的画面完全相同(GPU 上的 G-buffer,以及所有 CPU 处理),只是从你正在观看的角度出发。Ctrl+滚轮可以放大或缩小像素,每格滚动的步长相同,以整数个屏幕像素为单位;像素大小与 2D 视图中精灵的像素相同。

摄像机

一台摄像机就是精灵的一个朝向:八个朝向就是八台摄像机。视图、俯仰角和尺寸相同的摄像机会一起取景并写出一张精灵表,每台一行;第一台摄像机(新项目中为南)所在的组写入导出路径,其他组则在路径中加上其摄像机的名称(hero.png、hero_platformer.png)。pxr render hero.pixor 会把它们全部写出。在大纲中上下拖动摄像机即可调整顺序(每次拖动为一步撤销);其他摄像机的尺寸都与第一台摄像机比较。

在大纲中用 + 添加一个:用于…的摄像机会针对某类游戏进行设置。只有一个朝向的类型会添加一台以该类型命名的摄像机;有多个朝向的类型则为每个朝向添加一台摄像机,以它看到的朝向命名(South、Southeast……)。

游戏 视图 朝向 尺寸
平台跳跃 侧视,朝右 1(镜像得到左侧) 32 px
格斗游戏 几乎侧面 1 128 px
清版动作游戏 侧视,向下 18° 1 64 px
点击式冒险 向下 10° 8 96 px
俯视 RPG 四分之三视角,35° 4 32 px
动作冒险 四分之三视角,50° 8 48 px
等距(2:1) 向下 30°,环绕 45° 8 64 px
战棋 等距 4 个对角方向 48 px
策略 / RTS 向下 40°,环绕 45° 16 32 px
竞速 向下 12° 16 64 px
俯视射击 垂直向下 16 32 px
清版射击 垂直向下,朝上 1 32 px
物品和图标 向下 25°,转向 30° 1 32 px

之后所有设置都可以自由调整:游戏、视图、俯仰(负值表示从下往上看)、投影、转角和尺寸。绕模型一圈会添加 4、8、16 或 32 台像这样的摄像机,每台一个朝向。在命令行中,--camera platformer 的效果相同。

要凭眼睛对准摄像机:在自由视角中飞到你想要的视角,然后按 3D 视图标题栏中的从视图创建摄像机。或者在 3D 视图中围绕模型拖动摄像机;按住 Shift 以 15° 为步进吸附。

除非投影设为透视,否则摄像机都是正交的;尺寸设为适配模型时,它会框住模型本身(因此角色永远不会在画面中游移):这时只有它的角度和尺寸起作用,与它所在的位置无关。画布和缩放以及每米像素数则改为固定画面。

多个场景

场景是物体的一种布置:模型及其位置、包含其他所有内容的场景节点图、摄像机、隐藏的内容、部件组和地面。一个项目从一个场景开始,只有一个时这里什么都不显示。动作、风格和资产管线属于项目,由所有场景共用:动作通过名称指定对象,因此它可以在任何具有同名对象的场景中播放。

复制场景——位于场景步骤检查器顶部,或在「项目」菜单中——会创建第二个场景,即当前场景的副本,并显示它:比如同一个英雄的俯视 16 px 棋子,或带地面和灯光的宣传静帧。修改它的摄像机和物体,第一个场景保持原样。从两个场景起:

  • 标题栏的场景选择框位于「摄像机」选择框之前,用于选择每个步骤显示的场景(显示另一个场景不算更改:它不进入历史记录,也不要求保存);
  • 检查器的场景部分显示当前场景的名称(其精灵表以此命名),也可以删除它;
  • 资产节点图的精灵节点有一项场景设置:所有场景,或其中一个。在资产步骤中选中另一个场景的「精灵」节点,就会显示那个场景。

一次导出会写出每个场景的精灵表:第一个场景的按节点图中的命名,其他场景的则加上场景名(hero.png、hero_map.png)。

在脚本中:

pxr project set hero.pixor --add-scene map --view top-down --size 16   # a copy, then edited
pxr project set hero.pixor --scene map --hide Cape                      # edits that scene
pxr project set hero.pixor --rename-scene map:token
pxr graph list hero.pixor --which scene --scene token
pxr graph set hero.pixor --which asset --node sprites --set scene=token
pxr project set hero.pixor --remove-scene token
pxr render hero.pixor                                                   # every scene's sheets

灯光

主光决定每个像素的光照色带并投射阴影。补光用于提亮阴影面(强度为 0 时关闭)。轮廓光为背向你的边缘添加高光。在 3D 场景中拖动主光和补光,或在检查器中设置它们。

这三者是方向,对精灵的每个朝向都相同,因此属于外观:它们是风格的一部分,列在大纲的灯光下,可以拖动到你看到的位置。灯则不同:它位于场景中的某处,因此和形状一样是场景节点图的一个节点(参见部件、骨骼、道具和效果)。

跟随摄像机(主光,默认开启)让灯光在每台摄像机中都位于同一侧,这通常正是精灵所需要的。关闭后,灯光在场景中固定不动:把角色转过身,它的背面就处于阴影中。

形状

形状在 Pixor 中由参数构建,用于拾取物、道具、图块部件以及场景起步时的白模。大纲中的 + 在一个形状下提供:盒子、球体、圆柱、圆锥、圆环、平面、胶囊、楔形、棱锥、棱柱、楼梯、拱和字母。拱是一个开有圆顶洞口的块体——门洞、大门、桥——它的曲面分段决定顶部有多圆。

新形状会放在已有内容的旁边,并在 3D 场景中框住,上面带有一个移动控件:每个轴一个箭头,X 红、Y 绿、Z 蓝。拖动箭头会以整数个精灵表像素移动形状,因此边缘永远不会落在两个像素之间;按住 Shift 可自由移动。

在检查器中:

  • 形状大小是形状在每个轴上的延伸距离(宽度、高度、深度),单位为米,下方以精灵表的像素显示。分段数是圆形形状由多少条边构成(棱柱的朝向、楼梯的级数)——数值较低时会呈现多面体的外观,在小尺寸下很清晰。
  • 变换负责放置和旋转它,去向下的开可以把它挂在骨骼上,像道具一样跟随运动。
  • 颜色与其他表面一样经过调色板处理。
  • 复制和删除位于顶部,Ctrl+Z 可以恢复被删除的形状。

每个形状都是场景节点图中的一个形状节点,其设置在节点上,并在那里以名称称呼;后面的环形或行会重复它。形状以参数而非网格保存,所以项目文件很小,每次重建都得到相同的顶点。命令行用法:pxr project set x.pixor --add-shape box:1,0.5,1:0,0.25,0:#c86432,或在渲染时使用 --shape。

形状检查器顶部的全部导出为 glTF…会把场景中的所有形状写入一个 .glb,每个形状一个节点并带有其颜色。形状在项目中以参数形式存在,通常以像素的形式离开 Pixor;这是回到几何体的途径,可以在建模软件中继续编辑,或直接放进引擎。命令行:pxr shapes project.pixor -o shapes.glb,也可以不带项目、直接使用 --shape 描述。

Pixor 不是建模软件:没有顶点编辑、没有布尔运算、没有雕刻。这些交给 Blender:把结果导出为 glTF,再在 Pixor 中打开。

删除

能添加的就能删除,有两种方式:右键点击它并选择删除 NAME…(大纲中的行、动作、例程、列表行、关键帧、节点图中的节点或注释、工作区标签页、部件组、变体),或者选中它后按 Delete。Delete 会删除指针所在面板中选中的内容:大纲中的选择(选中多个时全部删除:只问一次,删除 3 个形状?,一次 Ctrl+Z 即可撤销)、风格、精灵或资产列表中的行、片段编辑器中选取的关键帧、节点图中所选的节点、当前显示的工作区标签页。Pixor 会先询问(删除 NAME?,按 Enter 即删除它),Ctrl+Z 可以恢复;工作区标签页自己的删除 NAME则立即生效。随导入模型而来的内容——它的部件和骨骼——属于模型,不能在这里删除。

撤销与历史记录

每次更改都是一步。窗口标题栏中撤销和重做旁边的历史记录按钮会把历史记录面板(位于检查器后面的一个标签页)调到前面;再按一次,检查器就回来了。它按顺序列出各步,并标出当前所在的一步。点击某一步可以直接回到那里。已撤销的步骤仍以淡色留在列表中,因为它们还可以重做。

撤销和重做按钮会说明它们将撤回或恢复的内容(「撤销 已添加形状 crate」),状态栏则说明它们做了什么。拖动一次滑块算一步。

部件、骨骼、道具和效果

  • 部件:眼睛图标会在每张精灵表中隐藏一个部件。选中部件可以设置它的碰撞框或受击框(写入 JSON 导出),并指定它所用的材质;外观对该材质的处理位于风格步骤的材质下,因为它会作用于共用该材质的所有部件。
  • 骨架:选中一根骨骼可以把它设为挂点(其位置写入 JSON),让它随运动摆动(弹簧骨骼,用于头发、披风和尾巴),或给它挂上道具。显示关键帧片段时,在 3D 场景上按 G、R 和 S 可以摆放所选骨骼的姿势——没有骨骼带动时则是所选部件(比如轮子)——所做的修改会成为当前帧的关键帧(在此设置的关键帧);选中模型时则移动模型本身。关键帧转角超过半圈会继续累计,因此从 0 到 -360 设置关键帧的轮子会旋转。
  • 道具、效果、灯和体积通过 + 添加。效果的菱形标记可以在 3D 视图中拖动;体积的大小和位置在它的变换中输入(体积)。灯按调色板自身的级数照亮附近的东西:它的位置在变换中,检查器会显示由哪根骨骼携带它(附着于:手中的火把)、照射多远(范围)、多强(强度)、如何衰减(衰减),以及它是否是一个瞄准某点的锥形光(锥角,0 表示不是,以及瞄准):这些就是它的节点在场景节点图中显示的行,名称相同,和体积一样。效果、灯和体积都是场景节点图的节点:灯之后接一个「行」就是一排灯,没有接入任何地方的节点不在场景中。道具和弹簧也是它的节点——道具和弹簧——但它们改变的是模型本身,而不是立在模型旁边:无论节点位于节点图何处,导入模型的每个副本都会手持该道具,并随弹簧摆动。

骨骼上的道具

道具是由骨骼握持的另一个模型:剑、盾、火把、旗帜。它是完整带入的——包括它自己的节点、蒙皮和片段,而不只是三角形:

  • 由握持点持握。道具中名为 grip(或 attach、socket、hold)的节点就是骨骼所握持的位置,随骨骼一起旋转;持有者可以指定另一个节点,若都没有则握持道具的原点。在建模软件中于握柄处放一个空物体,剑就能放进任何一只手中。
  • 双手持握。第二个名为 grip2(或 foregrip、offhand、support)的空物体是另一只手的位置:巨剑的剑柄末端、步枪的前握把、法杖的远端。每一帧,无论片段对那条手臂做了什么,上臂和前臂都会转动,让手落在该处;肘部保持原本的弯曲方向,够不到的握持点则会指向它。
  • 偏移、旋转 X/Y/Z 和比例以骨骼自身的坐标轴从那里移动它,单位为米和度;即使绑定以厘米为单位,道具也保持以米计的尺寸。
  • 播放它自己的运动。道具中与模型片段同名的片段会在模型的每个片段下播放;否则循环播放它的第一个片段,这样旗手行走时旗帜也在飘扬。只有它自己的部件这样运动:旋转整个道具的片段(拾取物的旋转)交由手来处理。不运动的模型会把道具的片段当作自己的。
  • 它的节点可以作为挂点。它们命名为 prop/node,所以 --socket sword/tip 会把剑尖逐帧写入 JSON。
  • 名称不同的骨骼也能找到,与片段一样:把剑握在 hand.R 中的项目,在 Mixamo 绑定(mixamorig:RightHand)上依然握得住。

在命令行中:--prop sword.glb:hand.R@at=0,0.05,0@turn=0,0,90;pxr project set P.pixor --add-prop … 接受同样的写法并添加一个 Prop 节点(pxr graph add P.pixor --which scene --node prop --set model=sword.glb --set bone=hand.R 是一次设置一项的同一个节点)。

动作

动作是整个场景的运动:行走、攻击、转台、绕行扫掠的灯光——即在每个物体上、在其各帧中播放的内容。一个场景需要多少动作就可以有多少个,每个动作都会在资产步骤中变成精灵。

物体有自己的运动:模型的片段,以及在这里制作的关键帧片段,每个都由通道组成——骨骼的旋转、部件的位置、显示的部件组——随时间设置关键帧。动作负责播放它们:可以是模型片段所指定的那个,也可以是同时为多个物体设置关键帧的关键帧片段。例程是只制作一次、由「例程」节点在任何动作中播放的通道;它永远不会单独导出。

动作列表包含项目的所有动作:它的片段,以及转台、灯光扫掠、颜色循环、运动循环和效果,然后是 例程下的项目例程。哪些内容进入精灵表并不在这里决定:资产节点图的 精灵节点会取用它们指定的动作,而选择 除「静止」外的每一个(新节点的默认值)则会取用此列表中除「静止」外的每个动作(见资产节点图)。项目中没有的模型片段(从列表中删除的,或项目创建时未包含的)可以通过 添加动作 › 模型片段:NAME 重新添加。上下拖动一行即可重新排序:片段在片段之间移动(即精灵表的行顺序),动作在动作之间移动,每次拖动为一步撤销。列表下方的 添加动作提供 新建动作、新建例程、从文件导入片段…、项目中尚未包含的模型片段(模型片段:Sway…)、动作库中的片段(素材库片段:walk…)、关键帧动作,以及现成的动作:转台、灯光扫掠、颜色循环、旋转、浮动、摆动、脉动、挤压、闪烁。循环的生成方式与 --motion 完全相同,作用于所选对象(闪烁作用于灯光)。选中一个动作,检查器中会显示它的设置:它如何运动(根运动、关键帧片段的关键帧、转台转一圈需要多少秒)。如何切分成帧(帧率、智能取帧、手动选定的帧)则由取用它的资产节点图中的「精灵」节点决定。

动作只在这里制作。场景节点图负责摆放物体,不制作动作。场景节点图的播放节点赋予了独立片段的副本,会在任何动作的帧上播放该片段:静止的房子旁边转动的风车,就是一个若干帧的新建动作(帧数由其「输出」节点决定)加上风车上的一个「播放」节点。通过脚本:pxr project set game.pixor --add-action windmill,然后 pxr graph set game.pixor --which action --pipeline windmill --node output --set frames=8。

转台旋转的是模型,而不是摄像机:每台摄像机看到的都是同一个模型在固定不动的灯光下转动,就像真实的转台一样,带关键帧的摄像机仍会在此基础上移动。

让某一帧停留更久。在资产步骤中选中「精灵」节点时,时间轴下方帧计数器旁边有停留(ms),即当前显示帧的停留时长(毫秒)。修改它,片段的这一帧就会在每张精灵表、JSON、GIF 和 .aseprite 中停留这么久——攻击的蓄力停留更久,收招则很快——而其他帧保持切分给出的时长;重置停留会恢复原值。停留属于动作,以动作自己的帧计数,作用在「帧范围」和「停留」节点之前,所以每个使用该片段的「精灵」节点都会保留它。在其他地方,时间轴只显示停留而不修改。pxr project set game.pixor --hold attack:2:300 的作用相同。

管线阶段

Pixor 分步把每一帧变成像素画:GPU 生成的 G-buffer、解析为像素、明暗、线条和清理。每个阶段都是风格节点图中的一个节点,选中一个节点,2D 视图就会显示它的结果;没有单独的阶段选择器。摄像机的渲染是一个分层渲染组,每个图层一个输出;打开它(标题右侧的箭头),其中每个图层都是一个图层节点:

图层 显示
Albedo、Normals、Depth、Part ID、Material ID GPU 为每个像素绘制的内容
覆盖率 模型覆盖每个像素的比例
主光、阴影 分色带之前的光照、投射阴影

之后是光与影组(打开它:光照色带、高光……)、线稿组(剪影、边、整理线条……)、合并、清理组和调色板:其中的每个节点也都显示自己的预览图。

在风格步骤中,状态栏会解释指针下的像素:它的部件、材质、颜色、法线、深度、覆盖率、N.L、阴影、色带,以及它与深度阶跃和折痕角度的接近程度。检查器的「报告」部分列出检查发现的问题(过粗的线条、拐角、孤立像素、调色板外的像素)。

灵敏度设置(线条灵敏度之类)在拖动时会显示它们对应的阶段:折痕角度和深度阶差显示 edges,色带边缘显示 bands,覆盖率显示 coverage。松开后,完成的精灵就会回来。

在命令行中,pxr stages model.glb -o stages/ 会为每个阶段写出一张图像(见命令行)。

在此设置的关键帧

模型文件会带来它的片段。你在 Pixor 中构建的任何东西——形状、组、导入的模型本身——则改用关键帧制作动画(动作列表下方的添加动作 › 关键帧动作)。

关键帧片段就是片段:朝向、取帧、停留、根运动和导出对它的作用与对导入片段完全相同。它用于根运动的根骨骼,是它原地设置关键帧的最高层骨骼:从会移动的 Mixamo 片段烘焙出的行走(pxr project bake)会被固定在原地,JSON 给出每一帧的偏移,供游戏据此移动精灵。

其他文件中的片段用 --anim FILE 导入(pxr project new 和 set 都支持,与 pxr render 的用法相同):骨骼命名不同的 Mixamo 片段会按骨骼的用途找到对应骨骼;动作库中的 lib:walk、lib:run……也是片段,项目可以像列出模型自带片段一样列出它们。

操作 到
在 3D 场景上按 I 在当前显示的帧为所选对象的整个变换设置关键帧
Alt+I 撤回这些关键帧
字段旁边的菱形 为这一个数值设置关键帧;实心菱形表示此处有关键帧,暗淡的菱形表示该通道在其他地方有关键帧
点击一行关键帧 选中离点击位置最近的关键帧,并跳转到它所在的帧
拖动一个关键帧 把它移到另一帧(Shift:保留一个副本);每个选中的关键帧都随之移动
在没有关键帧的行上横向拖动 框选:选中它覆盖的每个关键帧
Shift+点击关键帧 把它加入选中的关键帧,或从中移除
衔接到下一个 这个关键帧如何过渡到下一个:级保持不变(默认,因为像素画大多是阶跃的),线性均匀过渡,各种缓动则让开始或结束变得平缓
新关键帧衔接到下一个,作用于片段所属的动作 当某一行还没有可跟随的关键帧时,新关键帧所用的曲线:在设置之前为阶跃,这样一个全是旋转和飞行的片段只需一次设为线性,而不必逐个关键帧修改
姿势 复制这一帧的姿势,粘贴到这里,左右镜像粘贴(半个行走周期变成一个完整的),反转片段,或者让最后一帧衔接回第一帧

模型自带的片段——来自其文件、片段文件或运动库——会被整体使用。在它的动作上选择转换为关键帧,会由它生成一个在 Pixor 中制作的片段:它移动的每根骨骼在每一帧都设置关键帧,可以逐个修改;原片段本身保持不变(pxr project bake game.pixor walk)。

关键帧以片段自身的帧率落在整帧上。没有帧间时间,所以片段在任何地方都给出相同的帧,项目文件也保持小巧易读。

旋转以三个角度设置关键帧。如果两个关键帧同时设置了它的所有角度——在相同的帧上,以相同的方式到达下一个——那么同时绕两个或三个轴的旋转会作为一个整体旋转进行,就像它可能来源的片段那样;绕单个轴的旋转按其角度进行,因此绕 Y 轴从 0 到 720 会旋转两圈,而绕一个轴旋转的同时另一个轴在倾斜时,仍按其角度所示的方向转动。

在脚本中:pxr project key game.pixor shape:coin "turn y" --frame 4 --value 180 --how linear --clip spin --frames 8(文件中把通道 Position X、Rotation Y 和 Scale Y 称为 x、turn y 和 size y)。不加 --how 时,关键帧沿用所在行的曲线,或片段的曲线:--curve linear 设置片段的曲线。

部件组

表情、装备和受损状态是显示或隐藏的几何体,这是调色板变体无法表达的。在大纲中隐藏不需要的部件,然后在模型检查器的部件组下选择将隐藏的内容保存为部件组。点击一个部件组即可显示它;用旁边的菱形按钮给它打关键帧,片段就能逐帧眨眼、切换武器或承受伤害。

部件组是一个索引,所以它的关键帧总是阶梯式的:一半是这个组、一半是那个组,什么都不是。

部件组也可以是一整张精灵表:在资产节点图中某个精灵节点的部件组中指定它,每个片段都会在每一帧开启该部件组的情况下重新渲染——同样的行走,摘掉头盔,放在单独的精灵表中或第一张旁边。这些行在动作列表中显示为 walk · no helmet。

在脚本中,部件组以名称打关键帧:pxr project key hero.pixor model "part set" --clip blink --frame 1 --value closed。--hide PART,… 和 --show PART,… 会让部件不出现在任何精灵表中,就像眼睛那样。

在包含多个物品的场景中,部件组可以按文件名(turret.obj 对应 turret)或位置(item 2)隐藏整个物品。在脚本中,--part-set NAME:PART,PART(可重复)创建部件组,--no-part-sets 清除部件组。一辆坦克,炮塔以三十二个角度独立转动,车身以八个角度转动,就是两个物品,各配一台摄像机和一个部件组:

pxr project new tank.pixor --item hull.obj@0,0 --item turret.obj@0,0 --size 48 \
  --ring 8 --add-camera "turret:three-quarter:48" --ring-of turret:32 \
  --part-set hull:turret --part-set turret:hull
pxr graph set tank.pixor --which asset --node 0 --set 'camera=turret*' --set part_set=turret
pxr graph add tank.pixor --which asset --node sprites --alone --set camera=South,Southeast,East,Northeast,North,Northwest,West,Southwest --set part_set=hull
pxr graph add tank.pixor --which asset --node merge --alone --in 0=0 --in 1=4
pxr graph wire tank.pixor --which asset --from 5 --to 1 --slot 0

只包含物品的项目不需要 --model。

每个 --item 都是场景节点图中的一个物品节点,添加在其链的末尾。在应用中,大纲里的 + › 一个物品 › 从模型文件… 会在现有内容旁添加一个物品;它按文件名列在大纲的物品下,其部件命名为 item N: …(N 按物品节点在节点图中的顺序计数),部件组也用这个名称称呼它们;在检查器中可以放置、旋转和缩放它,给它一个单独的片段(自己的片段),或者删除它。窗口标题栏中的导入…(Ctrl+I)则不同:它会替换模型并保留外观。

可以设置关键帧的内容

目标 写出 通道
导入的模型 模型 位置、旋转、比例
它的绑定中的一根骨骼 bone:NAME 位置、旋转、缩放——在 3D 视图中用 G、R 和 S 摆姿势,每次更改都是一个关键帧(R、X、9、Enter 让它绕 X 轴旋转九度);片段没有打关键帧的数值即为骨骼的静止姿势
导入中不受任何骨骼弯曲的部分 part:NAME 位置、旋转、缩放,以部件中心为基准——像骨骼一样用 G、R 和 S 摆姿势(在新关键帧为线性的片段中,在车轮的最后一帧上按 R、Z、-、3、1、5、Enter,就能让它旋转)
在这里构建的形状 shape:NAME 位置、旋转、比例
体积 volume:NAME 位置
图像或文字卡片 picture:NAME 位置、旋转、缩放(以其底部为基准)
效果的发射器 effect:N(第一个为 1) 位置,效果在此片段下播放时
一台摄像机 camera:NAME 转向和俯仰,叠加到它自身的值上;其他摄像机保持不动
主光 灯光 转向(方位角)和俯仰(仰角),以及 intensity(1 为外观自身的值,0 相当于所有表面都背向光源)
一种材质 material:NAME glow(0 到 1,用于发光材质)和 ramp shift(沿其色阶的整级数)
由多帧组成的图像 picture:NAME、frame 显示图像条中的哪一帧,从 0 开始
部件组 模型、部件组 显示哪个部件组

外观关键帧是像素画师无需移动任何东西就能制作的动画:光芒闪烁的火把、沿色阶升一级再回落的脉动符文、在循环中逐渐变暗的灯光、画成四帧的旗帜。色阶偏移和帧都是整数,因此它们的关键帧总是阶跃的。

pxr project key hall.pixor light intensity --frame 0 --value 1 --clip dusk --frames 8 --how linear
pxr project key hall.pixor light intensity --frame 7 --value 0.3 --clip dusk
pxr project key hall.pixor material:rune "ramp shift" --frame 4 --value 1 --clip dusk

部件是按名称指定的导入模型的一部分,与大纲中显示的一致:汽车的车轮、宝箱的盖子、炮塔的炮管。没有绑定的模型可以用这种方式制作动画,无需在 Blender 中来回折腾:部件绕自身中心旋转,就像车轮绕车轴转动,所有同名部件都会随之转动(轮胎和它的轮毂盖)。选中部件,它的关键帧就在此部件上的关键帧下(旋转、位置);命令行:

pxr project key car.pixor part:wheel_fl "turn z" --clip drive --frames 8 --loop yes --frame 0 --value 0 --how linear
pxr project key car.pixor part:wheel_fl "turn z" --clip drive --frame 8 --value -360

受蒙皮弯曲的部件由其绑定负责移动,因此不能单独为它设置关键帧。

当发射器的效果在关键帧片段(效果的片段)下播放时,会读取发射器的关键帧:火球的火焰随它一起飞行,火把的烟雾跟随片段挥动的火把。

摄像机关键帧让一台摄像机绕模型转动——即它所指定的那台,因为一台摄像机就是精灵的一个朝向——所以在 top 摄像机上设置关键帧的环绕,不会影响由八个朝向组成的环。重命名摄像机时,它的关键帧也会随之迁移。灯光关键帧控制主光的方向:摇曳的火把、循环中的日出。

在浏览器中免费用你自己的模型试试本页介绍的内容。

在浏览器中试用 获取 Pixor