如何实时统一地为曲线的各个部分着色?
Posted
技术标签:
【中文标题】如何实时统一地为曲线的各个部分着色?【英文标题】:How to color individual parts of curve in unity, real time? 【发布时间】:2016-11-08 20:53:07 【问题描述】:所以我有一个从 Blender 导入的网格曲线。我想要做的是在曲线上放置单个点(在固定距离处),然后根据特定数字为它们着色。
假设例如数字 1000 是红色,数字 10 是蓝色(基于颜色渐变)。这些数字实时更新,所以我希望我的颜色实时更新。
我不知道如何解决这个问题。我查找了一些想法,但找不到任何有用的东西。
谢谢。
【问题讨论】:
@JoeBlow 你去吧:prntscr.com/bpm3yw @JoeBlow 它可能是一根绳子。不一定。 @JoeBlow 用于可视化应用程序。所以想象一下这样的事情。 west-racing.com/mf/wp-content/uploads/2011/12/ytfumefx.jpg 只是当它读取数据时,它会在特定点将某些内容更改为红色或绿色 忘记您在搅拌机中创建的行。试试 LineRenderer:docs.unity3d.com/Manual/class-LineRenderer.html,但如果它没有给你足够的细节或太慢,你应该通过 GL 做你的事情(用数学):docs.unity3d.com/ScriptReference/GL.LINES.html @JoeBlow 我不同意你对 LineRenderer 的看法,因为它有它的用途。 2222:这是 GL.LINES 的示例:gamedev.stackexchange.com/questions/96964/…(是的,您需要使用着色器,但好消息是,该示例也提供了这一点!)。顺便说一句,如果你想要我/我们认为你想要的东西,那么 Unity 可能不是最好的工具(你尝试过 Wolfram Alpha 吗?)。 【参考方案1】:坏消息,这绝非易事。
Unity 是一个游戏引擎 - 它只是与你知道的那种类型的问题无关?
我相信唯一真正的解决方案是在着色器级别进行。
如您所知,编写着色器本身就是一个完整的工程领域。我建议,首先在谷歌上搜索“Unity3d 颜色渐变,着色器”之类的内容。
例如,
http://answers.unity3d.com/questions/1108472/3-color-linear-gradient-shader.html
一件你可以想象得到的事情。使绳子变白。 应用灯光!所以,彩色窄光束灯或仔细放置漫射灯。也许与照明层结合使用。它可以工作并非不可思议,享受!
注意 - 实际上 OP 仅使用彩色灯解决了问题 - 在某些情况下是一种解决方案。
请注意,这里的 GL api 也是完美的。
user2299169 在上面的 cmets 中给出了一个出色的链接:
http://gamedev.stackexchange.com/questions/96964/how-to-correctly-draw-a-line-in-unity
GL Doco:https://docs.unity3d.com/ScriptReference/GL.LINES.html
感谢 user2299169。
【讨论】:
正要写一个类似的东西,我认为着色器是解决问题的唯一合理方法,毕竟在形状上动态改变像素颜色的问题是发明着色器要解决的问题。 对。完全同意,斯科特。我将提出另一种“自作聪明”解决方案......! 顶点颜色也可以工作,可以使用脚本轻松更新它们和/或在着色器中修改 @JoeBlow 我用聚光灯以上是关于如何实时统一地为曲线的各个部分着色?的主要内容,如果未能解决你的问题,请参考以下文章