复杂形状通用自动化【TMAM】

0 点赞
异形工厂(Shapez)
转载

本文介绍了一种通用工厂的构造,该工厂能够按订单制造任何复杂程度的模型。 建议大家先尝试自己制作这些模型,亲身感受其中的难度,当然还要先通关主线游戏。 无需模组。不过为了方便,我推荐这些: 【缩小地图模式前】可以增大视野范围。 【导线层吸取与删除】允许在电路层删除按钮(及类似物品)。 安装方法:将压缩包内容(.js文件)放入mods文件夹。路径: %APPDATA%/shapez.io/mods(复制到资源管理器) 控制面板

请求面板可用于请求模型(部件)。作为示例,面板中已输入了组装算法截然不同的模型,但你当然也可以输入任何自定义模型。 旋转器可轻松旋转所请求的模型。 启动按钮会激活向工厂输送资源。不过,如果程序判定无法制造该模型,仅靠此按钮将无法启动。 强制按钮可用于制造残次品。该按钮需与前一个按钮配合按下。废品仍将被送往垃圾桶。 指示灯颜色: 无信号:无 等待:蓝色 激活:绿色 故障:红蓝色 生产废品:红绿色

激活手动模式会覆盖装配控制程序的输出,允许手动下达指令。左侧屏幕显示所需图形,右侧屏幕显示按当前指令生成的结果。 图形生成器 由于核心模块不愿请求复杂图形,我制作了自己的生成器! 其基础是16位计数器。每个位决定对应部分的有无。 控制方式:

启动发电机将激活发电机的所有系统,并向工厂发送形状请求。此时,其他控制面板将强制关闭,以避免冲突。 模板可根据输入的形状为生成的部件设定形状和颜色。如果模板被禁用,则会使用枢纽请求的形状作为模板。如果模板缺少某些部分,将根据记忆使用上一个模板的部分来填补。 切换生成器至下一个图形有几种方式: - 每次按下按钮时,生成器会切换到下一个图形。 - 当工厂实际制造出所请求的图形后,生成器将自动切换到下一个图形。自动跳过图形类型会在满足以下条件时切换到下一个图形: 1. 简单图形:所有三对图层均为简单图层,且工厂可以生产。 2. 复杂图形:至少有一对图层为复杂图层,且工厂可以生产。 3. 不可能图形:工厂无法生产。(第4点不包含在此类中) 4. 空白图形:图层下方为绝对空白。此类图形理论上也不可能存在。切换之间设置了3.5秒(214滴答)的限制。 继电器指示灯的颜色变化表示切换准备状态。 颜色表示当前图形的类型: 简单 青绿色 复杂 黄色 不可能 红色 空白 紫色 寄存器:

任何切换操作都会将当前图形记录到与其类型对应的寄存器中。当其中一个寄存器行被填满时,生成器将完全关闭。 记录功能会激活图形在寄存器中的保存。 任意按键触发的重置会清空所有寄存器。 注意事项 如果你的电脑配置较低导致游戏严重卡顿,可以在游戏设置中降低 ticks(游戏刻)速率。其副作用是传送带的吞吐量会降低。不能同时请求多个形状。如果同时激活多个按钮,信号会叠加,之后将不会有任何反应。 切换请求时,初期会出现混乱的形状。需要等待所有原料传送带上来自前一个形状的坯料都进入废料箱。 要了解工厂能否制造所请求的形状,不必实际制作该形状。所有操作都会在虚拟机床(示意图)上精确复制。因此,如果输出显示屏显示一切正常,那么实际加工结果也会如此(当然,前提是没有任何部件损坏)。 如果显示屏闪烁红光,可能有以下几种原因: 1. 很可能该形状根本无法制造。 2. 已启用手动控制,但指令设置不正确。 3. 你已经损坏了某些部件。 4. 可能性极小,但可能存在程序错误。【定义】 MAM:全称为Make Anything Machine(万物制造机),即可以制造任何物品的机器,也可简称为通用工厂。 TMAM:其中“T”代表True(真正的),即能够制造所有可能形状的机器,没有任何例外。 资源:指通过提取器获取的形状或染料。 扇区:指四分之一的层。 层:指位于同一水平面上的4个扇区。预制件是处于特定生产阶段的模型部件。 模型是最终产品。 凹槽编号按顺时针方向排列:

