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

Project1

 找回密码
 注册会员
搜索
查看: 142|回复: 0
打印 上一主题 下一主题

[交流讨论] 屏幕色调算法和2000之类的老RM不一样了

[复制链接]

Lv2.观梦者

梦石
0
星屑
944
在线时间
129 小时
注册时间
2024-5-22
帖子
87
跳转到指定楼层
1
发表于 2024-10-16 23:21:15 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
本帖最后由 utunnels 于 2024-10-16 23:25 编辑

因为我基本不使用这个功能所以没注意。
几天看到别的论坛有人吐槽这个问题,说RM2k上的色调和MV上的很不一样。
我还专门去看了下,那个红绿蓝的滑动条看起来是一样,不过2K的是百分比,从0%-200%,中间值是100%,MV的是-255~255,中间值是0。
虽然两个版本进度条拉到头都是一样的,但是在中间的时候区别就大了,比如MV如果红绿蓝全+128,遇到浅色比较多的情况,可能整个屏幕都白了。
但是因为2k是百分比,所以进度条拉到对应的位置(150%),并没有出现浅色全变白的情况。

这是MV的情况,好像核爆瞬间


这是模拟的RM2K的效果,好像白雾


简单来说,MV的色调改变就是数值直接相加,但是2K是按比例增加,比如150%就相当于在上面覆盖一个半透明的亮屏,50%就相当于覆盖一个半透明的黑屏。
模拟代码如下:
  1. ToneFilter.prototype.adjustTone = function(r, g, b) {
  2.     r = (r || 0).clamp(-255, 255) / 255;
  3.     g = (g || 0).clamp(-255, 255) / 255;
  4.     b = (b || 0).clamp(-255, 255) / 255;


  5.     var R=1,G=1,B=1;
  6.     //rm 2k tint
  7.     R = r<0?(1+r):(1-r);
  8.     r = r<0?0:r;
  9.     G = g<0?(1+g):(1-g);
  10.     g = g<0?0:g;
  11.     B = b<0?(1+b):(1-b);
  12.     b = b<0?0:b;


  13.     if (r !== 0 || g !== 0 || b !== 0||R !== 1 || G !== 1 || B !== 1) {
  14.         var matrix = [
  15.             R, 0, 0, r,  0,
  16.             0, G, 0, g, 0,
  17.             0, 0, B, b, 0,
  18.             0, 0, 0, 1, 0
  19.         ];


  20.         this._loadMatrix(matrix, true);
  21.     }
  22. };
复制代码
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

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

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

GMT+8, 2024-11-22 04:48

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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