OpenGl i bryły obrotowe

0

Witam

Zaznaczę na początku że nie che żadnych gotowców tylko wytyczenie ścieżki abym nie uczył się niepotrzebnych rzeczy w celu osiągnięcia celu ;).

Cel: Okienkowy program z ładnym GUI w którym użytkownik z dostępnej listy wybierze wstępny wzór przekroju, następnie sparametryzuje go trochę (wysokość, szerokość, jakieś nacięcia). Kliknie rysuj czy co tam, a program wygeneruje mu 3D model obrączki wyciągniętej z przekroju wzdłuż okręgu. Użytkownik będzie miał możliwość obrotu tą obrączką.

Co po kolei ogarnąć by jak najszybciej dojść do celu bez błądzenia po drodze? ;>

z góry thx za wszelaką pomoc ;)

0

Samo rysowanie "obraczki" ze sprecyzowaniem promienia wew. i zew. oferuje nam glut(glutSolidThorus) jak dobrze pamietam. Taki program to dosyc prosta sprawa. Wystarczy ogarnac samo rysowanie, podstawowa rotacje wokol sceny, parametry rysowania beda pobierane z okienek i tyle. Jesli ma to ladniej wygladac to mozna nalozyc jakas teksture, lub zdefiniowac wlasna podstawowa(kolor) i dorzucic dobre swiatlo, i powinno starczyc.

0

Jeśli chodzi o GUI, to polecam bsgui. Użyłem je w tym projekcie: http://www.jason.gd/str/pokaz/Country_road

Współpracuje z konfiguracją SDL + OpenGL.

0

Może uściślijmy co rozumiesz pod pojęciem 'bryły obrotowe' - http://matma.prv.pl/obrotowe.php ?

Okienkowy program z ładnym GUI

GUI to w czym tam wybierzesz - OpenGL można stosować ze sporą ilością bibliotek, w tym chociażby nawet czystym WinAPI.

w którym użytkownik z dostępnej listy wybierze wstępny wzór przekroju, następnie sparametryzuje go trochę (wysokość, szerokość, jakieś nacięcia). Kliknie rysuj czy co tam,

Jak wyżej.

a program wygeneruje mu 3D model obrączki wyciągniętej z przekroju wzdłuż okręgu.

Główny w sumie problem programu, ale w zasadzie prosty.
Prosty pseudokod, pisany z głowy więc może być w zasadzie niepoprawny:

frame_t createFrame(double angle, vector3 axis, vector2 vert2d[]) {
    frame_t result;
    foreach (v in vert2d) {
        result.add(rotateAroundAxis(axis, v);
    }
    return result;
}

quad[] createMesh(vector2 vert2d[], vector3 axis) {
    frame_t frames[ITERS];
    for(int i = 0; i < ITERS; i++) {
        frames[i] = createFrame(i/(float)ITERS, axis, vert2d);
    }

    // połączenie odpowiadających vertexów w ramkach w quady/trójkąty i zwrócenie, dość trywialne
}

Pomysł jest prosty - bierzesz ten przekrój, przekształcasz na pewną ilość vertexów na 2d płaszczyźnie i obracasz tą płaszczyzną zapamiętując gdzie znajdują się w danym momencie vertexy (coś jak tutaj - http://upload.wikimedia.org/wikipedia/commons/e/e7/Rotationskoerper_animation.gif - obrazek z wikipedii), pod koniec je łączysz.
O ile oczywiście o takie bryły obrotowe Ci chodzi...

Użytkownik będzie miał możliwość obrotu tą obrączką.

Jeśli nie będziesz przekształcał świata w inny sposób to jest akurat trywialne, po prostu zmieniasz macierz modelview przy kazdym rysowaniu (po ludzku - odpowiednio reagujesz na input myszki wywołując różne glRotaty, glTranslaty itd_

0

Dziękuję za odpowiedzi

| ____
| /
| | |
| | |
| | |
| ____/
| przekrój obrączki

oś obrotu

I obracając przekrój wokół osi powstaje obrączka (przekroje mogą być różne ten jest najprostszy), dodatkowo może pojawić się np kamień.
Przekroje generalnie są owalne (jednakowo z każdej strony, niejednakowo np z jednej przekrojem przypominające jajko, a z drugiej piłeczkę pingpongową), prostokątne, owalno-prostokątne, itp. Same wzory na rysowanie tych obrączek mam w innym języku napisane tylko przełożyć na c++.

Istnieje funkcja do odejmowania od siebie brył czy trzeba to jakoś inaczej rozwiązywać?
Jakieś światło by się przydało by uwydatnić załamanie powierzchni. Tekstury i owszem.

Jak myślicie Pi razy drzwi ile może zająć napisanie najprostszej wersji takiego programiku? ( przy założeniu że C++ trochę znam ze studiów, OpenGl wcale (z nauką nowych języków idzie mi w miarę dobrze ;), poświęceniu 2-3h dziennie)

Polecicie jakąś stronkę do nauki OpenGl'a?
Póki co znalazłem taką: http://cpp0x.pl/kursy/Kurs-OpenGL-C++/101

0

Do starego OpenGL najlepsze są tutoriale z NeHe - Legacy Tutorials po prawej w menu - http://nehe.gamedev.net/

1 użytkowników online, w tym zalogowanych: 0, gości: 1