一个图形最多可以有4层。 第一层为外层,其尺寸始终为最大。 为了便于区分,我会为每层使用不同的颜色进行标记:

第1层 白色 第2层 蓝色 第3层 绿色 第4层 红色 这两种操作由同一台机器完成: 粘贴是指在同一层上连接不同编号的切片。 嵌套是指连接不同编号的层。 外壳是指包含另一个切片的外部切片。 例如,对于【第2层第4号切片】,外壳将是【第1层第4号切片】

注意:按照逻辑,上层应该更靠近观察者,而越靠近的物体看起来越大。但在2D中逻辑不同,情况恰恰相反,这可能会让人非常困惑。只需理解,在2D中不存在真正意义上的高度。 嵌套层会被压缩(缩小)并取代部分外壳。 也就是说,嵌套层会嵌入到第1层中,成为内部的第二层。 理论 有哪些类型的图形以及如何收集它们: 1.简单图形与复杂图形的区别 这个是简单的:

嵌入时,蓝色坯料移至第2层并变小。这个也很简单:

这里只嵌入了蓝色部件1号。但由于蓝色坯料是一个整体,所以蓝色部件1号将其余3个蓝色部件一起带到了第2层。不过这对制造工艺没有任何影响。 顺便说一下,如果拆分这个图形会怎样:

层之下不可能是绝对的虚空。因此,左半部分回到了第1层。 如果一个图形的每一层都可以独立制作,那么它就是简单图形。 然后依次将它们相互嵌套。 这个是复杂图形:

由于此处第二层没有可投入的内容,将执行附加操作而非投入操作。

蓝色将保留在第1层,这不是我们需要的。 如果图形的任何部分都没有外壳,则该图形为复杂图形。 并且无法通过层的顺序嵌套来实现。 2. 复杂半体的制作流程 1. 创建两个填充物(只需将任意资源切成两半) 2. 将第一个填充物附加到外层部分。 3. 将第二个填充物附加到(计划的)内层部分。 4. 将第二个坯料嵌套到第一个中。第二个压舱物叠加到第一个上后,会连同与其相连的部分一起移动到第2层。 5. 切除并丢弃压舱物。移除压舱物后,较小的部分会继续侧向附着在较大部分上,并保持在第2层。

去除冗余部分后,就可以将其他小块甚至第二个复杂的半块连接到它上面了。

但要记住,只能附着在外层。因此无法做到以下操作:

它们在理论上是可能存在的。但现有的设备无法制造出它们。不过等等,是否可以制作一个单瓣大小的配重,这样就能为另一瓣内层腾出空间呢?但实际上问题出在切割工具上。这两种方案都无法只切割坯料的四分之一而不影响其他部分。因此,在去除冗余部分时,其中一个舱室也会被分离出来,并与冗余部分一起被丢弃。

所以这毫无用处。出于同样的原因,也无法制作出对角线的复杂半体。

困难的一半可能是普通的和镜像的

将它们中的每一个按顺时针方向旋转,就能得到其他所有的。

也就是说,复杂的半块零件共有8种。复杂的半块零件是任何复杂形状的基础。务必记住它,后续的示意图中将不再展示其制作过程。由于复杂的部分由两层组成,因此应引入“层对”这一术语: 层对1:层1和2(白色和蓝色) 层对2:层2和3(蓝色和绿色) 层对3:层3和4(绿色和红色) 提示:根据颜色而非尺寸来判断层。因为在坯料到达其最终位置(层)之前,其尺寸可能会造成误导。分析图形时,需要单独观察每一对(层),并且只在复杂的对上寻找复杂的半体。

