Hallo. Ich habe eine FreeForm und erstelle zur Laufzeit ein Objekt. Über FreeForm.Material.FrontProperties.Diffuse kann ich die Transparenz und Farbe festsetzen, allerdings nur für das komplette Mesh. Ich möchte aber gern Teile des Mesh unterschiedlich färben. Das klappt auch, aber dies ist dann nicht mehr Transparent. Was mache ich hier falsch?
Ich erstelle ein MeshObject:
Code:
mo := TMeshObject.CreateOwned(GLFreeForm.MeshObjects);
mo.Mode := momTriangles;
mo.Vertices.Clear;
Anschließend füge ich viele Dreiecke hinzu, indem ich immer 3 Vertices hinzufüge:
Code:
mo.Vertices.Add(x, y, z);
mo.Vertices.Add(x, y, z);
mo.Vertices.Add(x, y, z);
Diese sind dann auch Transparent.
Um die Dreiecke gesondert zu färben, verwende ich diese Erweiterung:
Code:
mo.Vertices.Add(x, y, z);
mo.Colors.Add(255,0,0, 0);
mo.Vertices.Add(x, y, z);
mo.Colors.Add(255,0,0, 0);
mo.Vertices.Add(x, y, z);
mo.Colors.Add(255,0,0, 0);
Damit habe ich dieses Dreieck rot gefärbt. Aber nun ist auch die Transparenz verschwunden.
Ich füge mal ein Testprojekt hinzu. Mir ist auch aufgefallen das die Transparenz nicht korrekt arbeitet. Ganz nachdem wie ich drehe, sehe ich Bild/Farbfehler. Ist das ein Bug in GLScene oder mache ich hier noch etwas falsch?