dota吧 关注:4,645,700贴子:155,349,665

☆关于魔兽争霸里的距离单位“码”以及它和屏幕之间关系的终极测试

只看楼主收藏回复

这个贴转自DCN
作者是hantian11111
http://www.dotacn.com.cn/read.php?tid=55898
原贴地址奉上
以下正文


1楼2008-12-25 13:30回复
    帖子的由来: 
    试验1: 
    试验2: 
    试验3: 
    应用1: 
    应用2: 



    帖子的由来:以前我截了几张魔兽的图片,分别是1280X800的,1024X768的。根据我的观察,感觉宽屏是不会增加视野的。然后不知怎么,我得出了“无论用4:3的显示比例还是16:10的显示比例,无论是什么分辨率,都影响不了你war3屏幕的可见范围,也就是说都影响不了魔兽争霸里一个屏幕的横纵向的距离”的结论。 

    于是乎,我去地精研究院、WoW8、UUU9论坛问了一下大家关于魔兽争霸的距离单位“码”和显示器的屏幕 是不是有某种关系的问题。得到了一些答案,但同时又产生了新的疑问和困惑。。。。。。。 

    遂决定在前人的基础上进行实践,于是乎有了下文: ^_^ 图片觉得太大的直接下载打包的


    3楼2008-12-25 13:31
    回复
      试验1: 
      先确定一下,屏幕究竟能显示多大的码数。我自己造了一个地图:“hantian11111 码数测试1 700步兵小方阵.w3x”(感谢传说级人物Red_Wolf的‘WE完全汉化’,我在今天搞这个帖子的时候才想起来我的WE里英文比较多,所以用到了这个汉化文件 囧 我其实对WE了解很少的,还是菜鸟暂时 呵呵)。 
      这个地图是用横纵向间隔为64码的、碰撞体积为0的、选择缩放为0.5(血条长度比例)的步兵攒成的一个阵型。 
      (为什么是64码? 开始时本想用1码的间隔的,发现不太可能,因为就算是碰撞体积为0的话也会出现拥挤并且对不齐的现象。后来试验了10码,20码都是有这个问题。20~30码没有测试,30码时已经可以对齐,考虑到计算机是二进制的问题,用了32码作为间隔。不过32码的间隔地图上的单位太多,造了几百个以后我的机器已经贴图错误,所以最终用了同为2的n次方的64码)


      4楼2008-12-25 13:31
      回复
        恩 很雄壮吧,这张图的中心坐标(0,0)是山岭巨人,我截图是以(0,-64)坐标上的骑士为中心截图的,可以看见我的鼠标双击了下面的“视窗里的骑士的模型”。 

        大家也发现了吧,看到的兵“近大远小,近少远多”。 这时咋回事?主要是魔兽有个 镜头高度的问题。 
        说白了,你是和地面呈<90度角来看的,必然会产生“近大远小,边缘会向后延伸最后汇聚到一点的透视关系,也就是一点透视”。 
        不明白的看下图。 
        一点透视


        5楼2008-12-25 13:32
        回复
          OK,既然是一点透视,那我们就来研究一下吧 
          先上


          6楼2008-12-25 13:32
          回复
            好了,下面就是计算了,我选取了3组斜边进行计算,分别是淡蓝绿色、绿色、棕橙色。这样是为了提高理论精度和适应性,减小误差。 
            把这些斜边抽象到白色背景里,并且附上以“像素”为单位的坐标,进行计算


            7楼2008-12-25 13:33
            回复
              理想消失点

              算倒是没什么难的,三角形的比例关系,但问题是消失点算得的值不一样,棕橙色的和另两种差别比较大。 
              终究我是没研究出什么结果来,有待后人呢发掘了吧 ^_^ 



              好,回到正题:大家仔细看第一张700步兵的图。我观察到了血条“长度”不受透视影响,每个步兵都是一样的。但是血条位置是受透视影响的。


              8楼2008-12-25 13:33
              回复
                试验2: 
                证明 血条“长度”不受透视影响。 

                我继续造了一张地图“hantian11111 码数测试2 血条的长度不变 但是位置会偏移.w3x


                9楼2008-12-25 13:34
                回复
                  上图说明了:血条“长度”不受透视影响。透视影响血条的位置则是显而易见的,比图上文的第三张图片。 
                  另外还有个小的结论:靠近边缘的血条不十分可信,因为它是挤进来


                  10楼2008-12-25 13:34
                  回复
                    试验3: 
                    本文重点:屏幕和“码”的关系问题 
                    根据试验1的数据,能大致知道屏幕有多少码了 下面就是具体的实践。 
                    我能想到的有两种方法:a.以血条的出现不出现来判断码数。 
                    b.以一个单位的模型文件出现在屏幕超过50%来判断码数。 
                    我使用了第一种方法:原因就是这种方法更加客观一些。血条出现了就是出现了,没出现就是没出现,另外坐标的位置在本试验3里我是取得整数。 
                    具体就看下图就好了 ,注意!!!:下图的单位是码。 (0,0)点坐标位于地图的中心,也是我截图的中心。


                    12楼2008-12-25 13:35
                    回复
                      解释一下: 
                      左上角右上角:可以看见横向很广阔的区域,但是越是上面的话,图像越会因为透视的影响变小走形。 
                      正上方:因为有太阳月亮的时间挡着,所以横坐标没取0,而取了±40。 
                      正左正右:属于大家看屏幕最多的地方了,比例和视域范围都比较理想。 
                      正下方:在极限的情况下只能勉强看到一个血条。 
                      左下角右下角:比较特殊的情况,以右下角为例:a.若是以横坐标最大为考虑,则(724,-422)是可以出现血条的极限位置。 
                      b.若是以纵坐标最大为考虑,则(710,-468)是可以出现血条的极限位置。 
                      c.若都不屈极限而已710~724,-468~-442为考虑的话,则(717,-445)是出现血条的极限位置。 而且717,-445正好是两个范围的中间值。 
                      注意:我的地图里是三个坐标上都有步兵的,所以有些没显示出来,真正测试的话a,b,c里只保留一个才会看出效果。


                      13楼2008-12-25 13:35
                      回复
                        还是不懂吗??说实话我自己都有点蒙了,那我画一张图来说明一下 
                        90度角垂直俯视图

                        很像地图编辑器里的框框吧 呵呵 这就对了 
                        我们玩游戏的时候,小地图的白色框框是一个长方形,这个是不精确的,理想状况下应该和地图编辑器一样也是个梯形。 
                        我上面的这幅图也不是一个规则的梯形,下面有直角的拐弯,原因就是上面说过的特殊情况a、b、c。


                        14楼2008-12-25 13:36
                        回复
                          我再计算一下屏幕的右上角和右下角之间的距离吧,右下角取(717,-445) 单位:码 
                          距离=根号下“[643-(-445)]的平方+(1048-717)的平方”= 1137.24码 



                          附加:反驳别人的观点 
                          有人说屏幕的码数和分辨率有关,有可能换个分辨率,血条等重要依据就不一样了。 个人已做了测试,在我的笔记本电脑上测试了640x480,800X600,1024X768三种分辨率(Nvidia的显卡,设置的是“当使用的分辨率低于显示器的本机分辨率时---不要缩放”),在同学的LG 17英寸液晶显示器上测试了1280X1024都是正常的。唯一有缺陷的是在另一个同学的纯平显示器上测试的,不过应该是他的显示器的问题,因为无论多小的分辨率在他那里大部分血条都看不到。。。。。。。。 

                          下图是各种分辨率下的截图用来佐证我的话: 

                          640X480


                          15楼2008-12-25 13:37
                          回复
                            800X600


                            16楼2008-12-25 13:37
                            回复
                              1024X768


                              17楼2008-12-25 13:38
                              回复