跳转至

转换与 Drag Conversion

视频教程 —— 即将推出

OSA 里的每一行都是同一个对象,但不是每一行都被允许做同样的事 —— 因为 Harmony 自己的模型有一些它并不具备的形状。本页讲的就是这些限制、Inspector 如何显示它们,以及你怎么从中脱身。

Inspector 会变形

选中一个 frame、一个 art layer 或一个 subart layer,Inspector 的大部分内容会消失:

区块 drawing 容器 Frame art layer / subart Frames 文件夹 Template
Item Properties 名称锁定 名称锁定
Content Nodes ✅ 完整 ✅ 仅画稿字段 ✅ 仅画稿字段
Hierarchy Nodes
Effects Nodes

frame 上的 Drawing 区块

没有任何东西被置灰后留在那里逗你 —— 它是隐藏的,因为那根本不是这一行会有的设置。

为什么: 一个 frame 是元素内部一个已曝光的 cel。cel 上没有 peg,cel 上没有 composite,cel 上没有辉光。peg 属于 frame 上方的 drawing 节点;那才是这些区块所在的行,也是你去设置它们的行。

再往下一层也一样:art layer 是 drawing 内部的一个层,subart layer 是那一层堆叠中的一张图。两者都不是 Node View 里的节点,所以两者都没有节点属性。

是隐藏,不是禁用

一个被禁用的控件在说 "你本可以拥有它,只是现在不行"。这些区块是隐藏的,因为答案是 "在这种行上,永远不会有" —— 而 OSA 的规矩是:一个说不出理由的灰控件就是 bug,所以它不会把自己解释不了的东西置灰。

每种行能容纳什么

父子规则在每次放置时都会执行,而拒绝总会自报家门:

子项 允许的父级 你会看到的拒绝信息
Frame Frames 文件夹 Frames must be in a Frames Folder
Frame 里的 Frame BLOCKER: Frame inside Frame (Must be ArtLayer)
Frames 文件夹 一个 drawing 容器 Frames Folder must be a child of a Drawing Container
Art layer 一个 frame Art Layers must be children of a Frame
Subart layer 一个 art layer 或另一个 subart Sub-ArtLayers must be children of an ArtLayer
drawing 容器 任何地方,除了 frame、art layer 或 Frames 文件夹内部 Drawings cannot be inside Frames/Content nodes
Peg / Group / Composite / Backdrop 任何地方,除了内容节点内部 … cannot be inside content nodes
Template.tpl 除 frame 和 art layer 外的任何地方 TPL Files cannot be inside Frames or Art Layers

释放一个 frame

frame 是一种被锁死的行:没有 peg,没有效果,它的子级只能是 art layer。当你需要它不止于此时,就把它变回一张 drawing

在 Inspector 里取消勾选 Frame。会发生的事:

  1. frame 的编号被记住StartEnd、编号),这样再次勾上 Frame 就能原样恢复。
  2. 该行变成一个 drawing 容器 —— Hierarchy Nodes 和 Effects Nodes 重新出现。
  3. 在它内部创建一个 Frames 文件夹。
  4. 它原有的任何 art layer 或 subart layer 都会被移进那个 Frames 文件夹

最后一步才是有意思的那一步,也是 "我怎么把画稿变成帧?" 的答案:

把一个 frame 转换成 drawing,就是释放它的画稿去成为帧

原本锁在 frame 里的那些 art layer,现在坐在一个 Frames 文件夹里,而那正是 frame 该待的地方。从那儿起,每一个都能自成一帧。

再次勾上 Frame,反向过程发生:Frames 文件夹被移除,它的子级上移回来,记住的编号也回来了。

art layer → frame,以及随之而来的提升

在一个 art layer 上取消勾选 Target Layer,它就转换成一个 frame

  1. art-layer 类型被清空。
  2. 该行取用下一个可用的帧号 —— 不与已有曝光冲突。
  3. 它的 subart layer 被提升为 art layer,继承父级原有的类型。

第三步值得记住。subart layer 的定义是 "一个 art layer 堆叠中的一张图" —— 一旦它的父级不再是 art layer,这个描述就没有意义了。所以子级自己变成 art layer,并保留父级原本带着的类型,递归地一路往下。

整件事的反向操作:在 Drag Conversion 打开的情况下,把一个 frame 放到另一个 frame 或一个 art layer 上,它就重新变成 art layer —— 恢复它之前的类型,如果它从来没有过,就用 LA

类型是被暂存了,不是丢了

当一次转换丢下一个 art-layer 类型时,OSA 会把它留着。转换回去时回来的是原来的层,而不是所有东西都塌成 Line Art。

Drag Conversion

Browser 的 Settings 区域里的 Drag Conversion 复选框决定一次放置意味着什么。它默认是关闭的。

  • 关闭 —— 严格模式


    一次无效的放置会被拒绝,而消息会点名那个可以允许它的复选框:

    Strict Mode: Cannot nest Frames. Enable 'Allow Drag Conversion'.

    你的树里永远只包含你要求过的形状。

  • 打开 —— 转换


    被放下的行变成目标所要求的样子,而 OSA 会说出它做了什么:

    Converted ArtLayer to Frame

    很快,而且是重构一棵到货就不对的树的最快办法。

什么会转换成什么

拖动 放到 Drag Conversion 打开时
art layer / subart 一个 Frames 文件夹或一个 drawing 容器 变成一个 frame,取下一个空闲编号,它的 subart layer 被提升为 art layer
Frame 另一个 frame 或一个 art layer 变成一个 art layer,恢复它暂存的类型(或 LA

两种模式都会拒绝的

有两种放置无论复选框怎么设都无效,因为没有任何合理的东西可以让它们转换成:

  • 一个 frame 放进一个 subart layer
  • 一个 art layer 放进一个 subart layer

选择一种模式

什么时候用严格模式 什么时候用转换模式
你在摆放画稿,希望错误被拒绝 你在重构一棵到货就不对的树
树的形状已经是对的 你想让一次放置意味着"变成这个"
你在一棵很深的树里快速操作 你在 frame 之间重新组织 art layer

对你的画稿来说两者都是安全的:不会因为层级变了就丢掉任何东西。变的只是一次不寻常的放置到底是拒绝还是转换。

哪些行持有画稿,见 概念;不靠拖拽就能重构的那些动词,见 Split 与 Merge