赞
踩
在Unity中实现给物体赋予渐变色。
在Unity中要实现给物体赋予渐变色,实现类似于应力云图分布的效果。
for (int j = 0; j < Num; j++)
{
float Scale_y = _Heighter[j];
GapInfos[j] = new GapInfo(i, 0, j, _Sphere);
GapInfos[j]._Sphere.transform.localPosition = new Vector3(0, 0.5f, i * 0.01f);
GapInfos[j]._Sphere.transform.RotateAround(new Vector3(0, 0, i), new Vector3(0, 0, 1), j - 90);
// 颜色赋值
Vector3 color = GetRGB((Scale_y - _MinHeight) / (_MaxHeight - _MinHeight)) / 255.0f;
GapInfos[j]._Sphere.GetComponent<MeshRenderer>().material.color = new Color(color.x, color.y, color.z);
}
如下图实现给每个小球赋予颜色,最终实现云图效果(Red->Blue):
但是现在想将渐变色的实现实现反转,即Blue->Red,首先想到在代码中,将Color对应的rgb值分别取反,如下,但是效果与设想不一致:
Vector3 color = GetRGB((Scale_y - _MinHeight) / (_MaxHeight - _MinHeight)) / 255.0f;
GapInfos[j]._Sphere.GetComponent<MeshRenderer>().material.color = new Color(1 - color.x, 1 - color.y, 1- color.z);
这里对于云图颜色的取反与传统图像的取反并非同样的概念,正确做法是对归一化后获取颜色的Value值取反,这样才能实现云图颜色范围的正确“取反”效果。
Vector3 color = GetRGB(1 - (Scale_y - _MinHeight) / (_MaxHeight - _MinHeight)) / 255.0f;
GapInfos[j]._Sphere.GetComponent<MeshRenderer>().material.color = new Color(color.x, color.y, color.z);
正确效果如下:
如题,特此记录。
慕天有脂人消醉,白首偕老皆莫悔 .HDarker
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。