这里第1对是困难的,第2对是简单的,第3对是困难的。 如果某一层的任何一个切片都没有外壳,那么这些切片就被称为浮动切片。(这是对困难层对的另一种定义) 如果你决定在这里制作右侧的困难半部分:

那你就搞砸了。这只是普通的几层叠加而已。

3. 多层复杂部件的制造工艺 这只是对先前工艺的扩展。 更多的层,以及相应更多的切片和填充物。

其他方面都还是老样子。唯一需要注意的是这个角色。

在它上面可以看到右侧和下方的复杂半体,但由于切割器的限制,只能制作其中一个。因此这个形状是不可能的。 4. 复杂半体的补充工艺 卡扣机制允许为复杂半体添加内部部分。 但前提是它们有东西可以扣住。通常有3种类型: 4.1. 普通卡扣

在复杂的部分中嵌入了简单的第二层。过程如下: 绿色部分2在嵌入时从第二层移至第三层。由于被嵌入的坯料是一个整体,所有与其相连的部分也会向深层移动一层。但这对制造工艺没有任何影响(X2)。除了已经熟悉的复杂半体,不需要做什么特别的操作,所有内容都会按照常规的图层嵌套方式组合(就像处理简单图形一样)。但这里需要注意的是,嵌套图层时必须始终从最内侧开始: 首先将4号图层嵌套进3号图层。然后将3号和4号图层嵌套进2号图层。最后将2号、3号和4号图层嵌套进1号图层。 不过复杂半体由多个图层组成,该将其归为哪一类呢? 其实很简单——根据它的外部部分来确定。这一切都能确保坯料能够卡住。 如果你开始反向堆叠,从最外层开始:

你失败了。 4.2. 复杂咬合 原理相同,但现在被咬合的图层也很复杂。 如果你在这里看不到两个复杂的部分:

这很正常。毕竟这是最残酷的机制,破坏了难度层面的定义。 配置:

问题在于,无法将分片附加到复杂半体的内部分片上(但可以通过挂钩添加)。而在单独分析各层对时,特别是第2对,无法看出蓝色分片2是第1对复杂半体的一部分。

第二组看起来很简单,似乎可以直接将蓝色部分2和3连接起来,然后同样直接嵌入第3层的部分,但事实并非如此! 因此,需要将上一个复杂半体的内部部分从复杂层的定义中排除,就当它完全不存在一样。

现在第二对看起来很复杂,并且能清晰看到下方/复杂的部分。 4.3. 奇点 已知图形最多可以有4层。 但如果嵌入第5层会发生什么?

好吧,他缩成了一个物质点,从此再也没有人见过他。 形态没有变化,看起来毫无意义。 现在我们来设想一下,如果在完成抓取机制后,能够去除用于抓取的最内层,会怎么样:

这也将让原本不可能的造型成为可能!只不过现在需要在物理层面实现。而且这是可行的:

咬合由第5层完成,同时它会被挤压开。 不过这只对第3组有效。而其他组则仍然依赖下一层是否有凹口。 工厂架构 由于复杂工厂只是普通工厂的扩展版本,所以我将从普通工厂开始介绍。 普通工厂 普通工厂的模块: 1. 通用混合器

无需电子元件即可运行!乍一看可能觉得它效率不高,因为整体结构的限制,它似乎只能以最大产能输出一种混合染料。但实际上,这已经足够了。 一条传送带足以供应8个双层染色机。 如果8个染色机都需要白色染料,那么所有3种基础颜色都会用于混合。如果4个请求白色,另外4个请求蓝色,那么一半的蓝色会用于混合(制作白色),另一半则直接输出。这样无论如何都足够供应8个染色器。2. 资源分配器

提供请求的资源。 3. 涂装器与裁剪器

更高效的做法是先给整个目标形状上色(一次性给4个切片上色),然后将其切成切片,转动每个切片,使它们都变得一样。这样,一个上色器和切割器就足以以最快速度生产一个切片。剩下的就是复制它们,只需改变旋转器,让每个都生产自己的切片。

