Linien zeichnen (In 3D)
Verfasst: 05.07.2012, 12:43
Einen wunderschönen guten Mittag,
herjeh - Schon wieder stecke ich in meinem Projekt fest, da ich mal wieder an der Lösung verzweifel :( Ich hoffe ich gehe euch nicht auf den Senkel :roll:
Mein Problem ist folgendes:
Stage3D kennt keine Primitive, leider, lediglich Triangle. Es gibt keine Linien, Punkte, TriangleStrips oder sonst irgendwas. Das ist an sich auch nicht weiter schlimm - Sofern man nicht auf einmal doch Linien zeichnen muss. Doch genau dies muss ich jetzt, in 3D Linien zeichnen. Das ganze funktioniert auch so halbwegs schon, allerdings sehen die Linien je nach Winkel o.ä. immer anders aus. Hier einmal ein Beispiel:
Mein bisheriger Ansatz war es, den Start-Vektor - Ziel-Vektor zu subtrahieren, dadurch habe ich den ViewVector. Und diesen gehe ich so dick meine Linie sein soll vom Start Punkt weg. Das selbe beim Zielpunkt und so erhalte ich meine 4 Punkte.
Klappt ganz gut, leider allerdings weit entfernt von wirklich gleich dicken Linien.
Der Quelltext sieht so aus:
Hat hier jemand evtl. eine Idee wie man es besser macht?
Vielen Vielen Dank!
herjeh - Schon wieder stecke ich in meinem Projekt fest, da ich mal wieder an der Lösung verzweifel :( Ich hoffe ich gehe euch nicht auf den Senkel :roll:
Mein Problem ist folgendes:
Stage3D kennt keine Primitive, leider, lediglich Triangle. Es gibt keine Linien, Punkte, TriangleStrips oder sonst irgendwas. Das ist an sich auch nicht weiter schlimm - Sofern man nicht auf einmal doch Linien zeichnen muss. Doch genau dies muss ich jetzt, in 3D Linien zeichnen. Das ganze funktioniert auch so halbwegs schon, allerdings sehen die Linien je nach Winkel o.ä. immer anders aus. Hier einmal ein Beispiel:
Mein bisheriger Ansatz war es, den Start-Vektor - Ziel-Vektor zu subtrahieren, dadurch habe ich den ViewVector. Und diesen gehe ich so dick meine Linie sein soll vom Start Punkt weg. Das selbe beim Zielpunkt und so erhalte ich meine 4 Punkte.
Klappt ganz gut, leider allerdings weit entfernt von wirklich gleich dicken Linien.
Der Quelltext sieht so aus:
Code: Alles auswählen
public function lineTo(x1:Number, y1:Number, x2:Number,y2:Number):void
{
var size:Number = 0.5;
var z:Number = -5;
addIndex(mVertexCount); addIndex(mVertexCount + 3); addIndex(mVertexCount +1);
addIndex(mVertexCount + 2); addIndex( mVertexCount + 3); addIndex(mVertexCount);
var tmp:CVertex = new CVertex(x1,y1,z);
tmp.minus(new CVertex(x2,y2,z));
tmp.normalize(tmp);
// Von DrawPosition zu X,Y,Z
addVertex(new CVertex(x1, y1, z));
addColor(0, 0, 0); addUV(0, 0); addNormal(new CVertex(0, 0, -1));
addVertex(new CVertex(x1 + (tmp.x / 3), y1 + (tmp.y / 3), z));
addColor(0, 0, 0); addUV(1, 0); addNormal(new CVertex(0, 0, -1));
addVertex(new CVertex(x2, y2, z));
addColor(0, 0, 0); addUV(0, 1); addNormal(new CVertex(0, 0, -1));
addVertex(new CVertex(x2 + (tmp.x / 2), y2 + (tmp.y / 2), z));
addColor(0, 0, 0); addUV(1, 1); addNormal(new CVertex(0, 0, -1));
}
Vielen Vielen Dank!