Project1

标题: 写了个auto shadow插件,但是效率很低 [打印本页]

作者: garfeng    时间: 2017-10-14 02:31
标题: 写了个auto shadow插件,但是效率很低
本帖最后由 garfeng 于 2017-11-10 21:44 编辑



设置方法,用region id标记光源





效果和生成的光图:

两个黑点是用来测试标记光源位置的,实际没有。

大概就是这种效果。
现在处理的办法是:用另一个编译好的exe算光影图,算完后js会调ulds把图加载进来。
这种办法是第一次载入地图时,把图存起来,以后直接就是显示图片了,可以很快。
但是第一次载入会很慢很慢很慢。

计算方法大概是从每个点到每个光源做直线,然后计算这条线段上有无遮挡。遮挡因为只计算墙壁,所以都是规则的立方体。
不知道有没有其他的更快的算法……求教。
如果能解决好,大的游戏也可以带光影,只是在玩家机器上生成而已

不知道大家对解决这个问题有没有什么办法……

谢谢~







下面是使用方法和相关文件,因为楼下收到Khas Advanced Lighting这个插件的回复,所以本插件不再继续开发,现有的版本使用方法大致如下:


1. 添加下方的脚本:


js代码



2. 下载下方附件解压,将得到的exe文件放在游戏根目录,且在游戏的img目录下创建一个auto_light文件夹:

light.zip (663.65 KB, 下载次数: 142)






3. 在rmmv编辑器里添加光源,在地图note里添加墙壁高度:





这里的region id 1,3是我在插件参数里设置好的光源。

在地图note里设置墙壁高度:

HTML 代码复制
  1. <autolight>{"wall_height":1}</autolight>


4. 运行游戏:

开始后,会检测auto_light目录下的光图片,没有的话就会生成:





生成的光影图:




你可以对它进行一些其他的优化,比如修改色调。






作者: 刺夜之枪    时间: 2017-10-14 06:27
本帖最后由 刺夜之枪 于 2017-10-13 14:29 编辑

有意思的问题,我回头有空研究一下。马克一下。

先查了些资料:


Intersection of Linear and Circular Components in 2D


line segment to circle collision/intersection detection


how to create 2D visibility/shadow effects for your game


2d Visibility from Red Blob Games


Field of View and Line of Sight in 2D


基本上还是 通过 射线 , FoV算法 。


用PIXI写,效率是不会有问题的。


作者: fux2    时间: 2017-10-14 10:09
射线检测感觉效率不会太低?
http://ncase.me/sight-and-light/

这里也有算法,我在极短12里就参考这个算法实现了动态光照。
丝毫不会卡顿。
作者: tseyik    时间: 2017-10-14 12:52
本帖最后由 tseyik 于 2017-10-14 12:56 编辑

VA有名的光影脚本的作者寫的MV插件
Khas Advanced Lighting​
https://forums.rpgmakerweb.com/index.php?threads/khas-advanced-lighting-v4-2-ultra-now-with-real-time-shadows.77679/
You can download the Master Demo or all my plugins here (click me!).
[RMMV] Advanced Lighting Tutorial (with real-time shadows!)
https://www.youtube.com/watch?time_continue=856&v=ghcX7H8ijjs





作者: lhy9443    时间: 2017-10-15 00:14
Graphics插件需要1.1版本才支持
本插件版本为4.2,支持动态光影,对性能要求较高

KhasUltraLighting.rar

12.02 KB, 下载次数: 104

KhasCore.rar

2.15 KB, 下载次数: 98

KhasGraphics.rar

2.22 KB, 下载次数: 85


作者: lhy9443    时间: 2017-10-15 01:06
lhy9443 发表于 2017-10-15 00:14
Graphics插件需要1.1版本才支持
本插件版本为4.2,支持动态光影,对性能要求较高
...

还要注意一下:
这插件需要Pixi.js v3或以上的版本
RMMV 1.01版本提供的Pixi.js是低于v3的版本
所以 需要更高的RMMV版本才能使用
至于符合要求的最低版本 我没一个一个去试
反正我用RMMV 1.3.4是没有问题的 提供的Pixi.js是v4.0.3
话说有谁会用的?发个教程呗
作者: wabcmcc    时间: 2017-10-15 15:10
樓主是否這些lights素材: lights.rar (162.66 KB, 下载次数: 111)
作者: hiten227    时间: 2018-11-30 05:07
感谢楼主分享




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1