提示:无论你要制作什么形状,都要将其分解为小块。因为这是任何形状的最小基本部分。4层×每层4个小块=共16个小块。 4. 小块合并器

连接拼块,形成图形的第一层。如果其中一个拼块缺失,另一个拼块将跳过该(单个)合并步骤。 在这种情况下,顺序如下: 区块1,拼块3+4 区块2,拼块2+3&4 区块3,拼块1+2&3&4 但通常来说,拼接顺序并不重要。 5. 图层贡献者

坦克还是那些坦克,用途却不一样了。它会把内层塞进当前层里。这里顺序很重要,不能弄混入口。如果没东西可塞,当前层就会像往常一样直接通过。 一层的生产完成后,剩下的就是把这一切复制粘贴3次,让每一层都生产自己的层。这样一来,工厂就准备好了!

如果不把一切搞得像乱七八糟的集体农庄那样复杂,其实也没什么难的,对吧? 顺便说一下,混合器足够供8个涂装机使用,也就是8个工位,相当于2层。所以整个工厂有2个混合器就够了。 复杂工厂模块: 1. 配重连接器 2. 配重插入器 3. 配重切割器 6. 用于制造复杂半体的关键模块 现在我会用图纸来展示,因为图纸更详细。

该结构专门用于创建右侧复杂半体(普通和镜像),因此总是会附加左侧配重。为简化起见,目前仅考虑这一点。 7. 部分偏移系统 但存在一个问题。 对于右侧复杂半体,外部部分为1号。相应地,它在1号楼层、1号传送带上运行。它可以毫无问题地进入配重附加模块。但另一个内部部件已经是2号了。因此它在2号楼层,通过2号传送带输送。而模块连接到了1号传送带。

立刻就有了直接移动方块的想法,但这解决不了问题。因为还有右侧复杂部分的镜像版本,其碎片是反向排列的,现在第一层的碎片已经无法对齐了。

因此,在该结构前需要设置一个份额偏移系统。它会在必要时将份额转移到上方的传送带(此处是从2号转移到1号)。逻辑如下: 如果复杂半体为普通类型,则转移其内部份额(2号层) 如果复杂半体为镜像类型,则转移其外部份额(1号层)

考虑到复杂半体的结构,其存在意味着发生位移的传送带必定为空。毕竟,如果某一层上有切片1号和2号,那么这里就不存在右侧复杂半体,这只是简单的一对层。 8. 复杂半体的方向 建造到4层后,将可以制作2号和3号对的复杂半体,以及多层半体。同时,这就产生了对导航系统的需求。其工作逻辑如图所示:

每个分支点都标有其条件。在这种情况下,条件是存在具有特定层数的复杂半体。镜像性仅在份额偏移系统上有意义。如果条件满足,它会将坯料导向黄色箭头方向;如果不满足,则导向红色箭头方向。而查看这些细节,最好通过随附的带保存的图片。请注意,这里的蓝色部件2同时是两个复合部件的一部分。更准确地说,它是第2组复合部件的外部部件,同时也是第1组复合部件的内部部件。也就是说,首先需要将第3层的部件嵌入蓝色部件中,得到第2组,然后将这个组件送到第1层,并将其嵌入外部部件中。这样,复合部件将始终进入与其外部部件编号相同的楼层。9. 各种朝向的复杂半体 到目前为止,工厂只能生产右侧的复杂半体。而要能够生产其他所有朝向的半体,只需将整个系统复制3次即可:

这些“副本”没有任何区别,并且彼此完全独立运行。每个副本负责处理其所在侧的复杂部分(如果存在的话)。具体如下: 1. 右侧 2. 下侧 3. 左侧 4. 上侧 显然,每一侧都需要不同的压舱物。 现在只需将其与简易工厂系统结合…… 10. 复杂层嵌套 简易工厂的层嵌套系统也适用于复杂工厂,但存在一些细节问题。对于简单的情况,例如,如果存在第3层,那么它必须嵌套在第2层中。因为第3层不能脱离第2层存在,而第2层又需要第1层。也就是说,不同阶段的坯料需按严格顺序嵌套。 对于复杂的情况,它们的第3层同样不能脱离第2层存在。但由于复杂半成品的制作,第2层的一部分可能会转移到第1阶段。结果是2号楼层会为空,而3号楼层的坯料必须直接经过,立即进入1号楼层的嵌入模块。也就是说,如果当前楼层和其中一个上层都有坯料,坯料应被导向嵌入模块;如果没有,则直接经过。

