千家信息网

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安全错误 数据库的锁怎样保障安全 中智农互联网科技 广州万易互联网科技有限公司 互联网科技工作委员会主任 科技互联网公司装修 万易互联网科技 紫鲸互联网科技 互联网与未来科技 贷财互联网科技 华中科技大学互联网 佰商互联网科技有限公司 人人互联网科技是培训 天扬科技互联网广告 青岛中康互联网医疗科技有限公司 重庆威客帮互联网科技 宁夏科技产业互联网案例 宝灵互联网科技有限公司 黑科技闪耀互联网之光 上海京穆互联网科技有限公司 济南小医互联网科技有限公司招聘 福仕德教育科技互联网 广东万易互联网科技有限公司惠州分公司 互联网科技官网 互联网科技媒体 百单互联网科技有限公司 太原新华互联网科技学校怎么样 玖二柒互联网科技公司待遇 西藏七维空间互联网科技有限公司 语蝶互联网科技有限公司 元气玛特互联网科技公司是外包吗 中天科技中国工业互联网
0