美文网首页
Linerenderer的坑

Linerenderer的坑

作者: 非墨即白 | 来源:发表于2019-05-18 14:48 被阅读0次

    首先写了设置Linerenderer不同属性的函数,写在Linkmodel的start里,fixedupdate也写了一部分更新positions,根据手动设置的linematerial更新material(方便后面调试bug), 

    1.Resources.load()

    网上查了N种都不能用

    官方文档也写的不清楚(🐶==)

    Final:
    把要加载的material,手动放在resources文件夹下面,然后,用相对resources文件夹的路径,去load<material>(name),没有扩展名,也不加as material

    2.设置link的size:

    用暴露的widthmultiplier接口

    3.设置link的height:

    暴露linkheight接口,在fixedupdate部分根据新的linkheight更新bezier两个辅助点位置。

    4:考虑之后的地图板块可能会高低起伏,因此startpos需要加上所在区域板块的高度

    object.getcomponent<Mesh>().size好像是这个

    这里也帮助我决定了一个抉择:

    1.用name->(lat,long)->pos

    2.gameobject.find(name).transform.pos

    当初选择option1,并且已经写好了untils的函数,但是考虑到这样Link和板块是割裂的,查找高度的时候还是要建立连接,因此不如option2。

    当然utils函数也没有白写,loc2pos 在pointmodel 会用得到的.

    5.linerenderer的startcolor,endcolor, gradient color,material,shader之间如何相互作用决定最终的效果

    根据unity官方文档:

        1.startcolor到endcolor直接会形成渐变。

        2.colorgradient直接在editor里或者在代码里setkeys定义渐变(keys最多8个好像)八个vertex之间混合形成渐变。

        3. linerenderer.material,第一版本的线的效果其实全靠material实现,在editor里调整了底色和Innerlighting,出来的效果如下图,此时的material.shader是mixedrealitytookit/standard,这个shader提供了innerlight的效果选项

    那么为什么还要继续折腾?

    因为希望从from到to使用两个地区的颜色渐变完成的,也就是想通过1/2来完成,但是发现这个和material的shader有冲突,

    简单来说,上述shader压根不理会Linerender自己的colorgradient,而能够显示或者根据linerenderer的渐变颜色进行处理additive/multiply的shader如下:

    这个使用了MRTK/standard的shader但是好像也混合出了本身的颜色的,没有复现,存疑?好吧,看起来是环境光,和linrenderer.color没关系

    (好烦)

    目前的解决方案只有重写一个shader??

    这个不要太麻烦啊==

    more: 

    这里有一个问题是两个地区颜色不同,然而传播过程意味着,在传播过去之前,两个地区一定是颜色不同的,

    传播过去之后才会变化,时间维度是通过播放展示,为什么line的颜色会是固定的呢,应该是根据to地区的颜色变化,Line的颜色也变成from地区的颜色,流动的效果。

    相关文章

      网友评论

          本文标题:Linerenderer的坑

          本文链接:https://www.haomeiwen.com/subject/wowmaqtx.html