Pokaż wiadomości

Ta sekcja pozwala Ci zobaczyć wszystkie wiadomości wysłane przez tego użytkownika. Zwróć uwagę, że możesz widzieć tylko wiadomości wysłane w działach do których masz aktualnie dostęp.


Wiadomości - bartekm

Strony: 1 2 3 [4] 5 6 7 8 ... 15
46
.NET i XNA / Odp: Rysowanie BoundingSphere
« dnia: Maj 06, 2012, 09:04:49 »
Można też rysować pełne sfery z front-face cullingiem.

47
OpenGL / Odp: Zmiana rozmiaru sześcianu po rotacji (kąty nachylenia)
« dnia: Marzec 16, 2012, 00:20:16 »
Cytuj
No właśnie tu się rodzi w mojej głowie pewna nie jasność bo piszesz o rotacji a ja nie chcę już nic obracać kostka jest już obrócona i może znajdować się w dowolnej pozycji, teraz chcę zmienić jej rozmiar (wysokość, szerokość lub grubość jedną z tych trzech rzeczy).
Powiecmy mam 50 takich kostek obróconych w dowolny sposób teraz wybieram sobie dowolną z nich i chcę zmienić jej rozmiar. Nigdzie nie pamiętam o ile stopni jest obrócona czy też w jakiej pozycji się znajduje.
Jeżeli chcesz, aby twoja kostka była obrócona, przeskalowana i przesunięta względem środka układu współrzędnych to musisz ją naturalnie przesunąć, obrócić i przeskalować ale tylko w następującej kolejności: Rotacja, Skalowanie, Translacja, a nie Translacja, Rotacja, Skalowanie. Rotacja i Skalowanie, żeby działały jak należy muszą być wykonane przed translacją i nic na to nie poradzisz. Jeżeli jednak się uparłeś i chcesz to zrobić po translacji to żeby to poprawnie działało musisz przesunąć obiekt na początek układu współrzędnych potem go obrócić i przeskalować i dopiero wtedy przesunąć go spowrotem na poprzednie miejsce. Obrót i skalowanie są operacjami, które muszą być wykonywane, gdy obiekt znajduję się w środku układu współrzędnych. Więc masz teraz dwa wyjścia:
1. Obiekt na pozycji (0, 0, 0): obracasz obiekt, skalujesz i na końcu przesuwasz na pozycję (x, y, z)
2. Obiekt na pozycji (x, y, z): przesuwasz go na pozycję (0, 0, 0) i patrz punkt 1
Inaczej się niestety nie da.

48
OpenGL / Odp: Zmiana rozmiaru sześcianu po rotacji (kąty nachylenia)
« dnia: Marzec 15, 2012, 22:27:09 »
Cytuj
Jednak aby trochę więcej zrozumieć to odpuściłem sobie kwaterniony na rzecz wektorów i zacząłem używać metod które można znaleźć w większości tutoriali np. kąt do rotacji po osi x:
(...)
A w taki sposób mnożyłem wektory:
Ja tu widzę że dalej korzystasz z kwaternionów.
Cytuj
Z jednej strony to się nie dziwie, że nie działa gdy skalowanie robię tylko dla np. współrzędnych X
To nie dobrze, bo powinno działać, ale wydaje mi się, że u ciebie skopana jest kolejność przekształceń. W twoim przypadku najpierw trzeba obrócić potem przeskalować, a dopiero na końcu przesunąć obiekt.
Cytuj
W prawdzie potrafię już zrobić całkiem sporo przy użyciu standardowych metod ale zamarzyłem sobie czegoś więcej. Kurcze udało mi się zrobić 90K takich kostek (o teksturowanych jak tylko chcę) każdą z nich mogę obracać jak chcę i zamarzyłem sobie zmieniać rozmiar każdej z nich po rotacji i się kurcze wyłożyłem echhh nie ogarniam.
A mnie zastanawia skąd pomysł, żeby do przekształceń używać kwaternionów skoro prościej jest to zrobić na macierzach. W przypadku macierzy sprawa jest prosta.
Masz punkt P, który chcesz obrócić i przeskalować. Budujesz macierz Rotacji Rot, macierz skalowania Scale i przemnażasz odpowiednio wierzchołek: P' = P*Rot*Scale. I tyle. Jeżeli jeszcze dojdzie translacja to P' = P*Rot*Scale*Translate. Każda szanująca się biblioteka matematyczna ma operacje na macierzach, więc nie powinno być problemu.

