AutoCAD 3DMAX C语言 Pro/E UG JAVA编程 PHP编程 Maya动画 Matlab应用 Android
Photoshop Word Excel flash VB编程 VC编程 Coreldraw SolidWorks A Designer Unity3D
 首页 > Unity3D

【Unity C#编程】图表 可视化数据:添加多个维度

51自学网 2014-05-24 http://www.51zixue.net
个函数的网格

现在我们再次看到了函数,拓展到了Z轴。然而,有些奇怪的事发生了。显示抛物线的时候尝试旋转透视图,从某些角度,图形绘制是错误的。这是因为粒子是按我们创建的顺序显示的。为了修正这一点,设置粒子系统渲染器模块的Sort Mode为“By Distance”,而不是None。这个确保从所有角度看图形都显示正确,但这也会降低性能。所以在显示大量点的时候不要使用它。幸运的是,如果我们只从正确的方向看图,我们就可以忽略排序。

 

Sort Mode None By Distance.

现在来更新功能代码,这样我们就能利用新坐标的优势。首先改变FunctionDelegate输入参数,改为一个vector和一个float,来代替单一的float。虽然可以分别指定X和Z的位置,我们简单地将整个位置矢量。还包含当前时间,而不必在函数里面寻找。

1
private delegate float FunctionDelegate (Vector3 p, float t);

现在我们需要相应地更新功能函数,改变委托的调用方法。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
void Update () {
if (currentResolution != resolution || points == null) {
CreatePoints();
}
FunctionDelegate f = functionDelegates[(int)function];
float t = Time.timeSinceLevelLoad;
for (int i = 0; i < points.Length; i++) {
Vector3 p = points[i].position;
p.y = f(p, t);
points[i].position = p;
Color c = points[i].color;
c.g = p.y;
points[i].color = c;
}
particleSystem.SetParticles(points, points.Length);
}
 
private static float Linear (Vector3 p, float t) {
return p.x;
}
 
private static float Exponential (Vector3 p, float t) {
return p.x * p.x;
}
 
private static float Parabola (Vector3 p, float t){
p.x = 2f * p.x - 1f;
return p.x * p.x;
}
 
private static float Sine (Vector3 p, float t){
return 0.5f + 0.5f * Mathf.Sin(2 * Mathf.PI * p.x + t);
}

建议使用电驴(eMule)下载分享的资源。

说明
:本教程来源互联网或网友分享或出版商宣传分享,仅为学习研究或媒体推广,51zixue.net不保证资料的完整性。
 
上一篇:【Unity C#编程】图表 可视化数据:创建图表  下一篇:【Unity C#编程】图表 可视化数据:3D展示