精华内容
下载资源
问答
  • 像素绘画应用-源码

    2021-02-17 08:32:23
    像素绘画 用户可以在其中为像素着色并在3x3网格上创建绘画 此仓库包含客户端React应用程序。 寻找后端像素绘画API? 介绍 用户可以创建或查看任何现有的绘画。 可以从10种颜色的调色板中选择颜色。 每幅画都有9个...
  • Godot_3.2.2像素绘画应用程序,适用于Windows,Mac和Linux 您将需要Godot 3.1.1-Stable才能运行此项目,或者可以在“发行版本”中下载导出的应用程序图像-> [成品特征] [X]用鼠标右键进行基本绘画,擦除,颜色...
  • 本项目基于Python+Pygame实现了一个动态像素画绘图工具

    动态像素绘画——StarDust

    对绘画的思考:

      最早的绘画起源远古人类对于事物的记录,在漫长的发展过程中,绘画由最初的注重外在,而向事物内在进行探寻。从单纯的记录到表达情感,传递思考。因此我选择了用星尘StarDust这个亘古不变的题材,串联起远古和现在,希望使用者能轻松的创作这样一幅星尘的画作。

    设计思路

    (1)精简交互的机制。为了让绘画内容颜色和大小能与整体相匹配,我没有使用调色板和画笔大小调整功能,而是跟随用户鼠标随机生成预制的图案。
    (2)亲和的画面。为了让整个画面更加亲和,而且减少程序的运算效率,我选择了像素这样一种形式,而且图案绘制很方便,在以后可以继续绘制更多图案,丰富程序内容,有较好的拓展性。
    (3)音乐与绘画过程的融合。在实际的绘画过程中,我加入了音乐播放的功能,宁静的音乐中,使用者的绘画会有更强的沉浸感。

    实现过程 

    笔刷类

        用Drawing判断是否开始绘画,开始绘画时生成随机数,判断此时生成那种图案,并且为了避免行星图案过于密集,因此通过随机数对其出现次数进行限制

    #笔刷类
    class Brush (object):
    	def __init__(self,screen):
    		self.drawing = False
    		self.screen = screen
    		self.brush_group =pygame.sprite.Group()
    #开始绘图
    	def start_draw (self,pos):
    		self.drawing = True
    #绘图过程
    	def draw(self, pos,drawflag):
    		if drawflag == 0:
    			if self.drawing:
    				chose = randint(0,4)
    				chose2 = randint(0,50)
    				if chose == 0:
    					brush = Star_1(pos)
    					self.brush_group.add(brush)
    				elif chose ==1:
    					brush = Star_2(pos)
    					self.brush_group.add(brush)				
    				elif chose ==2:
    					brush = Star_3(pos)
    					self.brush_group.add(brush)	
    				elif chose ==3:
    					brush = Star_4(pos)
    					self.brush_group.add(brush)					
    				elif chose ==4:
    					if chose2 == 0:
    						brush = Sun_1(pos)
    						self.brush_group.add(brush)	
    					if chose2 >0 and chose2 <=3:
    						brush = Sun_2(pos)
    						self.brush_group.add(brush)
    					if chose2 >3 and chose2<6:
    						brush = Sun_3(pos)
    						self.brush_group.add(brush)
    					if chose2 >6 and chose2<10:
    						brush = Sun_4(pos)
    						self.brush_group.add(brush)
    #结束绘图				
    	def end_draw(self):
    		self.drawing =False

      星星类 

        继承了pygame.sprite.sprite类,用于让每个星星进行向上移动,初始化图片,碰撞体积,速度

    class Star (pygame.sprite.Sprite):
    	def __init__(self, initial_position,star_surface):
    		pygame.sprite.Sprite.__init__(self)
    		self.image = star_surface
    		self.rect = self.image.get_rect()
    		self.rect.topleft = initial_position
    		self.speed = 1
    	def update(self):
    		self.rect.top -= self.speed
    		if self.rect.top < 0:
    			self.kill()

    星星1

      继承星星父类,初始化三张图片,并根据程序帧数变换更新图片,让图片动起来。

    class Star_1(Star):
    	def __init__ (self,initial_position):
    		self.star_surfaces = [pygame.image.load("star2_1.png"),
    									pygame.image.load("star2_2.png"),
    									pygame.image.load("star2_3.png")]
    		self.r = randint(0,2)
    		self.flag = 0
    		Star.__init__(self,initial_position,self.star_surfaces[self.r])
    		
    	def update(self,tick):
    		Star.update(self)
    		tick = tick//(ANIMATE_CYCLE//3 )
    		if self.flag != tick :
    			self.r +=1
    			self.flag  = tick
    		if self.r >=3:
    			self.r = 0
    		
    		self.image = self.star_surfaces[self.r]

    Painter类

      初始化,窗口大小,帧数计数

    class Painter(object):
    	def __init__(self):
    		self.screen = pygame.display.set_mode((800, 600))
    		pygame.display.set_caption("Star Dust")
    		self.brush = Brush(self.screen)
    		self.clock = pygame.time.Clock()
    		self.ticks = 0 #帧数计数

     计数器更新,监控鼠标事件,更新图片

    	def run(self):
    		mouse =pygame.image.load("rock.png")
    		
    		self.screen.fill((24, 20, 37))
    		while True:
    			self.screen.fill((24, 20, 37))
    			self.clock.tick(FRAME_RATE)
    			self.ticks +=1
    			for event in pygame.event.get():
    				if event.type == QUIT:
    					
    					return
    				elif event.type == KEYDOWN:
    					if event.key == K_ESCAPE:
    						self.screen.fill((24, 20, 37))
    				elif event.type == MOUSEBUTTONDOWN:
    
    					self.brush.start_draw(event.pos)
    
    				elif event.type == MOUSEMOTION:
    					r = randint(0,2)
    					self.brush.draw(event.pos,r)
    					pass
    				elif event.type == MOUSEBUTTONUP:
    					self.brush.end_draw()
    
    			if self.ticks >= ANIMATE_CYCLE:
    				self.ticks = 0
    			self.brush.brush_group.update(self.ticks)
    			self.brush.brush_group.draw(self.screen)
    			
    			pygame.display.update()
    

     

     

     

     

    展开全文
  • 好用的像素图编辑器Aseprite在stream卖70RMB,但是官方在Github上提供了源代码,可以免费获取。 为了避免大家剁手购买,本教程介绍自己编译Aseprite的方法,总结一下自己走的弯路。 准备工作 获取Aseprite源码 ...

    自己编译免费Aseprite

    保护手腕,从我做起

    好用的像素图编辑器Aseprite在stream卖70RMB,但是官方在Github上提供了源代码,可以免费获取。
    Aseprite在Stream的售价
    为了避免大家剁手购买,本教程介绍自己编译Aseprite的方法,总结一下自己走的弯路。

    准备工作

    • 获取Aseprite源码
      打开Aseprite下载地址,下载最新版源代码的压缩包,解压。
      下载Aseprite源代码

    • 安装Visual Studio 2019和Windows 10 SDK(10.0.18362.0)
      下载并打开vs_community,进入Visual Studio安装界面,安装使用C++的桌面开发
      必须安装
      进入单个组件,左上角搜索windows,在SDK、库和框架里有Windows 10 SDK(10.0.18362.0。然后点击右下角的修改(不过由于我之前已经安装过了,所需空间可定不是51M)。
      在这里插入图片描述如果你有兴趣的话,可任意安装其他的模块或者组件。

    • 安装CMake
      CMake下载地址(这个网站打开有点慢)根据自己电脑的系统选择对应的软件版本。我的电脑是Windows10 64位系统,就下载64位安装版,如下图。如果是32位系统,就下载Windows win32-x86 Installer。如果不知道自己电脑是多少位的,就用32位的。一般,新电脑(大概五六年内的电脑都算新电脑)都是64位系统。
      CMake64位安装版
      安装进入这个界面时选择Add CMake to the syetem PATH for all users。然后下一步直到安装完成。这样CMake就安装完成了。在这里插入图片描述

    • 下载Ninja
      Ninja下载地址(这是Ninja的Github地址,在这里下载Ninja)
      Ninja官网
      对于Windows用户下载Ninja-win.zip即可。下载之后解压。
      在这里插入图片描述

    • 下载Skia
      Skia下载地址
      相同的方法下载并解压Skia。32位系统下载x86版本,图中红色方框下面一个压缩包。
      在这里插入图片描述

    编译Aseprite

    1. 将Aseprite源码、Ninja和Skia放在同一个文件夹方便使用。如下图:
      在这里插入图片描述

    2. 打卡Cmd,输入cmake --version测试CMake是否安装成功。如果显示的版本与你下载的版本相同(前面我下载的是3.18.2版本),则CMake安装成功。

    3. 进入Aseprite目录,输入指令cd Aseprite的目录。如我的目录是 C:\Users\xiang\Downloads\ase\Aseprite-v1.2.25-Source,就输入 cd C:\Users\xiang\Downloads\ase\Aseprite-v1.2.25-Source
      新建一个文件夹build,输入指令md build,当然也可以点击右键新建文件夹,重命名为build
      进入build文件夹,cd build
      在这里插入图片描述

    4. 输入指令 call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\Tools\VsDevCmd.bat" -arch=x64,如果你的电脑是32为系统,将最后一个参数 -arch=x64改成-arch=x86。指令执行之后显示红色方框里的内容时表示调用Developer Command Prompt for VS 2019程序成功。
      在这里插入图片描述

    5. 输入指令cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo -DLAF_BACKEND=skia -DSKIA_DIR=Skia的路径 -DSKIA_LIBRARY_DIR=Skia的路径\out\Release-x64 -DSKIA_LIBRARY=Skia的路径\out\Release-x64\skia.lib -G Ninja ..
      其中,将Skia的路径改成你的Skia所在的位置。如下图是我的Skia路径,将Skia的路径改成C:\Users\xiang\Downloads\ase\Skia-Windows-Release-x64,改后的指令就是
      cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo -DLAF_BACKEND=skia -DSKIA_DIR=C:\Users\xiang\Downloads\ase\Skia-Windows-Release-x64 -DSKIA_LIBRARY_DIR=C:\Users\xiang\Downloads\ase\Skia-Windows-Release-x64\out\Release-x64 -DSKIA_LIBRARY=C:\Users\xiang\Downloads\ase\Skia-Windows-Release-x64\out\Release-x64\skia.lib -G Ninja ..
      然后,等待编译完成。

    6. 输入指令Ninja aseprite,要将Ninja换成他实际所在的位置。可以选中ninja.exe,按住Shift点右键,选择复制为路径,在Cmd中点右键粘贴,去掉双引号,如C:\Users\xiang\Downloads\ase\ninja-win\ninja.exe aseprite
      在这里插入图片描述
      等待执行完成,那么编译工作就完成了。

    结束

    文件夹build中的bin文件夹内的程序就是软件本体了。可以把它单独的复制到其他位置使用。bin文件夹中的aseprite就是可执行程序了,双击即可运行软件。
    在这里插入图片描述

    注意事项

    1. CMake版本必须在3.14版本及以上,否则编译不会成功
    2. 由于Aseprite的源码不支持MinGW,所以需要将MinGW从环境变量中删除,以免影响编译。编译完成后可以再加回来。
    展开全文
  • 自制像素无缝纹理平铺绘画工具,用于独立游戏平铺纹理制作
  • evilpixie:面向像素绘画程序,以Deluxe Paint为模型
  • iOS 绘画 点与像素

    2020-08-04 17:40:14
    iOS 像素与点 像素与点的关系 导入标的时候,我们都知道有1倍、2倍、3倍图。对应在1倍、2倍、3倍屏幕上使用。 那这些不同倍图(不同分辨率屏幕)与日常点的关系是什么了。 1倍屏: 1个点(point)对应1个像素(piexl...

    iOS 像素与点

    像素与点的关系

    导入标的时候,我们都知道有1倍、2倍、3倍图。对应在1倍、2倍、3倍屏幕上使用。

    那这些不同倍图(不同分辨率屏幕)与日常点的关系是什么了。

    1倍屏: 1个点(point)对应1个像素(piexl),比如第一批 iPhone

    2倍屏: 1个点(point)对应4个像素(piexl),横竖各3列,比如 iPhone6

    3倍屏: 1个点(point)对应9个像素(piexl),横竖各3列,比如iPhone6Plus

    像素示例图如下

    Alt

    红色矩形表示一个点, 不同倍屏对应不同像素点。

    在日常开发中,我们大部分只需要关注 point, 由系统去帮我们处理像素转化。

    绘制1像素的线条

    想不明白?

    mport UIKit
    
    class ViewWithBottomLine: UIView {
        @IBInspectable var separatorColor: UIColor = Your default color
    
        override func draw(_ rect: CGRect) {
            super.draw(rect)
    
            guard let context = UIGraphicsGetCurrentContext() else {
                return
            }
    
            let scale = UIScreen.main.scale
    
            let width = 1 / scale
            let offset = width / 2
    
            context.setLineWidth(width)
            context.setStrokeColor(separatorColor.cgColor)
            context.beginPath()
            context.move(to: CGPoint(x: 0, y: rect.maxY - offset))
            context.addLine(to: CGPoint(x: rect.maxX, y: rect.maxY - offset))
            context.strokePath()
        }
    }
    

    绘制一像素需要设置偏移量。

    参考:https://www.jianshu.com/p/abcb18335e44

    警惕奇数线条

    虽然在开发中,我们只需要关注逻辑像分辨率(point),但是如果遇到奇数(宽高)线条在绘制的时候也可能产生锯齿现象。

    比如当宽度为3的线条居中时,就需要调整偏移量,保证线条不发生锯齿。

    Alt

    发生锯齿原理

    Alt

    修正做法, 添加0.5的偏移量,和宽度。

    let halfPointShift: CGFloat = 0.5
    //to the start of the horizontal stroke
    plusPath.move(to: CGPoint(
      x: halfWidth - halfPlusWidth + halfPointShift,
      y: halfHeight + halfPointShift))
        
    //add a point to the path at the end of the stroke
    plusPath.addLine(to: CGPoint(
      x: halfWidth + halfPlusWidth + halfPointShift,
      y: halfHeight + halfPointShift))
    

    参考

    Drawing and Printing Guide for iOS

    CoreGraphic实现自定义按钮和轮盘-raywenderlich

    抗锯齿处理: (针对图片旋转产生锯齿)1.开启 UI 控件的抗锯齿功能 2. 绘制带有一像素的透明边的图片 3. 使用更清晰的像素。

    展开全文
  • Sprite生产的几个阶段。 即草图,线条图,底纹,区域上色和索引。... 在“游戏的机器学习辅助资料生成:像素绘画Sprite表格研究”中,我们探索了Pix2Pix架构来自动生产Sprite的流程,将每个Sprit...

     

    Sprite生产的几个阶段。 即草图,线条图,底纹,区域上色和索引。

    上面的图片来自Trajes Fatais:Feats of Fate游戏,我作为首席开发者从事该游戏的制作。 长话短说,每个精灵要绘制大约一小时,每个角色平均要绘制五百个精灵。 在“游戏的机器学习辅助资料生成:像素绘画Sprite表格研究”中,我们探索了Pix2Pix架构来自动生产Sprite的流程,将每个Sprite花费的平均时间减少了15分钟(〜25%)。 这是我们首次发表的有关精灵生成的工作,我们希望在将来进一步改进它。

    该论文获得了2019年巴西游戏与数字娱乐研讨会(SBGames 2019)的最佳论文奖。

    像素绘画是视频游戏中最受欢迎的美学之一。 它致力于重现任天堂和Arcade旧游戏的外观。 在90年代,像素绘画是大多数游戏机的唯一选择。 屏幕分辨率有限,并且大多数设备无法实时执行高级技术。 如今,像素绘画已成为一种选择-一种昂贵的选择。

    为了实现街机游戏的外观和感觉,绘画者必须受颜色数量限制。 最初的Game Boy只有四种绿色。 它的继任者Game Boy Color可同时显示多达56种不同的颜色。 后来的设备称为16位生成器,每个像素点最多允许256种颜色,这是美学上的重大突破。 在我们的游戏中,我们限制为每个角色256个颜色。

     

    每个像素点都有自己的256种颜色

    通常,像素点是“索引精灵”与“调色板”的混合体。 绘画时,绘画者使用与调色板的256种颜色之一相关的“索引”对每个像素进行着色。 在游戏中,每个索引精灵都用其关联的颜色替换,从而构成最终图像。 此过程使设计人员可以为每个角色创建不同的“皮肤”,从而允许用户自定义其体验并为角色创建“邪恶”版本。 下图描绘了索引精灵,调色板和渲染的混合。

     

    索引精灵,调色板和渲染

    将绘画者的颜色选择限制为256种是不科学的。 这使得选择阴影很难。 为了简化此任务,在语义上对工作进行了划分。 在我们的通道中,生成了两个中间的精灵:“阴影”精灵和“区域”精灵。 前者最多使用6个选择来表示“灯光”,而后者最多使用42个选择来表示精灵的“区域”,例如手臂,头发,腿等。将两个精灵像素相乘 -之后我们获得了索引精灵,它最多可以支持252种颜色(6 * 42)。 下图显示了阴影,区域和索引精灵的示例。 此过程将256色问题转换为两个简单的子问题,每个子问题分别具有6和42色。

     

    从左到右,阴影,区域和索引精灵。

    最终,每个角色都是由一个人设计的,他这将为其所有动画进行绘制。 它们以“草图”子图形显示,后来又被精炼为“艺术线条”子图形。 前者用于在游戏中快速制作新动画的原型,后者用于与其他绘画者交流最终精灵的外观。 这样,设计人员可以在几天内概念化整个角色,并将其余工作外包给绘图团队。 以下是草图和艺术线条精灵的示例:

     

    草图和艺术线条

    设计师将所有动画放在一起,通过绘制每个动画的草图,然后制作各自的艺术线条来创建角色。 这些线型精灵将按顺序传递给绘图团队,后者将绘制它们的着色和区域。 最后,使用脚本将两者结合起来以生成可用于游戏的索引精灵。

    总共大约需要一个小时。 草图,线条图和区域精灵的制作平均需要10分钟,而阴影则需要花费其余时间才能完成。 跟踪每个图纸花费的确切时间几乎是不可能的。 为了计算它们,我们检查了生产日志,采访了团队,并以可控的方式测量了12个精灵的绘制步骤。

    假设使用机器学习模型可以生成阴影和彩色图片,那么生成的精灵必须足够好,以至于人类绘画者可以用比从头开始绘制更少的时间来完善它。

    生成对抗网络入门

    在这项工作中,我们解决了两个图像映射问题:线条到阴影和线条到区域。 形式上,我们必须创建一个生成器G(x),该生成器从线条艺术中接收输入,并在阴影/区域中生成输出。 此问题也称为图像翻译。

    为了保证G(x)是有用的映射,我们将创建一个鉴别器D(x,y),该鉴别器查看x和y并说明y是否是一个优质子画面。 换句话说,G是我们的“虚拟艺术家”,D是我们的“虚拟鉴赏家”。 如果我们能让G使D开心,那么我们就有一个有用的映射。

    更详细地说,考虑一下我们有几个线条艺术精灵(x)以及已经绘制的人类绘画者的阴影和区域精灵(y)。 我们知道这些通过了质量控制,因此D(x,y)将很高兴。 现在我们的任务是训练G给定x产生ŷ(对实y的模仿)。 如果复制良好,D将批准ŷ; 否则,它将予以谴责。 最后,我们会修正D的对与错,并要求D提供有建设性的反馈。

    我刚刚描述的过程称为对抗训练。 从某种意义上说,两种模式“竞争”,一种正在试图击败另一种。 在我们的案例中,G试图击败D使其认为ŷ是y,而D则拼命试图说出什么是真实的,什么是假的。 随着时间的流逝,G将成为成功的艺术家,而D可能会被解雇。

    通过使用神经网络实现G和D,我们得到了所谓的生成对抗网络。 将标题分解为“条件”是因为G接受x而不是随机噪声作为输入,“对抗”是因为它训练对手成为输入器,而“网络”则是(神奇!)神经网络 。

    从算法上来说,对于每个线条艺术x和阴影/区域精灵y:

    1. 使用G从x生成ŷ
    2. 使用D评估ŷ是否看起来逼真
    3. 使用y和D的反馈来训练G
    4. 训练D认识到ŷ是假的而y是真的。

    多次对整个数据集重复执行此过程,最终将融合为一个G网络(创建逼真的绘画)和一个D网络(无法分辨出图像是真实的或伪造的)。

    Pix2Pix架构

    Pix2Pix体系结构为基于U-Net生成器和基于补丁(Patch)的鉴别器。 下图显示了组合的体系结构。 鉴别器经过训练,可将每个32x32图片分类为真实或伪造,并经过交叉熵损失训练。 反过来,训练生成器以使y和ŷ之间的L1损失最小,并使鉴别器损失最大。

     

    高级Pix2Pix架构。

    U-Net模型是基于编码器-解码器思想的全卷积神经网络。 对于每个编码器层,将跳过全连接添加到解码器层。 这允许网络利用来自编码层的“原始”信息和通过解码器层的“已处理”信息。 这里给出了该体系结构及其相应出版物的全面概述。

    鉴别器是一个截断的网络,输出对多个补丁图像的判断,而不是对整个图像的判断。 因此,鉴别器向生成器提供详细的反馈,指出哪些区域看起来是真实的,哪些区域看起来是伪造的。 可以在此处找到该体系结构内部细节的完整概述。

    与原始网络相比,我们进行了以下更改:

    1. 我们使用了Y型网络。 一个编码器,两个解码器和两个鉴别器。 这样一来,即可解决阴影和区域问题。
    2. 使用分叉架构,每个分支都有两个损失。 同样,我们使用L2范数代替L1范数,因为它显示出更好的结果。
    3. 原始论文使用LeakyReLU单位。 我们使用了ELU单位。
    4. 在编码器中,我们对每次下采样使用了两次卷积运算,而不是一次卷积。

    数据集

     

    在Trajes Fatais游戏中,我们选择了Sarah和Lucy角色作为数据集,以评估Pix2Pix体系结构。 莎拉(Sarah)角色只有87个完成的精灵,还有207个需要绘制。 它也是一个中等复杂的图片,具有多个平滑复杂的区域。 另一方面,露西(Lucy)角色已完成,因此它具有530个完全绘制的精灵,并且非常容易绘制,具有大部分平滑的特征。

    从某种意义上说,露西是我们的上限。 它具有我们希望得到的所有数据,并且很容易绘制。 如果该算法无法处理露西,那么其他任何数据都可能会失败。 相比之下,莎拉是我们常见的情况:一个中等复杂的人物,只有几十个精灵可以训练。 如果算法对莎拉有用,那么它可能对我们有价值。

    结果

     

    可以看出,该算法对于阴影问题和区域精灵的问题具有很好的结果。 因为颜色变化了,并且精灵周围有一些噪声。 对于着色精灵,只检测到了较小的问题,例如第二行中的肩膀和腿部。

     

    在第二批中,可以找到更多问题。 在生成的阴影列中,可以在阴影区域看到许多伪图像,例如在女孩(第一个行),鸭嘴兽的背部(第2行)和鸭嘴兽的喙(第3行)上。 对于彩色画面,会存在大量噪声,使这些子画面无法使用,因为人类很难去除噪声。

     

    第三批的作品来自207个精灵,仅提供艺术线条。 因此,这些需要主观分析来评价效果。 这些行分别由类似于训练中使用的子图形,以前不曾看到的精灵的子图形和其他精灵的子图形组成。

    尽管第一行最有用,但是第二和第三行上的彩色图像会迅速恶化。 着色精灵的质量基本保持一致。 但是,着色精灵的第三列不一致。 第二行中的正面小精灵的脸应更亮,并且右下角的小精灵的亮度不连续。

    现在,我们可以确定的假设着色精灵可以使用,但是区域精灵却不能使用,因为它们噪声太大并且存在色移问题。 让我们将注意力转移到露西。

     

    露西精灵的数据多了五倍,与莎拉相比改善更加明显。 阴影精灵几乎完美,阴影区域的毛发很小,头发的差异可忍受。 但是,区域精灵仍然远非最佳。 色移问题和噪点仍然存在。 这表明增加数据集大小并不能使这些问题得到明显改善。

     

    第二批包含我们手动选择的精灵,因为它们与大多数其他精灵有很大的不同。 尽管如此,阴影精灵仍然与人类绘制的精灵几乎相同。 彩色图像的质量也并没有像莎拉一样严重下降。 但是,它仍然远远达不到理想的结果。

    考虑到这些结果,可以说增加数据集的大小可以显着改善阴影,但不能改善区域。 由于露西是我们的最佳情况,因此可以假设我们需要另一个问题表述/体系结构来解决区域精灵问题。

    为了更客观地量化所生成内容的质量,我们计算了两个数据集的MSE,MAE和SSIM分数。

     

    从表中可以看出,在所有这三个指标上,阴影精灵的均值(μ)和方差(σ²)比彩色图像更好。 同样,75%的四分位数与最大可见值之间的差异很大,这表明分布偏斜。

    此外,露西(Lucy)的结果始终好于莎拉(Sarah)的结果,其方差低得多,而且歪斜度也大大降低。

    SSIM评分的范围从0(完全不相似)到1(完全相同),并衡量两个图像的感知相似度。 虽然MSE和MAE纯粹是数学概念,但SSIM分数与人类感知更加相关。 在表中,阴影精灵的得分接近1,表明它们与平均观察者几乎相同,而彩色图像则并非如此。

    作为第三次也是最后一次评估,我们要求设计团队对207个为莎拉生成的精灵进行评论。 他们的反馈意见大多是积极的,称赞了着色精灵的质量并丢弃了彩色精灵。 总之,他们发表了四点评论:

    1. 几乎一半的着色精灵有用,可以在20到30分钟内完善。 彩色精灵不可用。
    2. 该算法在单个动画中效果不稳定,这可能会使子画面失效。
    3. 某些姿势下即使是着色精灵也会产生可怕的结果。
    4. 将色彩数量固定为使用6和42种颜色时,会引入一些不必要的噪音。
    • 2、3和4。

     

    八帧动画中的身体明亮度不一致

     

    使用与训练中使用的姿势相差太大的姿势会产生较差的结果。

     

    在量化为6和42种颜色数量时,会引入一些噪音。 在轮廓中可以很容易看到。

    结论

    在这项工作中,我们评估了使用现代生成模型来解决像素艺术生成问题的效果。 即,我们采用了改进的Pix2Pix架构,取得了一定程度的效果。 更详细地讲,着色精灵被艺术团队认为是有用的,而彩色小精灵则被认为是无用的。

    对于着色精灵,团队提出平均需要20到30分钟来完善每一个精灵,比从头开始绘制一个要少10到30分钟。 保守的估计是,每个有用的精灵都会节省10分钟的劳动时间,这意味着生产力提高了约15%。

    尽管具有更多的颜色,但对于设计团队而言,区域精灵所花费的时间并不多于着色精灵。 正如首席美术师所解释的那样,动画中的区域更容易预测,并且可以轻松地从一个精灵复制到另一个精灵。 因此,不生成它们不是大问题。

    从技术角度来看,这项工作证明了当前模型可以有效地用作创造性任务的助手。 其他动漫领域也发现了类似的结论,动漫领域主要是由平坦而丰富的颜色组成,并且比像素艺术具有更少的限制。 此外,Pix2Pix模型适用于现实世界的图片,也适用于像素艺术和动漫数据,这证明了其普适性。

    未来的工作

    我们当前的系统基于Pix2Pix模型,基于像素。 但是,我们的问题可以根据图像分割名词来表述为按像素分类。 这样的思路可能会大大改善我们的结果。

    有时,简化问题可能使其更易于处理。 区域精灵共有42种颜色,但每个精灵仅出现大约十二种颜色,并且这些颜色占据所有精灵中很大一部分。 将问题缩小为更具选择性的阴影可能会减轻生成器的工作压力。

    Pix2Pix创始于2017年。自那时以来,GAN取得了一些进步,包括更好的损失函数,注意力机制和改进的方法。 使用更先进的技术可能会大大改善结果。

    U-Net和Pix2Pix的参考资料

    O. Ronneberger, P. Fischer, and T. Brox, “U-net: Convolutional networks for biomedical image segmentation” 2016

    P. Isola, J.-Y. Zhu, T. Zhou, and A. A. Efros, “Image-to-image translation with conditional adversarial networks” 2017

    作者:Ygor Rebouças Serpa

    deephub翻译组:孟翔杰

    展开全文
  • 快乐画 用于像素到UV绘画的纹理生成器 只需将HappyPaint.cs脚本添加到展开的对象中即可。
  • 摘要:零基础怎么学画画?像素画和绘画的本质关键词:像素画,绘画,本质,规律,方法作者:喵柒柒始于临摹终于创作本人从2012年开始思考并实践怎样教0基础新人学像素画,到目前为止还是没有比较...
  • 今天小编就为大家分享一篇关于易语言画板的绘画单位与像素单位相互转换的方法,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
  • 像素画app是一款非常不错的休闲解压像素绘画涂鸦画板,轻松画图软件,支持自由创作,像素拼装,作品云集,可爱的清新的,都可以,喜欢的可以下载像素画app是体验!软件简介创作只属于你的像素画,0基础也能轻松绘画...
  • Aseprite 作为专业的像素绘画工具,它不同于我们常用到的 Photoshop 等,Aseprite 体积比较小,整个界面 UI 也以像素风格设计,功能上也是非常强大。当然大眼仔也给大家分享过日本的一款像素画绘制工具,它就是 ...
  • 在 Graphics 中绘画一张320x240的图片,然后在图片上面画一条白色线,代码效果如下: private void pictureBox1_Paint(object sender, PaintEventArgs e) { //画图片 Image image = new Bitmap("d:\\...
  • 这是一款精简而纯粹的超人气像素绘画工具,但Steam上70元的售价让许多人难以接受,可它不是有github的开源版本嘛,咱们自己编译一下不就OK了?Aseprite官网:https://www.aseprite.org/Aseprite官方编译指南:...
  • 像素画材质球练习文 | 三二 (转载请注明出处)关注公众号:教你画像素...为了学习和提高绘画效率,有不少像素画家会练习各种不同的材质球。对像素画新手来说,这些材质球都是非常好的参考和学习资料。材质球画法步...
  • 电脑绘画软件哪个好?初学漫画怎么选择绘画软件?_漫画培训_绘画培训 这应该是困扰很多漫画小白的问题了吗?初学漫画、绘画应该选择哪一种数字绘画软件?...以处理像素所构成的数字图像为主,深受广大平面设计人...
  • 点、线、矩形、多边形、椭圆、圆弧绘制:imagesetpixel() 绘制像素点。imageline() 绘制一条线。imagerectangle() 绘制矩形。imagefilledrectangle() 在图像上绘制填充的矩形。imagecolorsforindex() 取得某索引的...
  • 如果你想做像素画师那么建议Aseprite这个软件注意 画角色或者怪物画布最好不要超过50x50 背景的话背景最好不要超过200x400 不用担心不够大因为这个软件file里有个Export这个选项可以比例方法还有就是像素画主要讲究...
  • 像素画师 简单的绘画程序
  • 制作像素风游戏

    千次阅读 2018-04-29 15:31:51
    怎么制作像素风游戏——从绘画开始非常经典的像素画系列教程
  • 1.和其他绘画形式一样,首先需要大量时间进行练习。2.新手在练习时建议控制颜色数量,一来画面干净美观,二来有利于提高对色彩的把握。(像素画画布较小,使用太多颜色很容易糊成一团)3.学习如何排列像素点能减少曲线...
  • 投在绘画区嘞(勿喷)就是来四个画像素的软件,有啥问题可在评论区说,有一些可能说的很不清楚 PS:我说的不好,大可的评论区里说,第一次写专栏软件,别管猫和老鼠1:八位元画家(首推)有不少颜色,是指绘,画板最大有...
  • Vue像素艺术 Vue Pixel Art是绘制Pixel Art并从中生成CSS代码的简便方法。 该项目是从重构的 积分: 使用说明 单击一个正方形进行绘制。 如果已经绘制过,该正方形将再次透明。 按住鼠标并将鼠标拖动到网格中的...
  • 像素绘画图形控件。
  • Mischief是一款绘画软件,之前为大家提供了一款是电脑版的,现在这款是苹果版,这是一款非常不错的素描绘画工具,喜欢的朋友抓紧下载...使用一个革命性的新的笔画系统,可扩展性丰富的基于像素的笔刷和矢量工具,缩放到
  • 像素Craft.io 使用HTML5画布构建的像素艺术与动画创建工具。 它是具有脱机兼容性的渐进式Web应用程序(PWA)。 它对移动设备友好,并且非常易于使用。 总览 在以下两个位置均可使用此应用程序: 打开后,您将看到...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 435
精华内容 174
关键字:

像素绘画