Mit dem Open-Mesh-Griff des Modells werden Kanten aufgezeichnet und gezeichnet.
Code: Select all
ConstFaceEdgeIter fh_it;
for(fh_it = cfe_iter(face); fh_it.is_valid();++fh_it)
{
if(! fh_it.is_valid())
continue;
m_drawingColorData.edges v0()).toQVector3D();
m_drawingColorData.edges v1()).toQVector3D();
}
grün: Fehlerkante

! Vor der Änderung
Jetzt muss ich einen Geometrie-Shader hinzufügen, daher kann ich nicht die Funktionen „Linie zeichnen“ und „Dreieck zeichnen“ mit demselben Shader verwenden.
Ich versuche, die Normale der angrenzenden Fläche zu verwenden und die Scheitelpunkte der Linie leicht zu versetzen, um ein Dreieck zu simulieren.
Code: Select all
ConstFaceEdgeIter fh_it;
for(fh_it = cfe_iter(face); fh_it.is_valid();++fh_it)
{
if(! fh_it.is_valid())
continue;
QVector3D point1 = getVertex(fh_it->v0()).toQVector3D();
QVector3D point2 = getVertex(fh_it->v1()).toQVector3D();
QVector3D dir = (point2 - point1).normalized();
QVector3D normal;
normal = getFaceNormal(face).toQVector3D();
QVector3D perp = QVector3D::crossProduct(normal, dir).normalized();
QVector3D offset = perp * 0.25f;
QVector3D v1 = point1;
QVector3D v2 = point1 - offset;
QVector3D v3 = point2;
QVector3D v4 = point2 - offset;
m_drawingColorData.edges
Mobile version