遮罩,顾名思义是一种可以掩盖其它元素的控件.常用于修改其它元素的外观,或限制元素的形状.比如ScrollView或者圆头像效果都有用到遮罩功能.本系列文章希望通过阅读UGUI源码的方式,来探究遮罩的实现原理,以及通过Unity不同遮罩之间实现方式的对比,找到每一种遮罩的最佳使用场合. 本文是UGUI遮罩系列的第三篇,也是最后一篇.前两篇分别是对Mask和RectMask2D的源码分析,详细解读了它们的原理与实现细节.这次的侧重点是对Mask和RectMask2D做一个对比分析,同时总结一下在Ma…
遮罩,顾名思义是一种可以掩盖其它元素的控件.常用于修改其它元素的外观,或限制元素的形状.比如ScrollView或者圆头像效果都有用到遮罩功能.本系列文章希望通过阅读UGUI源码的方式,来探究遮罩的实现原理,以及通过Unity不同遮罩之间实现方式的对比,找到每一种遮罩的最佳使用场合. Unity UGUI主要提供两种遮罩,分别是Mask和Rect Mask 2D.在2D游戏开发中,可能还会用到Sprite Mask,虽然不是本文的重点,但后面也会提到.原本是希望将对各个遮罩的分析与对比整合在一篇…
遮罩,顾名思义是一种可以掩盖其它元素的控件.常用于修改其它元素的外观,或限制元素的形状.比如ScrollView或者圆头像效果都有用到遮罩功能.本系列文章希望通过阅读UGUI源码的方式,来探究遮罩的实现原理,以及通过Unity不同遮罩之间实现方式的对比,找到每一种遮罩的最佳使用场合. 本文是UGUI遮罩系列的第二篇,专门解读RectMask2D遮罩.第一篇是[UGUI源码分析]Unity遮罩之Mask详细解读,对Mask感兴趣的同学可以跳转过去看一下.后续还会有Rect Mask 2D和Mask…
https://www.sohu.com/a/169409304_280780 Unity 2017.1正式发布后,带来了一批能帮助大家更加简化工作流的新功能.今天这篇文章,将由Unity技术经理成亮,为大家介绍其中两个精灵相关的重要功能:Sprite Atlas(精灵图集)与Sprite Mask(精灵遮罩). Sprite Atlas(精灵图集)用于替换现有的Sprite Packer,让制作图集(Atlas)的过程更加便利和高效.Sprite Mask (精灵遮罩)用于显示一个或一组Spr…
自制Unity小游戏TankHero-2D(4)关卡+小地图图标+碰撞条件分析 我在做这样一个坦克游戏,是仿照(http://game.kid.qq.com/a/20140221/028931.htm)这个游戏制作的.仅为学习Unity之用.图片大部分是自己画的,少数是从网上搜来的.您可以到我的github页面(https://github.com/bitzhuwei/TankHero-2D)上得到工程源码. 本篇主要记录关卡解析器.小地图图标和对碰撞的原理的探索,需要耐心分析. 关卡解析器 在…
public Class Panel_ATMRechage : IPanel{ private Dictionary<string,UISprite>mSprites; } protected override void OnAwake() { mSprites = UI.GetUIElement<UISprite>(transform); UIEventlistener.Get(mSprites["Mask"].gameObject).onClick = On…
一.Body Mask的使用 1.1.配置好骨骼后通过Muscles来微调角色骨骼中的运动范围,以避免角色在动画中的不正确的叠加或失真等现象. 1.2.身体遮罩BodyMask更形象的描述就是身体的开关,可以关闭或打开身体某些部分就可以起到改变输入的动画片段的播放效果.主要运用在输入角色的性编辑器中以及动画层中. 1.3.选择角色来到Animations动画片段标签,在动画片段中可以指定其范围以及播放,动画片段的微调. 1.4.身体遮罩的优点:可以控制或调节动画的效果.可以减少角色中动画曲线的数…
很多都是使用NGUI的习惯,因为在NGUI中所有图片都打包在一个图集中,通过更改SpriteName就可以更改图片,so,为了方便调用UGUI的sprite,我们也同样需要为其创建一个asset文件. 其实这个功能相当软肋,既然想到写,还是写出来吧,偶尔用于切换图片或者动态加载之类的还是有点意思 首先准备一张图片 为我们准备创建的asset文件写一个脚本,他需要继承ScriptableObject,同时我们需要存储一些其他信息,所以需要一个信息脚本,这里需要将信息转为一个资源文件,所以需要使用[…
import cv2 as cv import random import glob import os from PIL import Image import shutil def get_samples(foldername, savePath): print('savePath:', savePath) if os.path.exists(savePath) is False: os.makedirs(savePath) filenames = os.listdir(foldername…
场景,顾名思义就是我们在游戏中所看到的物品.建筑.人物.背景.声音.特效等,基本上和我们玩游戏时所看到的游戏“场景”是同一个概念. Unity 3D中,“场景”是一个视图,我们通过“场景”这个视图,来编辑.布置游戏中玩家所能见到的图像和声音. 安装完并运行Unity 3D,会缺省打开一个AngryBots项目.我们在“Scene”视图中,就可以直接看到一个场景: 这个场景中的物件,会在Hierachy视图中通过层级关系列出来: 从上面这个层级关系我们看到,这个场景包括了:敌人.玩家.动态环境.静…
BehaviorDesigner是Unity上的一款行为树插件,不过这个插件是用C#编写的,编写出来的行为树也是依赖于C#的,不利于热更,所以有必要写一个lua版本的. 首先下载BehaviorDesigner这个插件,其中部分源码编译在Behavior Designer\Runtime\BehaviorDesignerRuntime.dll中,可以使用.NET Reflector这个工具进行反编译,然后将反编译后的类文件保存,然后用VS打开,就可以方便地查看源码啦.这个插件是自带pdf文档的,…
首先打开EasyAR的官方网站http://www.easyar.cn/index.html,注册登陆之后,打开首页的开发页面. 下载sdk和Unity Samples. 创建一个unity3d工程NewAR,导入sdk解压目录中的EasyAR.unitypackage. 接下来回到EasyAR的官方网站,进入开发页面,点击创建应用.输入应用程序名称及包名. 就如图所示生成了应用的key. 回到unity,创建一个新的场景start并保存,删除场景中的MainCamera.打开file->Bui…
写在前面 全文解析圆形Image组件的实现原理,取关键代码介绍算法细节,源码已经上传Github下载地址,欢迎下载试用. 一.Unity原生Image组件实现圆形图片的缺陷 Mask渲染消耗 许多游戏项目里免不了有很多图片是以圆形形式展示的,如头像,技能Icon等,一般做法是使用Image组件,再加上一个圆形的Mask.实现非常简单,但因为影响效率,许多关于ui方面的Unity效率优化文章,都会建议开发者少用Mask. 使用Mask会额外消耗多一个Drawcall来创建Mask,做像素剔除. M…
例如剔除掉船超出河流的一部分,实现让船只在河流之上显示. 其实是利用UI层的Mask实现遮罩,有些不同的是Mask的图片是用Camera渲染到RenderTexture动态产生的纹理实现的.大概步骤如下:1 分层渲染,建立Mask蒙版层.2 河流设置为Mask层.3 建立Mask Camera,只渲染Mask蒙版层4 创建脚本MatchScreenRenderTexture,创建与窗口匹配的RenderTexture,令Mask Camera渲染到该RenderTexture中.5 创建脚本Ma…
mask遮罩蒙层使用通常的写法的bug 通常写法pug .mask 通常写法css .mask{ position: absolute; top: 0; right: 0; bottom: 0; left: 0; z-index: 100; /*移动端*/ background: rgba(0,0,0,.5); /*ie*/ background: #000; opacity: 0.5; filter: alpha(opacity = 0.5); } 但是这种适用于内容小于屏幕高度的,如果内容撑…
基于示例infer_simple.py 修改165行vis_utils.vis_one_image为vis_utils.vis_one_image_opencv 在detectron.utils.vis中新增def cut_mask(img, mask) def cut_mask(img, mask): mask = mask*255 # 灰度图片'cv2.cvtColor(mask,cv2.COLOR_BAYER_GB2GRAY)'转成三通道 mask = cv2.cvtColor(cv2.c…
经常看一些 LOL 比赛直播的小伙伴,肯定都知道,在一些弹幕网站(Bilibili.虎牙)中,当人物与弹幕出现在一起的时候,弹幕会"巧妙"的躲到人物的下面,看着非常的智能. 简单的一个截图例子: 其实,这里是运用了 CSS 中的 MASK 属性实现的. mask 简单用法介绍 之前在多篇文章都提到了 mask,比较详细的一篇是 -- 奇妙的 CSS MASK,本文不对 mask 的基本概念做过多讲解,向下阅读时,如果对一些 mask 的用法感到疑惑,可以再去看看. 这里只简单介绍下 m…
var imgBoxInner = new cc.Node('imgBoxInner');var mask = imgBoxInner.addComponent(cc.Mask);mask.alphaThreshold = 0.1; var newframe = new cc.SpriteFrame(texture);mask.spriteFrame = newframe;mask.type = cc.Mask.Type.IMAGE_STENCIL;var sf = mask.spriteFra…
参考链接: https://www.sohu.com/a/211665096_99940808 1.Mask组件实现原理 使用模板测试,一方面使Mask对象所在区域的模板缓冲值置为1,另一方面使被Mask的对象进行模板测试,如果是1才进行渲染 2.Mask增加drawcall 3.Mask增加overdraw 如下,左边没加Mask,右边加Mask,颜色越深overdraw越大…
参考链接: https://blog.csdn.net/akof1314/article/details/50428200 1.Mask.shader // Unity built-in shader source. Copyright (c) 2016 Unity Technologies. MIT license (see license.txt) Shader "Custom/Mask" { Properties { [PerRendererData] _MainTex (&qu…
github上又看到个不错的动画(https://github.com/rounak/RJImageLoader),如图: 所以就想来自己实现以下 不试不知道,这个动画还真不是看上去那么简单,我自己想了半天愣是没做出来,最后还是看了作者的代码,才知道怎么实现. 不过也从作者哪儿学了一招,就是layer.mask的用法. 自己实现的效果如图: demo在这里:https://github.com/Phelthas/LXMRevealDemo (前面的画圆的动画,这是一个CAShaperLayer修…
Shader "Custom/Opaque" { Properties { [PerRendererData] _MainTex ("Sprite Texture", 2D) = "white" {} _Color (,,,) // required for UI.Mask _StencilComp ( _Stencil ( _StencilOp ( _StencilWriteMask ( _StencilReadMask ( _ColorMas…
本文将介绍 CSS 中一个非常有意思的属性 mask . 顾名思义,mask 译为遮罩.在 CSS 中,mask 属性允许使用者通过遮罩或者裁切特定区域的图片的方式来隐藏一个元素的部分或者全部可见区域. 其实 mask 的出现已经有一段时间了,只是没有特别多实用的场景,在实战中使用的非常少,本文将罗列一些使用 mask 创造出来的有意思的场景. 语法 最基本,使用 mask 的方式是借助图片,类似这样: { /* Image values */ mask: url(mask.png); /* 使…
作者:王选易,出处:http://www.cnblogs.com/neverdie/ 欢迎转载,也请保留这段声明.如果你喜欢这篇文章,请点[推荐].谢谢! 引子 上一次我们讲了MonoBehaviour的前世今生,了解了游戏中的每一个GameObjec都是由脚本控制的,这一次我们开始将Unity中Native 2D中的Sprite,并且使用Animation来让Sprite动起来. 在接下来的几篇博客里,我会通过做一个Flappy Bird来讲解Unity中各个组件的使用,项目的源代码在这里:U…
/* * 使用方法: * 开启:MaskUtil.mask(); * 关闭:MaskUtil.unmask(); * * MaskUtil.mask('其它提示文字...'); */ var MaskUtil = (function(){ var $mask,$maskMsg; var defMsg = '正在处理,请稍待...'; function init(){ if(!$mask){ $mask = $("<div class=\"datagrid-mask mymask\…
在OpenCV中我们经常会遇到一个名字:Mask(掩膜).很多函数都使用到它,那么这个Mask到底什么呢? 一开始我接触到Mask这个东西时,我还真是一头雾水啊,也对无法理解Mask到底有什么用.经过查阅大量资料后,也对Mask有一点自己的理解了,下面就说说我的理解. 比如我要对一幅图进行抠图操作,这就要用到Mask了,那我就以抠图为例,解释Mask在里面的作用. 先上程序,该程序的功能就是抠出指定区域. #include "opencv2/highgui/highgui.hpp" #…
Mask RCNN Mask RCNN 中主要改进是在faster rcnn中box regression 的branch 上加入mask prediction branch,能够得到点到点的预测. 主要特点为: mask branch 是一个FCN结构,对每个ROI region  产生k * m*m 的mask 结果,k 为分类类别数.与FCN最大的不同是对分类和分割解耦.假设groundtruth 中目标属于类别k,则损失只和第k个mask 有关,其它mask 不参与损失的计算.每个mas…
Array.min() #无参,所有中的最小值 Array.min(0) # axis=0; 每列的最小值 Array.min(1) # axis=1:每行的最小值 字符串在输出时的对齐: S.ljust(width,[fillchar]) #输出width个字符,S左对齐,不足部分用fillchar填充,默认的为空格. S.rjust(width,[fillchar]) #右对齐 S.center(width, [fillchar]) #中间对齐 S.zfill(width) #把S变成wid…
论文源址:https://arxiv.org/pdf/1703.06870.pdf 开源代码:https://github.com/matterport/Mask_RCNN 摘要 Mask R-CNN可以在进行检测的同时,进行高质量的分割操作.基于Faster R-CNN并进行扩展,增加了一个分支在进行框识别的同时并行的预测目标的mask.Mask R-CNN易于训练,相比Faster R-CNN增加了一点点花销.此外,Mask R-CNN可以很容易扩展至其他任务中.如关键点检测.本文在COCO…
Mask R-CNN 论文Mask R-CNN(ICCV 2017, Kaiming He,Georgia Gkioxari,Piotr Dollár,Ross Girshick, arXiv:1703.06870) 这篇论文提出了一个概念简单,灵活,通用的目标实例分割框架,能够同时检测目标并进行实例分割.在原Faster R-CNN基础上添加了object mask分支与原目标检测任务分支并列.速度大约5 fps.另外,Mask R-CNN也很容易扩展到其它的任务,比如人体姿态评估. 原Fas…