第3层预制件在经过第2层嵌套时,直接进入了第1层。但有一种讨厌的图形会把一切都复杂化:

它的特点是,其基础是多层复杂的半体,位于1号楼层。而2号和3号这两个复杂半体对,必须嵌入其中。

可能看起来需要从下层开始反向堆叠。但实际上并非如此。这里需要在第1层放入2个不同的坯料,而不是改变顺序。更复杂的形状更能说明这一点:

如你所见,其他组都应处于正常状态。但由于逻辑简单,工厂会尝试将3号楼层的坯料嵌入2号楼层的坯料(两者都存在)。不过因为这些坯料是平行的,无法进行嵌入,反而会执行此处不恰当的附加操作(机床是通用的),最终结果会一团糟。这种情况只发生在2号楼层,所以需要对其进行升级:1.嵌套可能性检查机制。 该机制与复杂层检查机制类似。即需要确定第一个坯料的至少一个凹槽上方存在第二个坯料的凹槽。这意味着可以(且需要)进行嵌套。 2. 备用路径。 如果两个坯料都存在,但无法嵌套,则2号楼层的坯料将照常发送至1号楼层。而来自3号楼层的坯料将通过单独的传送带送往1号楼层的附加嵌套单元。这样,两者都将嵌套到1号楼层的坯料中。

好了,复杂形状制造厂完工了! 其实也没那么难,只要知道自己在做什么就行。但真正重要的还在后面呢…… 【组装控制程序】 该程序的任务是识别目标形状中所有可能的复杂半体,并只选择合适的那些。这可不是简单地识别小块的颜色和形状,这要复杂得多。因为选择会受到多种条件的影响。我不会用普通的语言来描述逻辑,而不是展示电路图。因为懂的人自然能把文字转化为电路图,不懂的人反正也什么都看不懂。每对图层都有单独的电路图。它们的总体逻辑相似,但大多数条件不同。 第一对 选择第1和第2图层上的复杂半体。 1.复杂图层对的判定方法 在寻找复杂的另一半之前,需要先确定什么是复杂对: 1.1. 如果某对图层上没有相同编号的凹槽,则启用下一种方法。 2.复杂半体识别方案 实际上,任何复杂半体都是由特定的小块组成的一对: 复杂半体 外层小块编号 内层小块编号 右侧 1 2 右侧/ 2 1 下方 2 3 下方/ 3 2 左侧 3 4 左侧/ 4 3 上方 4 1 上方/ 1 4 而之前的方案有助于避免在类似图形中识别出复杂半体。

所有样本都有外部部分1和内部部分2。该方案本可以检测到右侧的复杂半体,但之前的方案无法激活它,因为有一对简单的层。 3. 变体选择方案 有时可以发现两个相互垂直且具有共同部分的复杂半体: 内部变体:

这里可以看到右侧和上半部分/复杂的一半。共同部分是白色部分1号。 它会选择内部(蓝色)部分中的一个进行配对。 而绿色部分只是为了提供连接点。没有它们,这个形状就无法形成。 外部部分的变体:

这里发现了右侧和上侧的复杂半体。共同部分是蓝色部分1。它会选择一个外部(白色)部分与之配对。另一个白色部分之后可以直接附加。在这个阶段,你应该已经能够在脑海中组装复杂图形了。我不会再展示生产链了。由于它们一个部分对应两个复杂半体,因此只能制作其中一个。另一部分可以稍后附加/连接。在这个示例中,选择哪一个复杂的半部分并不重要。但这样的答案不适用于该方案。 让所有垂直的复杂半部分默认被选中,所有水平的半部分被忽略。而“水平模式”方案在激活时会进行反转。现在所有垂直的半部分将被忽略,水平的半部分将被通过。还需编写激活横向模式的条件,满足以下条件之一即可激活: 3.1. 不存在垂直方向的(内容)

