如何实时统一地为曲线的各个部分着色?

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 我用聚光灯

以上是关于如何实时统一地为曲线的各个部分着色?的主要内容,如果未能解决你的问题,请参考以下文章

GLSL片段着色器-绘制简单的粗曲线

在 MATLAB 绘图中为垂直条形区域着色

为 SVG 图标的透明部分着色

ExtJS - 我如何只为文本的一部分着色

如何在D3中为文本div的特定部分着色?

如何在片段着色器中平铺部分纹理