设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
楼主: Kimu

[已经解决] 【讨论】关于视野判定这种东西

[复制链接]

Lv3.寻梦者

梦石
0
星屑
1297
在线时间
831 小时
注册时间
2007-12-25
帖子
1558
发表于 2012-1-4 02:14:55 | 显示全部楼层
本帖最后由 九夜神尊 于 2012-1-4 02:56 编辑

计算量并不大。可以说是很小。
你们那些公式我不懂,不过我给你讲一下过程你就有感觉了。
就光说遍历吧这是很蛋疼的东西从左上角开始向主角1格一格的判断,当遇到第一个障碍,则前面的全部不可见,然后接着向主角,一直当碰到主角,然后最后一组为可见,如果查看过程中有已经确定的,就直接计算下一格。这样顺着屏幕计算一周,也就是周长。
你说有多大的计算量|
80*80才320次计算。
精卫赤龙腾   
总是存在一种强大,去完成似乎不可能的事情.
无畏战乾程   
或是需要一种勇气,去挑战几乎不存在的胜利.
一味玄真魂     
这是拥有一种恒心,去化解根本没有解的困难.
烈卫开天径    
只是带着一种决心,去争取残存的最后的希望。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
55
在线时间
122 小时
注册时间
2011-2-7
帖子
150
发表于 2012-1-4 06:43:05 | 显示全部楼层
逮究吥(日:没关系)。在刀塔的视野里也是如此,要做到完美角度战争迷雾效果实在系灰常困难,再者多注意一下地图画法吥就ok了。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

追从自然的旅行者
奇特空·煦

梦石
0
星屑
107
在线时间
1387 小时
注册时间
2010-12-31
帖子
4944

开拓者贵宾

 楼主| 发表于 2012-1-4 12:04:15 | 显示全部楼层
a1072126939 发表于 2012-1-4 06:43
逮究吥(日:没关系)。在刀塔的视野里也是如此,要做到完美角度战争迷雾效果实在系灰常困难,再者多注意一 ...

困难提出来了就要挑战,没有解决不了的困难
回复 支持 反对

使用道具 举报

Lv1.梦旅人

追从自然的旅行者
奇特空·煦

梦石
0
星屑
107
在线时间
1387 小时
注册时间
2010-12-31
帖子
4944

开拓者贵宾

 楼主| 发表于 2012-1-4 12:06:31 | 显示全部楼层
九夜神尊 发表于 2012-1-4 02:14
计算量并不大。可以说是很小。
你们那些公式我不懂,不过我给你讲一下过程你就有感觉了。
就光说遍历吧这是 ...

说真的,我没看懂,

从左上角开始向主角判断?怎么走的?
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1297
在线时间
831 小时
注册时间
2007-12-25
帖子
1558
发表于 2012-1-4 15:21:58 | 显示全部楼层
假设左上角为0,0点,主角在8,4
那么连线就会经过0.0,1.0,2.1,3.1,4.2……8.4,以上小数为坐标,手机麻烦。具体这些数字咋算出来的,数学初中水平即可,从屏幕左上角开始和主角连线,假设到了4.2处有障碍,则0.0---4.2均不可见(可以考虑障碍物可见),
然后接着向主角连线,假设到了6.3又有障碍,则4.2---6.3不可见,然后继续往主角判断,最后到了主角坐标,则6.3一直到主角均可见。

这样算法从画面左上角到右上角,再到右下角,左下角,左上角,转一圈一张画面就好了。

其中可以优化,已经判断可不可见的地方可以不再次判断。
精卫赤龙腾   
总是存在一种强大,去完成似乎不可能的事情.
无畏战乾程   
或是需要一种勇气,去挑战几乎不存在的胜利.
一味玄真魂     
这是拥有一种恒心,去化解根本没有解的困难.
烈卫开天径    
只是带着一种决心,去争取残存的最后的希望。
回复 支持 反对

使用道具 举报

Lv3.寻梦者

孤独守望