这里有2个水平的复杂半体,它们平行排列。 3.1. 如果没有任何垂直的复杂半体,水平模式就会激活。 但当然事情并非这么简单!其他层的碎片也可能会影响选择,需要提前进行计算。以下几点将专门对此进行说明。 3.2а. 内部变体,与第3层碎片的咬合

这里需要选择水平方向,因为只有它的切片才可能被钩住。也就是说,第3层的切片位于仅水平方向的变体上方,这会改变优先级。 “仅”这个词很重要,因为如果切片位于两种方向的变体上方,那么就没有必要改变优先级了。

3.2б. 外观变化,多层结构

这里需要选择水平方向,以便在下一对时能够将其设置为多层。否则,绿色区域将无处粘贴。 这两个条件点较为相似,因此合并表述如下: 3.2. 当【所选区域上方】存在第3层的区域时,选择水平方向变体。 在第1对中,无法同时放置垂直和水平的复杂半体。因此,选择水平变体意味着激活水平模式。 3.3. 外部变体,与第4层切片的连接 这里需要进一步观察,现在选择会受到第4层切片的影响:

这里需要选择水平方向,以制作水平多层结构,之后就可以用第4层的切片勾住它。 垂直多层结构也可以制作,但没有东西可以勾住它。 3.3. 选择水平变体的条件是: 两个变体上方都有来自第3层的切片,且 第4层只有一个切片,并且 该切片位于水平变体外部切片的上方。激活水平模式只需满足以下规则之一。规则1的条件是,第3层的切片必须仅位于其中一个变体上方;而规则2的条件是,该切片需位于两个变体上方。也就是说,每个单独的图形只能满足其中一个规则。所有情况下都应如此,以避免冲突。内部/外部变化,与第5层切片的咬合 由于第5层是一种特殊的填充物,并且始终是完整的,这里仍然需要查看第4层切片的位置:

在所有样本中,选择水平方向的唯一共同原因是:需要“分割”图形,使图形的每一侧都有一个包含第4层的部分。其中一个部分通过(第5层)连接到另一个部分,会将整个结构转移到所需的层上。 3.4. 选择水平变体的条件: - 两个内部部分的上方都没有第3层的部分,或者 - 两个外部部分的上方都有第3层的部分,并且 - 第4层上只有部分1和部分2,或者只有部分3和部分4。关键在于最后一句,其余内容仅作说明。由于我完整描述了模型的组装过程(全部4层),可能会让人误以为这里列出的方案也能解决整个模型的组装问题。但实际上,这些方案只是提前规划,而复杂部件的选择仅在其对应的层组内进行(此处为第1组)。第二种配对方案则会考虑前序方案的选择,并继续按照自身算法对模型进行虚拟构建。 计算从第一层开始。层方案的选择仅影响下一层,而不会影响上一层,这有助于避免循环。循环是指方案的输出数据影响其自身的输入数据,导致方案无限重复计算自身。多种变体 上述规则仅适用于只有一种变体的情况。但变体也可能更多。在这种情况下,单独考虑其中任何一种变体都是没有意义的。

这里有4种变体,4个复杂的半块,从中只能组成2个。更具体地说,要么是两个垂直的,要么是两个水平的。同样,目前可以默认选择垂直的。但这些图形会改变这一点:

这里的四层复杂半体只能水平制作,因此需做出相应选择。 3.5. 水平模式激活条件: - 第3组存在构成水平复杂半体的部件。 - 该组已准备就绪。 所选复杂半体的制作请求将发送至工厂。 4.指定精选复杂半体的规则 若第1组中只有一个复杂半体,则该半体将成为精选半体,并用于第2组的规则中。 第2组 选择第2层和第3层的复杂半体。 1. 复杂层组的判定规则 由于受前一组复杂半体的影响,此处需要大量补充说明。 复杂层规则与复杂半体规则紧密相关。第一个决定是否需要将部分发送到第二个。接下来的一些要点更适用于第二个,但还是一起写更方便。 1.1. 无法检测到异常 左侧样本可以制作左侧的复杂部分,而右侧样本则无法做到。

