2016-11-30 4 views
2

Was ist der beste Weg, um ein Diagramm für die HoloLens in Einheit zu zeichnen? Ich bin neu auf dieser Plattform und habe keine Ahnung, welche Pakete funktionieren und welche nicht, der Graph erhält Daten dynamisch.HoloLens Zeichne ein Diagramm

EDIT: Ich habe versucht, LineRenderer aber es scheint in der Version 5.4 von Unity

+0

Sie sollten ein bisschen mehr beschreiben, um was für eine Grafik es sich handelt. Ist es ein Diagramm? Sollte es ein 3D-Diagramm aus 3D-Formen oder ein 2D-Diagramm aus UI sein? – Everts

+0

Ich muss eine Diagrammlinie über einem Objekt zeichnen, also ist es ein 2d Liniendiagramm. Aber am Ende muss alles 3d sein? Da ist alles ein Hologramm. –

+0

Ja, aber es kann ein flaches UI-Bild zum Erstellen der Linie (2D) oder ein dünner Würfel (3D) sein. Grundsätzlich glaube ich, dass ich deine Frage beantwortet habe. Entweder eine dünne UI-Linie mit einer Leinwand, die an das Objekt angehängt ist, oder ein dünner, gestreckter Würfel, der ebenfalls an das Objekt angehängt ist. – Everts

Antwort

2

Eine mögliche Lösung für die Erstellung einer 3D-Grafik wird mit einem Partikelsystem sehr begrenzt:

einfaches Beispiel für eine Komponente Script für ein Partikelsystem:

public class Graph: MonoBehaviour { 

    //Particle-Resolution of the Graph 
    [Range(10, 100)] 
    public int resolution = 10; 
    private int currentResolution; 

    private ParticleSystem.Particle[] points; 

    void Start() 
    { 
     currentResolution = resolution; 
     points = new ParticleSystem.Particle[resolution]; 
     float increment = 1f/(resolution - 1); 
     for (int i = 0; i < resolution; i++) 
     { 
      float x = i * increment; 
      points[i].position = new Vector3(x, 0f, 0f); 
      points[i].startColor = new Color(0f, 0f, 0f); 
      points[i].startSize = 0.1f; 
     } 
    } 
    void Update() 
    { 
     if ((currentResolution != resolution) || (points == null)) 
     { 
      CreatePoints(); 
     } 

     FunctionDelegate f = functionDelegates[(int)function]; 
     for (int i = 0; i < points.Length; i++) 
     { 
      Vector3 p = points[i].position; 
      p.y = Sine(p.x); 
      points[i].position = p; 

      Color c = points[i].GetCurrentColor(GetComponent<ParticleSystem>()); 
      c.g = p.y; 
      c.r = 1f - p.y; 
      points[i].startColor = c; 
     } 

     GetComponent<ParticleSystem>().SetParticles(points, points.Length); 
    } 

    private static float Sine(float x) 
    { 
     return 0.5f + 0.5f * Mathf.Sin(2 * Mathf.PI * x + Time.timeSinceLevelLoad); 
    } 


} 

ein gutes Tutorial für die 2D/3D-Grafiken Zeichnung (einschließlich diesem Beispiel) mit einem Partikelsystem von CatLikeCoding (Jasper Flick). Siehe: http://catlikecoding.com/unity/tutorials/graphs/. Es ist etwas veraltet und Sie müssen in diesem Fall startSize/startColor anstelle der deprecated color/size-Properties verwenden.

Aber ich habe es schon mit den Hololens getestet und es hat gut funktioniert. Einige Experimente mit den HoloToolkit Shadern für eine bessere Leistung sind notwendig, wenn Sie eine große Menge an Partikeln haben :-)

Wenn Sie weitere Fragen haben: Fragen Sie mich einfach.

+1

Fehlt Ihrer 'Start() 'eine schließende Klammer'} '? – derHugo

+0

Sie haben Recht. Ich habe es repariert. Danke für die Information! – HoloJens

Verwandte Themen