百度对新网站排名问题,湖南省建设厅网站首页,空间设计是什么,网站是广西住房和城乡建设厅接到一个需求是类似下图的3D多房间视角#xff0c;需要拖拽屏幕
问题
在做这种屏幕拖拽的时候发现#xff0c;需要拖拽起来有跟手的感觉#xff0c;会存在不同分辨率机型的适配问题。
即#xff1a;美术调整好了机型1的手感#xff0c;能做到手指按下顶层地板上下挪动需要拖拽屏幕
问题
在做这种屏幕拖拽的时候发现需要拖拽起来有跟手的感觉会存在不同分辨率机型的适配问题。
即美术调整好了机型1的手感能做到手指按下顶层地板上下挪动看起来手指始终按在顶层地板上跟手到了分辨率不同的机型2可能首次按在顶层地板上往下一划手指看起来就按到下面的房间了
原因分析
不同屏幕的分辨率不同但相机缩放只能对准长/宽一边。如此缩放就一定会导致没对准的那一边屏占比发生变化
以相机水平向对准为例
对于水平长度X比较长的屏幕看到的楼层屏占比较大拖动一层划过的长度比较长
但对于水平长度X比较窄的屏幕看到的楼层屏占比就比较小拖动一层划过的绝对长度更短 我们计算拖动距离应用到相机移动的数值一般是上图标识的手指拖拽轨迹的长度: δ y y 2 − y 1 \delta y y_2 - y_1 δyy2−y1
而3d游戏不同分辨率的屏幕会导致层高在屏幕上渲染出来的高度不一样。水平向对齐的相机屏幕越宽X越大渲染出来的层高越大。
解决
知道了原因以后其实只需要对不同分辨率的屏幕 乘上一个系数就可以了
那么具体应该乘多少呢
具体系数
先说结论对于水平向对准的相机竖直滑动的系数为 x 1 x 2 \frac{x_1}{x_2} x2x1
其中 x 1 x_1 x1是一个基准值是美术同学调整好的机型1的水平像素值 x 2 x_2 x2则是当前机型的水平像素值
推导
以水平向对准的相机为例
设屏幕尺寸水平像素x竖直像素为y。相机映射能看到的楼层的实际高度为h实际宽度为m。实际楼层映射到二维屏幕的映射系数为f即 x × f m x\times fm x×fm、 y × f m y\times fm y×fm
因为相机是水平向对准不同机型虽然x不同但m是一样的。这也是不同机型唯一相同的字母
问题就抽象成了 已知 x 1 x_1 x1, y 1 y_1 y1, x 2 x_2 x2, y 2 y_2 y2且 x 1 × f 1 m x_1\times f_1m x1×f1m, y 1 × f 1 h 1 y_1\times f_1h_1 y1×f1h1, x 2 × f 2 m x_2\times f_2m x2×f2m, y 2 × f 2 h 2 y_2\times f_2h_2 y2×f2h2 求系数 n n n使得 δ y 1 n × δ y 2 \delta y_1n\times \delta y_2 δy1n×δy2时 δ h 1 δ h 2 \delta h_1\delta h_2 δh1δh2
由 x 1 × f 1 m x_1\times f_1m x1×f1m y 1 × f 1 h 1 y_1\times f_1h_1 y1×f1h1 得到 m x 1 h 1 y 1 \frac{m}{x_1}\frac{h_1}{y_1} x1my1h1即 m x 1 × h 1 y 1 m\frac{x_1\times h_1}{y_1} my1x1×h1
代入机型2的 m x 2 h 2 y 2 \frac{m}{x_2}\frac{h_2}{y_2} x2my2h2得到 x 1 × h 1 x 2 × y 1 h 2 y 2 \frac{x_1\times h_1}{x_2\times y_1}\frac{h_2}{y_2} x2×y1x1×h1y2h2
有 h y δ h δ y \frac{h}{y}\frac{\delta h}{\delta y} yhδyδh 得到 x 1 × δ h 1 x 2 × δ y 1 δ h 2 δ y 2 \frac{x_1\times \delta h_1}{x_2\times \delta y_1}\frac{\delta h_2}{\delta y_2} x2×δy1x1×δh1δy2δh2
即 δ y 1 x 1 × δ h 1 x 2 × δ h 2 × y 2 \delta y_1\frac{x_1\times \delta h_1}{x_2\times \delta h_2}\times y_2 δy1x2×δh2x1×δh1×y2
又 δ h 1 δ h 2 \delta h_1\delta h_2 δh1δh2
得到 δ y 1 x 1 x 2 × y 2 \delta y_1\frac{x_1}{x_2}\times y_2 δy1x2x1×y2
即 n x 1 x 2 n\frac{x_1}{x_2} nx2x1