检测无法完成的内容没有意义。为了让方案完全不检测到它,需要考虑上一对选择的复杂半体。 1.1. 强制排除 “来自上一对图层的复杂半体的内部部分” 从复杂半体的垂直检测方案中。(即使有几层比较复杂) 在右侧示例中,第1对的复杂半部分是水平的,因此其蓝色部分将在第2对中被排除在垂直复杂半部分的检测之外。 当然,在这个简化示例中,选择并不重要,因为无论如何都无法形成图形。但在更复杂的情况下,关键是在选择变体时不考虑不可能的选项。

这里,如果不消除不可能的左侧复杂半部分,那么变体就会选择它,而不是下方的。而且工厂会直接卡住。 1.2. 忽略模型承载部分的简单层 选中状态意味着在第1对中只有一个复杂半部分。它将模型大致分为两部分。在第一部分上是复杂半部分本身,而在第二部分上所有内容都处于浮动状态(无法直接附加)。由于这种划分,有时即使一对看起来很简单,也需要制作复杂的半体。复杂的咬合,如果你还记得理论知识的话,就是这样的例子:

在所有示例中,要粘贴浮动的半身像(左侧),需要忽略右侧半身像上的简单图层(切片2)。 将复杂图层的图案分成两部分相当困难,因为半身像的样式各不相同。因此,只需确保该图层被视为复杂图层,即使存在这个部分。 1.2. 将选中的切片排除在复杂图层检查之外。 1.3.忽略图形浮动部分的简单层 这里则相反。即使浮动部分的层是简单的,承载部分仍然需要检测复杂的部分

由于该内容涉及非游戏领域的专业术语且缺乏上下文,无法准确识别为游戏相关内容,根据规则直接删除。但此规则仅对一种情况例外。 1.4. 激活复杂半体检测模式 1.4. 若一对图层上没有相同编号的凹槽,则激活下一个模式。这已是旧的基本规则,但在此基础上新增了上述条款。 2. 复杂半体检测模式 同样需要补充一点: 2.1 多层复杂半体解锁 由于复杂层定义中存在例外情况,复杂半体可能会在完全不需要的地方被检测到:

以防万一,我再提醒一下步骤: 1. 配对1:已选择所选的右侧复杂半部分。 2. 配对2:蓝色部分已从复杂层的检查中排除,因此该层被视为复杂层。激活下一个方案。 3. 配对2:检测到右侧/复杂半部分,因为存在蓝色部分2和绿色部分1。 但这仅仅是问题的开始:

而在这个图形上,第2组已经需要制作右侧/复杂的一半(还有下方的/)。 第1个样本不需要右侧/复杂的一半,但这个已经需要了。 不过两者的图形右侧部分完全相同。 还有第三个:

这里在第2组的右侧/复杂半部分是不需要的。因为这部分可以且需要借助第3组的卡扣来固定。 分析所有样本后可以得出结论,复杂半部分应在以下两种情况下出现: 1. 当其中没有多余部分时。(样本1不符合此条件) 2. 当该“多余”部分上方没有第4层的部分,且它被另一个复杂半部分占据时。(示例2满足此条件,示例3不满足) 2.1. 当不存在外部内部部分,或者外部部分上方没有第4层部分且该外部部分被另一个复杂半体占用时,检测复杂半体。 3. 变体选择规则 第1对不能同时存在垂直和水平复杂半体,而第2对可以。

这与复杂的咬合结构有关,该结构仅在2号及以上配对时有意义。这里存在右侧和下侧的复杂半体。由于它们没有共同的部分,因此是独立存在的。因为这些都是2号配对的图案,所以除非另有说明,否则通常指的是第2层和第3层的复杂半体。因此,需要将所有复杂半体分为两组,使水平模式仅影响相互关联的那些。

