2013-10-23 7 views
5

Używam QGLWidget do rysowania obiektów 3-D, wejście do mojego programu to powierzchnie kształtów.QGLWidget - Przekrój 3-D pustych obiektów

To znaczy, że gdy chcę narysować sześcian, mam listę 6 elementów, z których każda reprezentuje twarz, a każda twarz zawiera 4 punkty, (x, y, z) dla każdego punktu.

Rysunek jest gotowy, ale próbuję zaimplementować funkcję przekroju, do tej pory kształt wyniku po przekroju jest pustymi obiektami, Jak mogę uzyskać przekrój wyników tak, jakby kształty nie były puste ?

+1

, więc chcesz przypiąć część obiektu i wypełnić wewnętrzną pustkę twarzą –

+0

@ratchet maniak: tak. –

Odpowiedz

9

OpenGL nie zna "obiektów". Nie wie "solidne" lub "puste". Wszystkie OpenGL zna są punkty, linie i trójkąty. Jeśli chcesz, aby twój obiekt wyglądał na solidny, musisz obliczyć geometrię wycinanego obiektu, tworząc nową siatkę, której używasz jako danych wejściowych do rysowania.

Proces wycinania jest częścią zestawu operacji znanych jako "boolowskie operacje geometryczne" również ukształtowanych jako "konstruktywna geometria brył". Jeśli masz do tego Google'a, znajdziesz mnóstwo informacji.

2

Wierzę, że to, co próbujesz osiągnąć, to jakieś boolean operation na 2 obiektach geometrii. W tym celu istnieje doskonała biblioteka geometrii w Boost i potrzebujesz jednego z tych algorytmów: diff lub intersection. Biorąc pod uwagę przykłady, można je łatwo modyfikować dla określonej struktury obiektu.

Powiązane problemy