我们用生动形象的方式来分析一下Unity中shader程序里的UnityObjectToClipPos
函数的实现细节。
1. 生活化比喻:拍照的过程
想象你在用手机拍照:
- 你手里拿着一个小玩偶(3D模型的“物体空间”)。
- 你把玩偶放在桌子上(“世界空间”)。
- 你用手机对准玩偶(“摄像机空间”)。
- 手机屏幕上显示的照片(“裁剪空间/屏幕空间”)。
UnityObjectToClipPos
就像是把玩偶从你手里,经过桌子、手机镜头,最后变成照片上的点的全过程。
2. 具体流程分解
2.1 物体空间(Object Space)
- 玩偶的坐标是相对于自己中心的,比如(0,0,0)在肚子上,(1,0,0)在右手。
2.2 世界空间(World Space)
- 玩偶被放在桌子上的某个位置,比如桌子左上角。
2.3 视图空间(View/Camera Space)
- 你用手机对准桌子,玩偶在你视野里的某个位置。