3.1. 无相邻垂直项 在此示例中,仅对第1组激活水平模式:

因为不存在可能与下半部分共享份额的复杂半体。也就是说,没有右侧和左侧的复杂半体。 而在第2组中存在右侧半体,它将被默认选中,而非上半部分。 3.1. 如果水平组中不存在任何垂直复杂半体,则该水平组被激活。 3.2. 卡扣/多层

与第一组的同一部分完全类似。仅在图层方面有所调整,此处使用第4层的区块而非第3层的区块。 此外,此处的变体仅为相应组激活水平模式。 3.2. 当所选区块的正上方存在第4层的区块时,选择水平变体。 3.3. 内部变体,与第一组的复杂半组相关联。 选择变体时不仅要向前看,还要向后看。要组装这个模型,需要抓住第一对中的复杂半体。

选择左侧与下方/复杂半部分时,蓝色区块2的存在会产生影响。 3.3. 当两个上方都没有第4层的区块,且水平变体的内部区块下方存在第2层的区块时,选择水平变体。 3.4. 多种变体 有时只需重复之前的选择即可。 在此示例中,第1组选择了上方/复杂半部分,即水平方向的。

并且需要以相同的方向继续组装模型。 3.4. 如果选择了横向模式,则两组都采用横向模式。在此类模型中,分组没有必要,因此可以直接切换所有部分,无需担心。 4. 选定复杂半体的分配方案 在第1对中,存在两个复杂半体意味着模型不会有浮动部分。只是因为这是最开始,而且它们中的每一个都成为了自身部分形态的承载者。如果没有浮动部分,那么复杂图层中就不需要例外。被选中的本身也不需要。 但在第2对中,复杂的一半可能是浮动的:

左侧为浮动部分。右侧为承重部分,且是多层结构的一部分。因此需要补充条件,以便从两者中选择承重部分。 4.1. 若在第2组中只有一个复杂半体,则该半体被选中。 4.2. 若在第1、2、3层中只有一个多层复杂半体,则该半体被选中。此规则将用于第3组的示意图。 第3组 选择第3、4层上的复杂半体。 1.复杂层对判定方案 此处操作与第2对相同。 1.1. 强制排除 从垂直复杂半体检测方案中排除“来自上一对层的复杂半体(ki/ok)的内半体”(即使该层对为复杂层对)。 1.2. 排除所选半体,使其不参与复杂层的检查。 1.3. 强制将所选半体送入相同方向的复杂半体检测方案(即使该层对为简单层对)。4. 如果多层中没有同一编号的凹槽,则激活下一个图案。思考一下在这些图形中,精选多层是如何运作的。

而这个图形的左侧部分不是浮动的:

而所有这些要点对她来说都不适用。她也没有心仪之人。并且第1对和第3对很简单。 你还记得吗,复杂的半块可以通过它们的外部部分直接连接? 2. 复杂半块的检测方案 在这个图形上,多层结构可以更简单地构建:

使用第5层挂钩,该挂钩在第2对中不可用。 2.1. 如果没有外部内部部分,则会检测到复杂的一半。 3. 变体选择方案 在这一对中无需特别处理变体。因为借助奇点机制,可以将变体本身作为坯料制作:

也就是说不用纠结选哪个,直接把两个合二为一。 3.1. 无垂直模式 3.1. 当不存在任何垂直的复杂半体时,水平模式激活。 3.2. 多种变体 3.2. 当选择水平模式时,水平模式激活。 4. 奇点激活方案 需要确定何时需要第5层。 复杂半体的存在意味着图形被分成两部分(并非总是如此)。存在另一个内部部分意味着它处于浮动状态(不确定)。 在第4层有2个以上的部分,并且在第3对中至少有一个复杂的半部分。这不是理想条件。在某些情况下,本不需要激活的方案也会被激活。但由于这不会造成任何问题,我也就无所谓了。