梦石
0
星屑
3121
在线时间
1534 小时
注册时间
2006-10-16
帖子
4321

开拓者贵宾

发表于 2012-1-6 12:19:47 | 显示全部楼层
今天想了想……可以用空间换时间的方法达到基本线性的视野判定。
不过我想先吐槽一句……O(n)是不可能的,因为视野格子数本身就成平方关系。
工程量很大(主要是分数计算很烦),所以等寒假再扔工程吧>_<
菩提本非树,明镜本非台。回头自望路漫漫。不求姻缘,但求再见。
本来无一物,何处惹尘埃。风打浪吹雨不来。荒庭遍野,扶摇难接。
不知道多久更新一次的博客
回复 支持 反对

使用道具 举报

Lv2.观梦者

酱油的

梦石
0
星屑
945
在线时间
2161 小时
注册时间
2007-12-22
帖子
3271

贵宾

发表于 2012-1-6 12:34:58 | 显示全部楼层
本帖最后由 禾西 于 2012-1-6 19:10 编辑

這是我的意見:
v1.jpg
白色的圖塊是不確定的視覺點(位于可視與不可視之間)
綠色的圖塊可視,小麥色的圖塊不可視。

遍歷的方法是以原始點爲中心,逐步向四方向增長。一個點的可視度由夾角點的可視度決定。
v6.jpg
一次的計算量大概是 3n

夾在兩個可視點之間的新節點設置為可視:
v2.jpg
夾在兩個不可視點點之間的新節點設置爲不可視:
v3.jpg
可視與不可視之間的是不確定點:
v4.jpg
不確定點與不確定點之間的由斜方向的上一點確定:
v5.jpg
不做頭像做簽名,看我囧冏有神(多謝山人有情提供 )
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (暗夜天使)

名侦探小柯

梦石
0
星屑
3251
在线时间
3616 小时
注册时间
2006-9-6
帖子
37398

开拓者贵宾第3届短篇游戏大赛主流游戏组亚军第5届短篇游戏比赛亚军

发表于 2012-1-6 15:54:48 | 显示全部楼层
按照人来讲,当然是从主角位置发出射线,经过障碍物的两边端点,然后那范围之类的看不见 = =
不过感觉不管怎么做都好鸡肋囧

点评

问题是纯计算几何的话会非常麻烦  发表于 2012-1-6 21:56
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1297
在线时间
831 小时
注册时间
2007-12-25
帖子
1558
发表于 2012-1-6 20:18:08 | 显示全部楼层
不用想了,没有比我提出的方法更优化的,不过我那方法改一下,就是从主角往边上发射线更快。
计算量   (长+宽)的平方最坏的情况,每次计算量极小,每次只有一个简单的赋值。不牵扯任何math函数。
精卫赤龙腾   
总是存在一种强大,去完成似乎不可能的事情.
无畏战乾程   
或是需要一种勇气,去挑战几乎不存在的胜利.
一味玄真魂     
这是拥有一种恒心,去化解根本没有解的困难.
烈卫开天径    
只是带着一种决心,去争取残存的最后的希望。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

追从自然的旅行者
奇特空·煦

梦石
0
星屑
107
在线时间
1387 小时
注册时间
2010-12-31
帖子
4944

开拓者贵宾

 楼主| 发表于 2012-1-6 22:02:39 | 显示全部楼层
本帖最后由 Kimu 于 2012-1-7 12:55 编辑

@IamI
哎?我好像没说过我想要一个O(n)的,原来我想的是看看有没有比O(n^2)低的算法,现在发现好像不可能实现

@九夜神尊
我原来是想的爆搜每个点,和主角位置连起来,计算所得直线的斜率,然后每次计算的数值四舍五入确定方格坐标,如果有障碍则这个点不可见,借鉴了你的算法之后我觉得可以改进一下,只枚举边界点,与中心连线,从中心向外扩散试试,这个周末我试试把它写出来

@禾西 你到最后还是没把不确定点的确定方案给出来......
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-4-18 16:30

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表