精灵图

From Valve Developer Community
< Zh
Jump to navigation Jump to search
English (en)中文 (zh)Translate (Translate)

Split-arrows.png 分裂

It has been suggested that this article or section be split into multiple articles: 本页介绍适用于所有Valve游戏的通用精灵图内容。
• 将Source引擎特有的着色器内容移至Sprite (shader)(en)$spriteorientation(en),另见Shaders in Sprites\(en)
• GoldSrc引擎特有内容应归属于SPR(en)页面。 (Discuss)


金源 金源起源 起源引擎中,精灵图是通过特殊几何处理技术渲染的世界对象。其本质是(静态或动态的)2D图像,但在"法线"视角(即垂直于其表面)观看时会呈现3D效果。关键技术在于确保玩家始终以"法线"视角观察精灵图,通常需要通过旋转精灵图使其始终朝向玩家。显然在多人游戏中这种世界空间旋转不适用,因此仅在玩家视图(en)中进行旋转。

尽管应用受限,但精灵图的渲染开销远低于模型(en)笔刷(en)结构,并能实现某些3D建模难以完成的效果:

  • 光照: 精灵图不能投射或接收任何阴影(en),也不支持Cubemap反射(en)
  • 物理: 精灵图不与任何物体产生碰撞(en)
    Note.png注意:GoldSrc(en)中,cycler_sprite(en)实体可以设置碰撞(简单包围盒),但该实体存在缺陷,不建议在正式版本中使用。应改用CLIP笔刷或模型(en)
Icon-Bug.png错误:起源 起源引擎中,重载游戏材质不会影响已加载的精灵图纹理。若需应用修改后的精灵图材质,必须重启游戏。

精灵图实体

GoldSrc(en) Source(en)

放置规范

待完善: ...通用使用指南...在Hammer中配置精灵图实体的方法

创建指南

待完善: 精灵图设计与实现规范清单
  • 设计原则:
    • 图像本身已呈现三维物体特征
    • 动画持续变化或表现旋转效果
    • 物体从多视角观察外观相似(如球形物体)
    • 观察者可接受物体仅呈现单一视角(如小型植物或树叶)
    • 精灵图存在时间短暂,设为无碰撞,玩家无法近距离观察
  • SPR(en)文件格式...
  • 使用透明纹理时,必须重启Hammer后再编译。Hammer对新精灵图纹理的加载不完整,可能导致透明显示异常
  • 精灵图纹理中任何灰度值(RGB相同)都可能被识别为透明通道。虽未全面测试,但已在light_glow01等案例中验证
  • VTF:编译参数(en)"clamps", "clampt"。注:env_sprite_oriented(en)实体的#angles参数...
  • VMT:精灵图着色器(en)

$spriteorientation着色器参数

Icon-Important.png重要:当材质未使用Sprite着色器却需$spriteorientation参数时,必须使用数字代号(如1)而非文本描述(如"facing_upright")
parallel_upright (0)
类平行模式,但绕Z轴不旋转
应用案例:fire1, fire2等火焰系列纹理
facing_upright (1)
类平行模式,但基于世界原点而非相机旋转
未使用[证实]
vp_parallel (2)
始终朝向相机旋转
最常用模式
待完善: 补充实际案例
oriented (3)
在地图编辑器中指定固定方向
应用案例:flatframe等平面框架纹理

vp_parallel_oriented (4)

平行与定向模式的结合
应用案例:plasma, smoke等粒子效果

示例:🖼Imagesprites/glow_test02.vmt(来自Half-Life 2(en)

"Sprite"
{
	"$spriteorientation" "vp_parallel"
	"$spriteorigin" "[ 0.50 0.50 ]"
	"$basetexture" "sprites/glow_test02"
	"Proxies" { "lampbeam" {} }
}

自定义精灵图示例

"Sprite"
{
	"$basetexture" "sprites/turret_rebel"
	"$spriteorientation" "vp_parallel"
	"$spriteorigin" "[ 0.50 0.50 ]"
	"$translucent" "1"
	"$nocull" "1"
	"$vertexcolor" "1"
	"$vertexalpha" "1"   
}
半衰期2:死亡竞赛 半衰期2:死亡竞赛夺旗模式中的自定义阵营精灵图

小作品

这篇文章是一个小作品,您可以帮助我们完善它。