公司动态

视差背景的滚动比例和循环边界怎样配合:四层背景的十次循环滚动·实例08

2026-11-03

多层背景可以按不同于镜头的速度移动,营造层次感。重复纹理还需要处理循环边界,否则镜头走过一个纹理宽度时可能出现跳变或空白。

下面把一个游戏界面或模拟规则拆成可复查的记录。每组输入独立给出,先确认单位、先后次序和边界,再核对结果。它不依赖具体游戏的隐藏参数,读者可以直接挑选几步手工复算。

输入与规则

一维镜头位置按给定记录变化,四层背景各有初始偏移和滚动比例。未折回位置为初始偏移减镜头位置乘比例;按纹理宽度取零到宽度之间的余数。视口宽度不超过一块纹理,报告紧邻的两块起点。

纹理宽80,四层[初始偏移,滚动比例][[65, '0'], [77, '1/4'], [8, '1/2'], [5, '5/4']] 十个镜头位置[-37, -31, -101, 72, 27, -90, -82, 29, 89, 138]

逐步记录

镜头位置-37,四层结果依次为[未折回位置,循环相位,相邻两块起点]:[['65', '65', ['-15', '65']], ['345/4', '25/4', ['-295/4', '25/4']], ['53/2', '53/2', ['-107/2', '53/2']], ['205/4', '205/4', ['-115/4', '205/4']]]。每块宽80,视口宽四十,两个相邻副本共同覆盖视口。

镜头位置-31,四层结果依次为[未折回位置,循环相位,相邻两块起点]:[['65', '65', ['-15', '65']], ['339/4', '19/4', ['-301/4', '19/4']], ['47/2', '47/2', ['-113/2', '47/2']], ['175/4', '175/4', ['-145/4', '175/4']]]。每块宽80,视口宽四十,两个相邻副本共同覆盖视口。

镜头位置-101,四层结果依次为[未折回位置,循环相位,相邻两块起点]:[['65', '65', ['-15', '65']], ['409/4', '89/4', ['-231/4', '89/4']], ['117/2', '117/2', ['-43/2', '117/2']], ['525/4', '205/4', ['-115/4', '205/4']]]。每块宽80,视口宽四十,两个相邻副本共同覆盖视口。

镜头位置72,四层结果依次为[未折回位置,循环相位,相邻两块起点]:[['65', '65', ['-15', '65']], ['59', '59', ['-21', '59']], ['-28', '52', ['-28', '52']], ['-85', '75', ['-5', '75']]]。每块宽80,视口宽四十,两个相邻副本共同覆盖视口。

镜头位置27,四层结果依次为[未折回位置,循环相位,相邻两块起点]:[['65', '65', ['-15', '65']], ['281/4', '281/4', ['-39/4', '281/4']], ['-11/2', '149/2', ['-11/2', '149/2']], ['-115/4', '205/4', ['-115/4', '205/4']]]。每块宽80,视口宽四十,两个相邻副本共同覆盖视口。

镜头位置-90,四层结果依次为[未折回位置,循环相位,相邻两块起点]:[['65', '65', ['-15', '65']], ['199/2', '39/2', ['-121/2', '39/2']], ['53', '53', ['-27', '53']], ['235/2', '75/2', ['-85/2', '75/2']]]。每块宽80,视口宽四十,两个相邻副本共同覆盖视口。

镜头位置-82,四层结果依次为[未折回位置,循环相位,相邻两块起点]:[['65', '65', ['-15', '65']], ['195/2', '35/2', ['-125/2', '35/2']], ['49', '49', ['-31', '49']], ['215/2', '55/2', ['-105/2', '55/2']]]。每块宽80,视口宽四十,两个相邻副本共同覆盖视口。

镜头位置29,四层结果依次为[未折回位置,循环相位,相邻两块起点]:[['65', '65', ['-15', '65']], ['279/4', '279/4', ['-41/4', '279/4']], ['-13/2', '147/2', ['-13/2', '147/2']], ['-125/4', '195/4', ['-125/4', '195/4']]]。每块宽80,视口宽四十,两个相邻副本共同覆盖视口。

镜头位置89,四层结果依次为[未折回位置,循环相位,相邻两块起点]:[['65', '65', ['-15', '65']], ['219/4', '219/4', ['-101/4', '219/4']], ['-73/2', '87/2', ['-73/2', '87/2']], ['-425/4', '215/4', ['-105/4', '215/4']]]。每块宽80,视口宽四十,两个相邻副本共同覆盖视口。

镜头位置138,四层结果依次为[未折回位置,循环相位,相邻两块起点]:[['65', '65', ['-15', '65']], ['85/2', '85/2', ['-75/2', '85/2']], ['-61', '19', ['-61', '19']], ['-335/2', '145/2', ['-15/2', '145/2']]]。每块宽80,视口宽四十,两个相邻副本共同覆盖视口。

比例为零的层相位保持不变,其余层根据镜头和自身比例移动,越界只改变循环表示。

复核方法和适用范围

从前一次镜头到下一次的位移乘比例,应与该层未折回位移变化相反。两个相差完整纹理宽度的位置代表同一循环相位;折回结果必须非负且小于宽度,尤其检查负镜头位置。

滚动比例描述本例的画面效果,不是实际物体远近的物理测量。图层若不具备可平铺的边缘,仅正确计算循环位置也不能消除接缝。这里不计算遮挡、垂直滚动或相机缩放。

练习时可以只改动一项输入,预测从哪一步开始出现变化,再逐步比较。空状态、数值零和无法判断要分别记录;不要为了让最后结果一致而忽略中途的偏差。边界与同分约定同样属于规则,复核时应一并保留。