我使用的公式是255 *((old / 255)^ 2.2),基于mintviz的教程,但是必须手动校正所有颜色是一个繁琐且耗时的过程,并且至少在理论上可能是高度自动化的
我想的是一个简单的按钮,当您按下时,将所有现有颜色从仅选定对象转换为2.2等效颜色。
我已经在maxscript中完成了一些自定义属性接口,但这就是全部,所以我没有很多经验,所以我需要一些帮助。
脚本只对选定对象的材质进行处理,然后检查每个对象以查找分配给地图槽,子地图等的现有颜色,并将公式应用于所有这些,或者只是强力应用所有可能的插槽的公式。
你怎么想?它应该很简单,我甚至不知道从哪里开始
答案 0 :(得分:0)
您可以尝试获取所选对象所依赖的所有材质和纹理贴图类,并更改包含颜色值的所有属性:
fn gammaCorrectClr clrP4 gamma =
(255 * [clrP4.x^gamma, clrP4.y^gamma, clrP4.z^gamma]) as Color
mapped fn gammaCorrectMaterial mat gamma =
(
local props = getPropNames mat
for prop in props where isKindOf (local val = getProperty mat prop) Color do
setProperty mat prop (gammaCorrectClr (val as Point4) gamma)
)
for matClass in Material.classes do gammaCorrectMaterial (getClassInstances matClass target:selection[1]) 2.2
for texClass in TextureMap.classes do gammaCorrectMaterial (getClassInstances texClass target:selection[1]) 2.2
如果您只想对整个场景而不是选定的对象执行相同的操作,请从target:selection[1]
次调用中移除getClassInstances
部分。