unity3d 模型unity 特效制作怎么制作模型流光unity 特效制作

当前位置: > unity特效
unity3d特效 粒子特效
特效资源包大合集 U3D特效套餐
unity3d高级游戏特效视频教程/技能光效制作/含FBX模型源文件贴图
最新unity3d游戏插件模型特效源代码项目教程全部资源大合集1500G
Unity3D粒子特效包 写实类游戏包 爆炸 打击特效资源
最近更新的...
友情链接:
& 看图网,,该页图片不可商用
在线图片处理软件开发,始创于09年,距今7年。DS:3/20/4
unity特效素材下载&&&&&&&&&&&&&&&&&&
posts - 73,comments - 8,trackbacks - 0
感谢您的阅读。喜欢的、有用的就请大哥大嫂们高抬贵手“推荐一下”吧!你的精神支持是博主强大的写作动力以及转载收藏动力。欢迎转载!
版权声明:本文原创发表于 【】 ,未经作者同意必须保留此段声明!如有侵权请联系我删帖处理!
我的博客:/GJM6/ &- &传送门:【】
今天给大家说一个做UI特效的小技巧,先来看看效果吧
首先找你们UI组要一个需要制作特效的UI
然后在max里按照UI尺寸创建一个面片 然后UI当作贴图帖上去&ignore_js_op&
切换到顶视图,然后在UI的边框画一条曲线(注意要用Line自己画出来)&ignore_js_op&
&ignore_js_op&
然后创建一个面片 在这条曲线上走一个路径动画,要把这条曲线走完(面片的面数不用太高)&ignore_js_op&
然后选中面片转换成不受曲线影响的模型&ignore_js_op&
然后把这个模型四个角的点修整一下&ignore_js_op&
然后把这个模型转换成poly模式 再把断边的点合并&ignore_js_op&
然后删掉模型多余的线&ignore_js_op&
本帖隐藏的内容
再然后选择四条边角线&&做一个倒角&ignore_js_op&
然后再添加一个分UV的命令 稍微调整一下UV&ignore_js_op&
UV如下图所示(UV分好后导出FBX格式的模型放入你的工程文件里)&ignore_js_op&
然后打开你们的U3D把UI放进去 (大小什么的要问你们的程序要一个GUI)&ignore_js_op&
然后选一个比较合适的贴图(这里贴图自己弄,我的GIF效果用的不是这个图,只是为了说明一下)&ignore_js_op&
然后把你们的FBX格式模型放到U3D里面,然后把选好的贴图帖上去,再按ctrl+6打开动画面板(应该需要稍微做下调整)&ignore_js_op&
接着就是给你的模型材质球上面K针,就是UV动画。&ignore_js_op&
再然后就是把你K好的这个动画文件勾上循环&ignore_js_op&
接着再复制一个旋转一下角度&ignore_js_op&
阅读(...) 评论()Unity3D Effects Pack|Unity3D特效插件包
21:19:11&&&由
3D模型上传 &&&评论: 点击:
中文名称:Unity3D特效插件包
外文名称:Unity3D Effects Pack
文件类型:Unity3D插件
文件大小:7.5M
浏览次数: (今日:,本周:,本月:)
最新更新: 21:35:51
相关热词搜索:
下载地址:(网盘能用的只有百度网盘可以使用,其它网盘不能下载的请留言,我们会把数据转回本地地址。如果是本地地址,均可下载。请勿使用迅雷下载)
Unity3D Effects Pack|Unity3D特效插件包下载
Unity3D特效插件包包括:
FX Explosion Pack(Unity3D爆炸插件)
FX Pack 3D Rolling Leaves(Unity3D飘落的树叶插件)
FX Pack Bellowing Smoke Particles(Unity3D_3D烟雾粒子插件)
FX Pack Dune Blast(Unity3D爆炸烟雾插件)
FX Pack Dust Clouds(Unity3D体积云插件)
FX Pack God Light 1 & 2(Unity3D体积光插件)
FX Pack Light Rays(Unity3D光线插件)
FX Pack Rain (normal and iOS)(Unity3D下雨特效插件)
FX Pack Scrolling Sky(Unity3D天空插件)
FX Pack Snow(Unity3D雪特效插件)
FX Pack Steam&& Spray(Unity3D蒸汽插件)
FX Pack Waterfall (normal and iOS)(Unity3D瀑布插件)
UniStorm 1.6|Unity3d天...
Unity3D Character Sy...
Unity3D FPS Kit 2.0...
Color3 Advanced Colo...
UNITY3D特效、灯光、阴影...
运动捕捉插件-Cinema M...
Unity3d插件月排行
Unity3d插件总排行
本周邪恶内涵...
本周内涵囧图欣赏
周末动态趣图...
好莱坞艳照门...
2014日本AV女...
好莱坞20大烧...
Hold住了!宅...
本周内涵囧图...
2016年日本AV...
冷知识告诉你...
欢迎大家到本站下载喜欢的三维模型,有问题可联系3D模型下载网管理员: 请把#换成@
3D模型下载网所有内容均来自会员上传,使用网站内容时请遵循相关法律法规。如果版权拥有者发现自己作品被侵权,请及时向3D模型下载网提出书面权利通知。3D模型下载网将会依法尽快移除相关涉嫌侵权的内容。程序写累了,就来玩玩酷跑小游戏吧,嘿嘿。
雨松MOMO送你一首歌曲,嘿嘿。
UGUI研究院之Mask裁切UI粒子特效或者3D模型(十七)
UGUI研究院之Mask裁切UI粒子特效或者3D模型(十七)
围观28867次
编辑日期: 字体:
刚好前几天有人问我这个问题,再加上新项目也可能用,所以这两天就研究了一下。其实如果粒子特效 和3D模型 都用RenderTexture来做的话就不会有裁切的问题,但是粒子特效用RenderTexture来做会有显示的问题,所以还是得用摄像机。废话不多说了,进入正题。
原理就是把Mask的裁切区域传给粒子特效Shader,当超出这个区域那么直接让它完全透明即可。粒子特效的源生shader大家可以去unity官网下载,我在这里把需要修改的地方标注给大家。
//add 注释中的内容就是我做修改的地方。
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
Shader "Particles/Additive" {Properties { _TintColor ("Tint Color", Color) = (0.5,0.5,0.5,0.5) _MainTex ("Particle Texture", 2D) = "white" {} _InvFade ("Soft Particles Factor", Range(0.01,3.0)) = 1.0
//-------------------add---------------------- &&_MinX ("Min X", Float) = -10&&&&&&_MaxX ("Max X", Float) = 10&&&&&&_MinY ("Min Y", Float) = -10&&&&&&_MaxY ("Max Y", Float) = 10&&&&&&//-------------------add---------------------- }&Category { Tags { "Queue"="Transparent" "IgnoreProjector"="True" "RenderType"="Transparent" } Blend SrcAlpha One AlphaTest Greater .01 ColorMask RGB Cull Off Lighting Off ZWrite Off Fog { Color (0,0,0,0) }
SubShader {
#pragma vertex vert
#pragma fragment frag
#pragma multi_compile_particles&
#include "UnityCG.cginc"&
sampler2D _MainTex;
fixed4 _TintColor;
//-------------------add----------------------
float _MinX;&&&&&&&&&&&&float _MaxX;&&&&&&&&&&&&float _MinY;&&&&&&&&&&&&float _MaxY;&&&&&&&&&&&&//-------------------add----------------------
struct appdata_t {
float4 vertex : POSITION;
fixed4 color : COLOR;
float2 texcoord : TEXCOORD0;
struct v2f {
float4 vertex : SV_POSITION;
fixed4 color : COLOR;
float2 texcoord : TEXCOORD0;
#ifdef SOFTPARTICLES_ON
float4 projPos : TEXCOORD1;
//-------------------add----------------------
float3 vpos : TEXCOORD2;
//-------------------add----------------------
float4 _MainTex_ST;&
v2f vert (appdata_t v)
//-------------------add----------------------
o.vpos = v.vertex.xyz;
//-------------------add----------------------
o.vertex = mul(UNITY_MATRIX_MVP, v.vertex);
#ifdef SOFTPARTICLES_ON
o.projPos = ComputeScreenPos (o.vertex);
COMPUTE_EYEDEPTH(o.projPos.z);
o.color = v.color;
o.texcoord = TRANSFORM_TEX(v.texcoord,_MainTex);
sampler2D_float _CameraDepthTexture;
float _InvFade;
fixed4 frag (v2f i) : SV_Target
#ifdef SOFTPARTICLES_ON
float sceneZ = LinearEyeDepth (SAMPLE_DEPTH_TEXTURE_PROJ(_CameraDepthTexture, UNITY_PROJ_COORD(i.projPos)));
float partZ = i.projPos.z;
float fade = saturate (_InvFade * (sceneZ-partZ));
i.color.a *= fade;
//-------------------add----------------------
fixed4 c =2.0f * i.color * _TintColor * tex2D(_MainTex, i.texcoord);
c.a *= (i.vpos.x &= _MinX ); &&&&&&&&&&
c.a *= (i.vpos.x &= _MaxX); &&&&&&&&&&&& c.a *= (i.vpos.y &= _MinY); &&&&&&&&&&&& c.a *= (i.vpos.y &= _MaxY);&&&&&&&&&&&&&&&& c.rgb *= c.a;&&&&&&&&&&&&&&&&return c;&&&&&&&&&&&&&&&&//-------------------add----------------------
然后是自己写了个类继承Mask。把Mask的区域传给shader。
using UnityE
using System.C
using UnityEngine.UI;
public class MyMask :Mask
protected override void Start ()
base.Start ();
int width = Screen.
int height = Screen.
int designWidth = 960;//开发时分辨率宽
int designHeight = 640;//开发时分辨率高
float s1 = (float)designWidth / (float)designH
float s2 = (float)width / (float)
//目标分辨率小于 960X640的 需要计算缩放比例
float contentScale =1f;
if(s1 & s2) {
contentScale = s1/s2;
Canvas canvas = GameObject.Find(“Canvas”).GetComponent&Canvas&();
if(RectTransformUtility.ScreenPointToLocalPointInRectangle(canvas.transform as RectTransform, transform.position, canvas.camera, out pos)){
ParticleSystem [] particlesSystems = transform.GetComponentsInChildren&ParticleSystem&();
RectTransform rectTransform = transform as RectT
float minX,minY,maxX,maxY;
minX = rectTransform.rect.x + pos.x;
minY = rectTransform.rect.y+ pos.y;
maxX = minX + rectTransform.rect.
maxY = minY + rectTransform.rect.
//这里 100 是因为ugui默认的缩放比例是100 你也可以去改这个值,但是我觉得最好别改。
foreach(ParticleSystem particleSystem in particlesSystems)
particleSystem.renderer.sharedMaterial.SetFloat(“_MinX”,minX/100/contentScale);
particleSystem.renderer.sharedMaterial.SetFloat(“_MinY”,minY/100/contentScale);
particleSystem.renderer.sharedMaterial.SetFloat(“_MaxX”,maxX/100/contentScale);
particleSystem.renderer.sharedMaterial.SetFloat(“_MaxY”,maxY/100/contentScale);
上面这段代码写的不太好,有一个更好的办法来取Mask的裁切区域。
通过GetWorlCornets来确定裁切的区域
Vector3[] corners = new Vector3[4];
RectTransform rectTransform = transform as RectTransform;
rectTransform.GetWorldCorners (corners);
minX = corners [0].x;
minY = corners [0].y;
maxX = corners [2].x;
maxY = corners [2].y;
然后在把裁切的区域传到shader中。
Material m = GetMaterial (renderer);
m.SetFloat("_MinX",minX);
m.SetFloat("_MinY",minY);
m.SetFloat("_MaxX",maxX);
m.SetFloat("_MaxY",maxY);
为了做到不影响美术,所以美术开发特效的时候还是用以前的shader。程序在运行中对它进行更换,这样可以无缝进行切换。
如果运行时裁切区域发生变化, 可以重写OnRectTransformDimensionsChange()方法来重新给材质赋新的裁切区域
protected override void OnRectTransformDimensionsChange () {
base.OnRectTransformDimensionsChange ();
Change ();//重新再给材质赋裁切参数 }
OK,如下图所示,把粒子特效直接挂在Mask下面, 就可以进行裁切了。。
在说一下3D模型, 理论上用上述的shader改一改就可以。 但是我还是建议3D模型用RenderTexture。比较好控制深度。
最后是工程的下载地址:
希望大家可以多多测试一下,看看有没有问题。 或者你有更好的方法,欢迎在下面给我留言。谢谢啦~
1.感谢楼下 @
这个方法非常巧妙, 我也尝试的使用了一下。但是遇到了个问题,当我有两个裁切区域,发生重合的时候就会出问题。如果大家没有这样重合的需求。也可以参考他的方法。
2.asset store上有一个Unity Particle 2D 的插件,大家也可以试试。
本文固定链接:
转载请注明:
雨松MOMO提醒您:亲,如果您觉得本文不错,快快将这篇文章分享出去吧 。另外请点击网站顶部彩色广告或者捐赠支持本站发展,谢谢!
作者:雨松MOMO
专注移动互联网,Unity3D游戏开发
如果您愿意花10块钱请我喝一杯咖啡的话,请用手机扫描二维码即可通过支付宝直接向我捐款哦。
您可能还会对这些文章感兴趣!}

我要回帖

更多关于 ps流光特效制作 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信