千家信息网

Unity3D中Projector怎么用

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,这篇文章主要介绍Unity3D中Projector怎么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完! Projector 【原理】Project
千家信息网最后更新 2026年11月03日Unity3D中Projector怎么用

这篇文章主要介绍Unity3D中Projector怎么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

Projector

【原理】

Projector能将一个Material投影到所有在设定的平截头体内的物体上。通常包含两张贴图Cookie和Falloff。Cookie就是投影的图案,Falloff的作用主要是根绝距离来决定投影的Alpha即明暗。Falloff左边为白色,alpha值为1,对应投影距离最近时最亮,右边接近全黑,alpha值为0,表示投影距离变远时投影会渐渐接近透明甚至看不见。

【可以实现】

0 角色选择光圈

1 普通圆点阴影(blob shadow)

2 伪动态阴影(Fake Dynamic shadow)

3 光的投影

4 投影仪(根据Meterial的贴图,可以是图片,视频,另一个相机看到的景象)

5 3D或者2D手电筒的效果

【使用步骤】

一. 创建Projector.

可以创建空GameObject,然后从Component处添加Projector组件如下图

也可以Import Package-> Projector,导入Projector包。包内容如下

二:注意事项

1.确保Cookie Texture一定要设置为Clamp

2.为了避免projector bleeding, Cookie Texture 开启Border Mipmaps选项, 或者直接禁用Mipmap

3 FallOff

不管是orthographic还是不是。

如果不用FallOff, 投影下来的都是最亮即alpha为1的cookie,并且会向frustrum的正反2个方向投影,造成我们并不想看到的"双重投影"的效果。用系统包带的Falloff贴图的话。投影会随着距离变淡。

【实例演示】

例0:角色脚下的光圈

projector所使用的shader如下,再加上脚本控制projector旋转即可。

Shader "Custom/Circle" {
Properties {
_ShadowTex ("Cookie", 2D) = "gray" { TexGen ObjectLinear }
}
Subshader {
Tags { "RenderType"="Transparent-1" }
Pass {
ZWrite Off
Fog { Color (1, 1, 1) }
AlphaTest Greater 0
ColorMask RGB
Blend DstColor Zero
SetTexture [_ShadowTex] {
combine texture,texture
Matrix [_Projector]
}
}
}
}

或者用Vertex&Fragment

Shader "Custom/Circle" {
Properties {
_ShadowTex ("Cookie", 2D) = "" { }
}
Subshader {
pass {
ZWrite off
Blend DstColor One
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#include "UnityCG.cginc"

sampler2D _ShadowTex;
float4x4 _Projector;

struct v2f {
float4 pos:SV_POSITION;
float4 texc:TEXCOORD0;
};
v2f vert(appdata_base v)
{
v2f o;
o.pos=mul(UNITY_MATRIX_MVP,v.vertex);
o.texc=mul(_Projector,v.vertex);
return o;
}
float4 frag(v2f i):COLOR
{
float4 c=tex2Dproj(_ShadowTex,i.texc);
return c;
}
ENDCG
}//endpass
}
}

例1: 普通圆点阴影(blob shadow)

加在角色下面,记得把角色的layer加进 projector设置下的'Ignore Layer'即可。

Shader "Projector/Multiply" {
Properties {
_ShadowTex ("Cookie", 2D) = "gray" { TexGen ObjectLinear }
_FalloffTex ("FallOff", 2D) = "white" { TexGen ObjectLinear }
}

Subshader {
Tags { "RenderType"="Transparent-1" }
Pass {
ZWrite Off
Fog { Color (1, 1, 1) }
AlphaTest Greater 0
ColorMask RGB
Blend DstColor Zero
Offset -1, -1
SetTexture [_ShadowTex] {
combine texture, ONE - texture
Matrix [_Projector]
}
SetTexture [_FalloffTex] {
constantColor (1,1,1,0)
combine previous lerp (texture) constant
Matrix [_ProjectorClip]
}
}
}
}

2 伪动态阴影(Fake Dynamic shadow)

就是用3d Max或者 Maya或者Unity,先把动画对应的阴影烘焙好, 做成序列帧。然后用projector的材质做对应的帧动画即可。

3 光的投影

基本是就把黑的blob cookie换成 中间是白色的cookie即可。

4 投影仪(根据Meterial的贴图,可以是图片,视频,另一个相机看到的景象)

另一个相机绘制到RenderTexture,然后projector的材质使用RenderTexture即可

5 3D或者2D手电筒的效果就是projector的方向和范围设置和手电一致。把电筒的光颜色投出去即可。

以上是"Unity3D中Projector怎么用"这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注行业资讯频道!

投影 阴影 角色 内容 就是 手电 效果 相机 贴图 普通 光圈 动态 动画 图片 圆点 手电筒 投影仪 方向 景象 材质 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 科技平台互联网 互联网金融监管科技数据 金融科技还是互联网 互联网公司 科技公司 碳银互联网科技 西安互联网科技公司 互联网科技大会案例 中国最先进互联网科技公司 哈尔滨新华互联网科技学院 苏州五指互联网络科技有限 互联网科技革命什么开始 玉溪新华互联网科技好不好 科技大学互联网 上海科技产业互联网平台 高科技互联网套路 互联网企业科技类企业如何做账 上海同邻互联网科技有限公司规模 保山互联网科技靠谱吗 互联网领先科技成果宣传视频 重庆科技产业互联网有哪些 广州万易互联网科技有限公司 河南云网互联网络科技有限公司 科技和互联网公司 互联网科技的发展 万易互联网科技有限公司 顺网科技2021年互联网排名 华中科技有哪些互联网大佬 湖南一路畅行互联网科技 玉溪互联网科技怎么选 米泉互联网科技专业怎么样
0