49
OpenGL / Odp: Zmiana rozmiaru sześcianu po rotacji (kąty nachylenia)
« dnia: Marzec 13, 2012, 23:13:27 »
Pierwszy raz słyszę, żeby w ten sposób wykorzystywać kwaterniony. Kwaternion to czteroargumentowy obiekt matematyczny, więc jakim sposobem tworzysz kwaternion(położenie wierzchołka)? Kwaterniony przydają się w grafice 3D głównie do rotacji: z kwaternionu Q(angle, vx, vy, vz) buduje się macierz rotacji i przemnaża ją przez wierzchołek otrzymując obrót wierzchołka o kąt angle wokół osi obrotu [vx, vy, vz]. Jeżeli jakoś udało ci się go obrócić przy pomocy twojego sposobu to przeskalowanie jest prostą sprawą. Przemnażasz współrzędne przez wektor [ScaleX, ScaleY, ScaleZ] i otrzymasz przeskalowany punkt. Ale najlepszym sposobem będzie to zrobić na macierzach. Jeżeli korzystasz z DirectX to możesz skorzystać funkcji matematycznych D3DX, które zawierają tworzenie macierzy rotacji, translacji, skalowania i operacje na wektorach. A jak korzystać z macierzy podpowie ci wujek Google albo chociażby kurs.

50
DirectX / Odp: [DX10/11] Instancing
« dnia: Marzec 12, 2012, 12:46:01 »
Co ma geometry shader do instancingu? Instancing to rysowanie wielu kopii tego samego obiektu przy pomocy jednego drawcalla. Zadaniem instancingu jest zmniejszenie liczby drawcalli, natomiast koszt rysowania geometrii się nie zmienia. Inaczej jest w przypadku GS, który przyspiesza rysowanie geometrii odciążając z VS np. tworząc z punktu quad dzięki czemu liczba wywołań VS jest 4x mniejsza.

51
OpenGL / Odp: Zmiana rozmiaru sześcianu po rotacji (kąty nachylenia)
« dnia: Marzec 11, 2012, 22:39:16 »
Typowe przekształcenia na wierzchołkach wykonuje się przy pomocy macierzy. Jeśli każdy wierzchołek przemnożysz przez macierz Rotacja*Skala to otrzymasz wierzchołek obrócony i przeskalowany.

52
Poszukuję / Odp: Poszukiwani entuzjaści
« dnia: Marzec 05, 2012, 22:30:03 »
Gdybyś w pierwszym poście napisał, że szukasz kogoś początkującego, by móc wspólnie uczyć się, poszerzać wiedzę zakresie programowania gier to myślę że nie byłoby problemu. A tak wyskoczyłeś z RPG i od razu nasunęło się to: http://www.youtube.com/watch?v=2eslYlbe3gw

53
DirectX / Odp: Przerabianie programu z dx10 do dx11
« dnia: Marzec 03, 2012, 20:32:24 »
Wszystkie funkcje typu XMVector... operują na XMVECTOR. Więc najpierw ładujesz wartości do Vectora, operujesz na nim i wynik zwracasz do floata albo XMFloat np:
XMFloat3 u = XMFloat3(...);
XMFloat3 v = XMFloat3(...);
XMVECTOR VecU = XMLoadFloat3(&u);
XMVECTOR VecV = XMLoadFloat3(&v);
XMVECTOR Dot = XMVector3Dot(VecU, VecV);
float s = XMVectorGetX(Dot);
XMFloat3 Res;
XMStoreFloat3(&Res, Dot);

