Noerrenebels Geschrieben 27. Oktober 2016 Melden Share Geschrieben 27. Oktober 2016 Hallo, ich versuche eine animierte Marionette aus Blender in Unity zu importieren. Funktioniert auch alles. Nur die Fäden, PNGs mit Transparenz und Billboard-Orientation werden nicht richtig dargestellt, bzw. das in Blender eingestellte Billboarding kommt nicht in Unity an. Die Fäden sind an die Bones geparented. Ich habe versucht ein C# Billboardskript auf die Faden-PNGs zu ziehen, hat aber auch nicht funktioniert. Weiß jemand eine Lösung? Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Sascha Geschrieben 27. Oktober 2016 Melden Share Geschrieben 27. Oktober 2016 Die Fäden entfernen und in Unity LineRenderer einfügen; sollte kein Problem machen. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Noerrenebels Geschrieben 27. Oktober 2016 Autor Melden Share Geschrieben 27. Oktober 2016 Die Fäden entfernen und in Unity LineRenderer einfügen; sollte kein Problem machen. Oh, vielen Dank für die Antwort! Kann es aber erst morgen ausprobieren. Bin gespannt! Sei gegrüßt von Jörg ! Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Noerrenebels Geschrieben 30. Oktober 2016 Autor Melden Share Geschrieben 30. Oktober 2016 Hallo nochmal, ich habe jetzt mit dem LineRenderer einen Faden ersetzt. Wie bekomme ich ihn aber jetzt dazu, dass der immer senkrecht bleibt und sich nicht mit dem Knochen dreht? Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Sascha Geschrieben 30. Oktober 2016 Melden Share Geschrieben 30. Oktober 2016 Ein LineRenderer ohne weiteres ist fast immer nutzlos. Du brauchst ein Script, das mit Linerenderer.SetPosition arbeitet. Wichtig dabei ist die Einstellung "Use World Space" des Renderers, mit dem du zwischen World und Local Space umstellen kannst. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Noerrenebels Geschrieben 31. Oktober 2016 Autor Melden Share Geschrieben 31. Oktober 2016 Danke für die Antwort! Ich habe jetzt den LineRenderer mit einem Skript (C#) erstellt. Um mein Ziel zu erreichen, müßte ich jetzt die Worldposition des Emptys haben (unterer Punkt, Position des Parent-Bones) und dann für die Position des zweiten Punktes des LinerRenderers einfach zur y-Position die Länge des Fadens (z.B. 10) hinzuzählen. Wie komme ich an die Weltkoordinaten des Parent-Bones? Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Sascha Geschrieben 31. Oktober 2016 Melden Share Geschrieben 31. Oktober 2016 Wenn ich dich richtig verstanden habe, hast du eine Linie mit zwei Endpunkten (also keine Punkte dazwischen). Dein Script könnte also etwa so aussehen: [RequireComponent(typeof(LineRenderer))] public class TargetedLineRenderer : MonoBehaviour { private LineRenderer lr; public Transform target; void Awake() { lr = GetComponent<LineRenderer>(); } void LateUpdate() { lr.SetPosition(0, transform.position); lr.SetPosition(1, target.position); } } Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Noerrenebels Geschrieben 31. Oktober 2016 Autor Melden Share Geschrieben 31. Oktober 2016 Hallo, nochmal vielen Dank, jetzt habe ich es! Vector3 pos = new Vector3(0, 10, 0); lineRenderer.SetPosition(0, target.position); lineRenderer.SetPosition(1, target.position + pos); Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Noerrenebels Geschrieben 3. November 2016 Autor Melden Share Geschrieben 3. November 2016 Hallo doch noch mal ! Jetzt hat alles so super geklappt, aber nachdem ich eine .exe eportiert habe, werden die Fäden dargestellt, als wäre keine Bilddatei verfügbar (lila Fläche). In Unity wurde alles korrekt dargestelllt. ??? Mein Skript: using UnityEngine; using System.Collections; public class LineRendererPosition : MonoBehaviour { public Color c1 = Color.yellow; public Color c2 = Color.red; public int lengthOfLineRenderer = 2; public Transform target; // Use this for initialization void Start () { LineRenderer lineRenderer = gameObject.AddComponent<LineRenderer>(); lineRenderer.useWorldSpace = true; lineRenderer.material = new Material(Shader.Find("Particles/Additive")); lineRenderer.SetColors(c1, c2); lineRenderer.SetWidth(0.002F, 0.002F); lineRenderer.SetVertexCount(lengthOfLineRenderer); } // Update is called once per frame void Update () { LineRenderer lineRenderer = GetComponent<LineRenderer>(); Vector3 pos = new Vector3(0, 10, 0); lineRenderer.SetPosition(0, target.position); lineRenderer.SetPosition(1, target.position + pos); } } Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
TobLine Geschrieben 4. November 2016 Melden Share Geschrieben 4. November 2016 Bin mir nicht sicher ob der Line Renderer mit einem Particles/Additive Shader umgehen kann... Probier mal Unlit/Texture... Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Noerrenebels Geschrieben 4. November 2016 Autor Melden Share Geschrieben 4. November 2016 Hallo TobLine, habe ich ausprobiert, das ist es leider nicht, hatte den gewählten Shader auch aus der Dokumentation. (Siehe https://docs.unity3d.com/ScriptReference/LineRenderer.SetColors.html). Wenn ich es in der Entwicklungsumgebung starte, funktioniert es ja perfekt. :-( Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Sascha Geschrieben 4. November 2016 Melden Share Geschrieben 4. November 2016 Erzeuge dein Material nicht im Skript, wie es im Beispiel steht. Stattdessen Rechtsklick in die Assets, Create, Material. Das Material ein Mal richtig einrichten und in den Line Renderer ziehen. Shader ist egal. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
TobLine Geschrieben 4. November 2016 Melden Share Geschrieben 4. November 2016 Ja probier es mal so wie es Sascha beschrieben hat. Wenn das dann funktioniert kannst du ja einfach dein Material im Skript laden: myMat = Resources.Load("NameOfMaterial") as Material; line.material=myMat; Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Sascha Geschrieben 4. November 2016 Melden Share Geschrieben 4. November 2016 Warum etwas über Resources laden wenn man es auch einfach fest referenzieren kann? Bei Unity gilt grundsätzlich, dass fast alles, was man im Editor einstellen kann, einer Code-basierten Lösung vorzuziehen ist Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Noerrenebels Geschrieben 6. November 2016 Autor Melden Share Geschrieben 6. November 2016 Danke für die Hilfe, jetzt ist es so, wie es soll! Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Recommended Posts
Archiviert
Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.