网页
资讯
视频
图片
知道
文库
贴吧
地图
采购
进入贴吧
全吧搜索
吧内搜索
搜贴
搜人
进吧
搜标签
日
一
二
三
四
五
六
签到排名:今日本吧第
个签到,
本吧因你更精彩,明天继续来努力!
本吧签到人数:0
一键签到
成为超级会员,使用一键签到
一键签到
本月漏签
0
次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行
补签
。
连续签到:
天 累计签到:
天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
09月10日
漏签
0
天
unity3d吧
关注:
115,470
贴子:
557,884
看贴
图片
吧主推荐
视频
游戏
1
2
下一页
尾页
69
回复贴,共
2
页
,跳到
页
确定
<<返回unity3d吧
>0< 加载中...
Unity3D小效果教程----舞台屏幕特效
只看楼主
收藏
回复
美年达乌梅味
Animator
9
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
一个简单的教程-----阐述一下如何制作舞台屏幕的思路
刚刚被老大劝辞了(碇司令状),理由:我们这儿貌似不需要游戏特效(心塞:你好歹在我加完之前说啊)
所以现在整理一下电脑中以前制作过的一个效果,打字慢,缓更~
(PS:前几天以前的教程给人挖出来了,虽然几个月没发过贴,现在立贴证明还没有堕落为水军)
美年达乌梅味
Animator
9
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
首先我们看看现在作品中出现这个效果的黑白小姐(请注意背景)
美年达乌梅味
Animator
9
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
阐述存在意义:在平时的U3D中我们可能不会用到舞台效果,因为其本身是一种“失真”的效果,可能和我们玩3D那种越真越好的追求不同
但在现实舞台大屏幕上由于经济与技术的最佳结合考虑,这种大马赛克显示结果是最好。应用于舞台上(与RenderTexture结合粒子系统)反而给人一种应该是这样子的不明觉厉体现感。,3D环境中这种效果常用于MMD(听说MMD不支持Unity5了),现实例子春晚大屏幕(Orz)
美年达乌梅味
Animator
9
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
U3D中结合RenderTexture和粒子系统的效果(示例的Demo是商店不要钱下的):
(原本效果)
(舞台效果)
(舞台效果中的粒子系统)
让妹妹大肚子了
Texture
3
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
顶,我玩u3d就是为了mmd的
美年达乌梅味
Animator
9
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
源代码如下:
Shader "Custom/Stage"
{
Properties
{
_MainTex ("Albedo (RGB)", 2D) = "white" {}//原图像
_PixelLevel("PixelLevel",int) = 25//变成舞台效果后的分辨率如果为25则为25*25
//_SinHeight("Sin Height",Range(3,5)) = 4.5
//_Rate("Rate",float) = 87
}
SubShader
{
Tags
{
"RenderType"="Opaque"
}
Pass
{
Name "ForwardBase"
Tags
{
"LightMode"="ForwardBase"
}
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#define UNITY_PASS_FORWARDBASE
#include "UnityCG.cginc"
#pragma multi_compile_fwdbase_fullshadows
#pragma exclude_renderers xbox360 ps3 flash d3d11_9x
#pragma target 3.0
#pragma glsl
uniform sampler2D _MainTex;
uniform float4 _MainTex_ST;
int _PixelLevel;
//float _SinHeight;
//float _Rate;
struct VertexInput
{
float4 vertex : POSITION;
float2 texcoord0 : TEXCOORD0;
};
struct VertexOutput
{
float4 pos : SV_POSITION;
float2 uv0 : TEXCOORD0;
};
VertexOutput vert (VertexInput v)
{
VertexOutput o;
o.uv0 = v.texcoord0;
o.pos = mul(UNITY_MATRIX_MVP, v.vertex);
return o;
}
fixed4 frag(VertexOutput i) : COLOR
{
float2 uv1= floor(i.uv0.xy * _PixelLevel) / _PixelLevel;//图像马赛克化第一步:重计算uv
float2 uv2 = i.uv0.xy - uv1;//这步相当于求余,详细请看下面对c1,c2的计算
float BLOCK_WIDTH = 0.8/ _PixelLevel; //计算黑色边的宽度
fixed c1 = step (uv2.x , BLOCK_WIDTH);//分出像素与边框(X方向上)
fixed c2 = step (uv2.y , BLOCK_WIDTH); //分出像素与边框(Y方向上)
// float2 sinuv = _SinHeight * sin((uv1)*_Rate);
// float random = frac(sinuv.x*sinuv.y);
// float2 randomuv = ((0.05 + ( random * - 0.1))+uv1);
float3 Albedo = tex2Dlod(_MainTex,float4(TRANSFORM_TEX(uv1, _MainTex),0.0,3.0)).rgb;//根据UV取纹理
float3 finalColor =lerp(float3(0,0,0),Albedo,c1*c2);//(分出像素与边框)
return fixed4(finalColor,1);//完
}
ENDCG
}
}
FallBack "Diffuse"
}
美年达乌梅味
Animator
9
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
附带制作成滤镜的代码:
using UnityEngine;
using System.Collections;
/// <summary>
/// Refraction.
/// 使用材质球渲染频幕
/// </summary>
[ExecuteInEditMode]
[RequireComponent(typeof(Camera))]
public class StageEffect : MonoBehaviour {
public Material curMaterial;
// Use this for initialization
void Start ()
{
if (curMaterial == null || curMaterial.shader.isSupported == false)
{
enabled = false; //材质球不支持则false
}
}
void OnRenderImage (RenderTexture source, RenderTexture destination)
{
Graphics.Blit(source, destination, curMaterial);
}
// Update is called once per frame
void Update ()
{
if(curMaterial==null)
enabled=false;
}
}
美年达乌梅味
Animator
9
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
首先新建一个材质球,材质选择Custom/Stage
得到材质球后给相机赋予9楼所写的脚本,然后把材质球给它赋值:
温馨提示:请记得把脚本开启
然后你的屏幕就会变为4L的效果
美年达乌梅味
Animator
9
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
完结散花~
撒完花写简历泪撒简历去
_____aqing2015
Mesh
2
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
非常感谢。别灰心,加油,大环境不好,准备好过冬,不论再怎样艰难困苦,也要坚强乐观的活下去。。。
你眼眸的星尘
Shader
12
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
后排围观
你是星辉晴朗
Collider
7
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
不知道,碰到我这种水军,会不会把楼楼撵跑
你是星辉晴朗
Collider
7
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
听说过苹果公司的乔布斯吗?
还有谷歌公司?
地球人应该都知道。
最近在练习神经学家关注的热点【冥想】(脱胎于古代的打坐,禅修),
可以提高专注力,改善情绪,增加耐受力等等。
这个是有多个科普文,以及多个学术论文证实的。
等我厉害了,教你。
一个专注的能力,一颗平和的心,无事不成
美年达乌梅味
Animator
9
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
本人应该重申下思路
重点还是片段着色器:
fixed4 frag(VertexOutput i) : COLOR
{
float2 uv1= floor(i.uv0.xy * _PixelLevel) / _PixelLevel;//图像马赛克化第一步:重计算uv
//其实是为了离散化uv,把理论上能够从0到1的无穷细分的uv分成了_PixelLevel*_PixelLevel份
float2 uv2 = i.uv0.xy - uv1;//这步相当于求余,详细请看下面对c1,c2的计算
//uv2主要计算当前uv在各个单个的像素格子的相对位置
float BLOCK_WIDTH = 0.8/ _PixelLevel; //计算黑色边的宽度,其实这个应该是显示出来像素的宽度(喜闻乐见命名错误:-))
fixed c1 = step (uv2.x , BLOCK_WIDTH);//分出像素与边框(X方向上)
//step(a, x) 如果 x<a,返回 0;否则,返回 1。 所以这个函数只能返回0或1,诸君请当做bool来用
fixed c2 = step (uv2.y , BLOCK_WIDTH); //分出像素与边框(Y方向上)
//同上= =||
// float2 sinuv = _SinHeight * sin((uv1)*_Rate);
// float random = frac(sinuv.x*sinuv.y);
// float2 randomuv = ((0.05 + ( random * - 0.1))+uv1);
float3 Albedo = tex2Dlod(_MainTex,float4(TRANSFORM_TEX(uv1, _MainTex),0.0,3.0)).rgb;//根据UV取纹理
float3 finalColor =lerp(float3(0,0,0),Albedo,c1*c2);//(分出像素与边框)
//如果c1,c2两个中有一个为零返回黑色,否则返回原马赛克颜色
return fixed4(finalColor,1);//完
}
你是星辉晴朗
Collider
7
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
你们老板真是,目中无神。如此人才,竟然不要。
游戏,拼的就是美工,
美工拼的就是特效
登录百度账号
扫二维码下载贴吧客户端
下载贴吧APP
看高清直播、视频!
贴吧页面意见反馈
违规贴吧举报反馈通道
贴吧违规信息处理公示