54
DirectX / Odp: Problem z Tutorialem DX11 - sęk tkwi w karcie?
« dnia: Luty 17, 2012, 14:05:00 »
W SDK (taka aplikacja z ikoną DX) jest tutorial do DX9,10,11 i masę przykładów ciekawych technik programowania grafiki 3D. Nie szukaj niczego po katalogach tylko poszukaj w menu Start. Chociaż teraz DX SDK jest przeniesione do Windows SDK i mogło się coś pozmieniać odnośnie lokalizacji.
Jeśli chodzi o Feature Level to do funkcji tworzącej Device podaje się tablice z wszystkimi możliwymi FL i potem w pętli sprawdza się czy dla każdego z nich udało się zainicjować DX, poczynając od najwyższego. W tutku dołączonym do SDK zobaczysz o co dokładnie w tym chodzi.

55
DirectX / Odp: Problem z Tutorialem DX11 - sęk tkwi w karcie?
« dnia: Luty 17, 2012, 12:07:21 »
Twoja karta obsługuje maksymalnie DirectX 10.1, więc możesz pisać pod DX11 tyle, że bez teselacji. Tylko przy tworzeniu Device musisz podać mu taki feature level, jaki obsługuje twoja karta (w twoim przypadku D3D_FEATURE_LEVEL_10_1). Poza tym polecam zacząć naukę od tutka dołączonego do SDK, wszystko jest tam lepiej wytłumaczone niż w tych płatnych kursach na stronach WWW.

Zajrzałem do tego tutorialu na http://www.directxtutorial.com tam shadery są kompilowane pod SM5 i pewnie dlatego wywala ci błąd, spróbuj je skompilować pod SM4.1.

56
OpenGL / Odp: VBO obj opengl
« dnia: Luty 03, 2012, 13:56:48 »
Ogólnie do trzymania surowej geometrii, a więc bez materiałów, kości itp. lepiej moim zdaniem wybrać format PLY. Nie dość, że łatwiej i szybciej się wczytuje to można na nim poprawnie policzyć wektory tangent, czego nie można powiedzieć o formacie OBJ ze względu na pokręcone indeksy wierzchołków.

57
Szkółka / Odp: Gra darts/rzutki/lotki
« dnia: Styczeń 20, 2012, 16:30:07 »
Odnośnie sposobu rzucania lotek to ciekawie rozwiązali to np. tutaj - celownik lotki wykonuje koliste ruchy wokół kursora i trzeba kliknąć w odpowiednim momencie. A jeśli chodzi o naukę to trzeba znać jakieś API graficzne. Jeśli będziesz pisał w 3D to masz do wyboru DirectX i OpenGL, jeśli w 2D to SDL, Allegro. Ale na początku nauka języka C++, bo bez tego ani rusz.

58
DirectX / Odp: [DX9] Hook, efekty
« dnia: Styczeń 18, 2012, 15:19:13 »
Takie refleksy zwykle tworzy się przy pomocy cubemapy, nie wiem jak to u ciebie działa przy pomocy pojedynczej tekstury. Widać coś jest nie tak z mapowaniem. Kiedy u mnie źle nakładały się odbicia okazało się, podałem zły FOV kamery (zamiast pi/2 było pi/4), ale tak jest tylko w przypadku cube mapy.

59
OpenGL / Odp: Deferred Shading kilka świateł
« dnia: Styczeń 08, 2012, 19:52:33 »
Nie wiem w czym problem. Rysuj kwadraty za pomocą gluOrtho() i kule za pomocą gluPerspective() czy też innej macierzy 3D.

60
OpenGL / Odp: Deferred Shading kilka świateł
« dnia: Styczeń 08, 2012, 19:32:35 »
Właśnie o to chodzi, żeby pokolorowało tylko tą kulę. Wtedy nie trzeba kolorować wszystkich pixeli na ekranie i dzięki temu oszczędzony jest FillRate. Można oczywiście nie rysować kuli i rysować fullscreen quada tylko, że wtedy narysujesz 50 świateł i będziesz miał 5 fps. A dzięki zaoszczędzeniu fill rate możesz rysować tysiące świateł i fps będziesz miał przyzwoity, np. na u mnie przy 5000 świateł było powyżej 100 FPS. Jeśli chodzi o TexCoordy to są one przecież potrzebne przy odczytywaniu G-Bufora. Dla fullscreen quada są one proste do obliczenia, natomiast gorzej jest już z kulą czy stożkiem.

Strony: 1 2 3 [4] 5 6 7 8 ... 15