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.


Pokaż wątki - Jam_Pawian

Strony: [1]
1
Grafika 3D / [Blender] Md2...
« dnia: Sierpień 13, 2009, 19:13:02 »
Witam

W jaki sposób zmusić blendera, żeby wyeksportował dany model z pozycją dokładnie taką, jak przy modelowaniu?
Próbowałem przenosić obiekt w edit mode, w object mode, przenosić armaturę w obu tych trybach i niewiele pomaga.
Problem leży w tym, że poruszam się trochę po omacku (czasem się uda przestawić model, a czasem nie :) ). Jakby ktoś mógł napisać, w jaki sposób to zrobić, byłbym wdzięczny.

Z góry dzięki

2
Szkółka / [OpenGL] Przycinająca się animacja
« dnia: Czerwiec 24, 2009, 00:37:42 »
Witam

Robię grę FPP i już od pewnego czasu użeram się z tym problemem. Gdy poruszam myszką i naciskam przycisk z klawiatury animacja traci płynność(Kamera zaczyna przeskakiwać i wolniej się obraca). Animacja modeli nie zwalnia. Zmieniłem sterowanie z komunikatów Windowsowych na Direct Input. Nie pomogło.

Tak wygląda u mnie pętla komunikatów:

// main message loop


while (!done)
{

PeekMessage(&msg, hwnd, NULL, NULL, PM_REMOVE);

if (msg.message == WM_QUIT) // do we receive a WM_QUIT message?
{
done = true; // if so, time to quit the application
}



TranslateMessage(&msg); // translate and dispatch to event queue
DispatchMessage(&msg);

/*****************STEROWANIE************************************/

hr= g_lpDIKeyboard->GetDeviceState(sizeof(buffer), (LPVOID)& buffer); //Sprawdzanie stanu klawiatury

if(KEYDOWN(buffer, DIK_RIGHT))
{
  swiat->dresu->direction+= 2;
}
if(KEYDOWN(buffer, DIK_LEFT))
{
  myModel->Ustaw_stan_animacji(Bieg);
  swiat->dresu->direction-= 2;
}
if(KEYDOWN(buffer, DIK_UP))
{
  if(swiat->dresu->kolizja == false)
  if(swiat->dresu->Zwroc_predkosc() == 0)
  swiat->dresu->Ustaw_predkosc(1);
}


g_lpDIMouse->GetDeviceState(sizeof(mouse_state), (LPVOID)&mouse_state); //Pobieranie stanu myszy

mysz_y += mouse_state.lY;
                mysz_x += mouse_state.lX;
for (int i = 0; i < 4; i++)
{
if(mouse_state.rgbButtons[i] & 0x80) MouseButton[i] = true;
else MouseButton[i] = false;
}
                //Obsługa zdarzeń powodowanych przez mysz
if(MouseButton[1] == true)   //Na kliknięcie prawym przyciskiem wyjdź z pętli komunikatów
PostQuitMessage(0);


if ((mysz_x - stara_mysz_x) > 0) // mouse moved to the right
swiat->dresu->direction += 5.0f;
else if ((mysz_x - stara_mysz_x) < 0) // mouse moved to the left
swiat->dresu->direction -= 5.0f;

/********************************************************************/
/////////////////////////////////////////////
Render();
////////////////////////////////////////////
stara_mysz_x= mysz_x;
stara_mysz_y= mysz_y;

}




A tak funkcja Render():

void Render()
{

cameraX= swiat->dresu->position.x - (float)cos(DEG2RAD(swiat->dresu->direction))*20;
cameraY= swiat->dresu->position.y + 5;
cameraZ= swiat->dresu->position.z - (float)sin(DEG2RAD(swiat->dresu->direction))*20;

lookX = swiat->dresu->position.x + (float)cos(DEG2RAD(swiat->dresu->direction));
lookY = 5.0f;
lookZ = swiat->dresu->position.z + (float)sin(DEG2RAD(swiat->dresu->direction));

/************************************************************************************* TIMER*****/
//Ustala okres czasu, który upłynął od renderowania ostatniej ramki                                         
float elapsedSec= swiat->timer->GetElapsedSeconds(1);
/***********************************************************************************************/
// clear screen and depth buffer
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glLoadIdentity();



// set the camera position
gluLookAt(cameraX, cameraY, cameraZ, lookX, lookY, lookZ, 0.0, 1.0, 0.0);




    /******************************RYSOWANIE I ANIMACJA OBIEKTÓW*************************************/
//Przed funkcją render sprawdzany jest stan klawiatury
swiat->Wykrywaj_kolizje();
swiat->Poruszaj_obiekty();
swiat->Rysuj_obiekty(elapsedSec);
   /*************************************************************************************/
glFlush();


SwapBuffers(g_HDC); // bring backbuffer to foreground
}


Z góry dzięki za wszelką pomoc.

3
Grafika 3D / Blender - Zmiana skali po eksporcie do MD2
« dnia: Czerwiec 14, 2009, 17:51:15 »
Witam

Kiedy eksportuję model do md2 z Blendera, zmienia mi skalę (zwykle po dwóch osiach). Ustawienie 'Fix Scale' nie pomaga. Miał ktoś podobny problem. Prosiłbym o pomoc.

Z góry dzięki

4
OpenGL / Zamiana jednostek w pikselach na współrzędne OGL
« dnia: Maj 30, 2009, 13:43:48 »
Witam

Mam pytanie do Rega i wszystkich, którzy rozumieją funkcje gluProject i gluUnProject. Reg,  dokopałem się do tematu, w którym podałeś funkcję zamieniającą współrzędne myszy na współrzędne OpenGL:     http://forum.warsztat.gd/index.php/topic,2147.0.html
Próbowałem ją zastosować u siebie i wynik jest taki, że zamiast rysować obiekt w miejscu kliknięcia myszy, rysuje go w punkcie (0,0,0) , albo w okolicach.

Używane tablice i zmienna logiczna:
bool m_PickInfo_Saved;
int m_PickInfo_Viewport[10];
double m_PickInfo_ModelView[10];
double m_PickInfo_Projection[10];

Funkcja, którą wywołuję przy renderowaniu każdej klatki:
void CSwiat::Pobierz_dane()
{
// Pobranie informacji do testowania promienia
glGetIntegerv(GL_VIEWPORT, m_PickInfo_Viewport);
glGetDoublev(GL_MODELVIEW_MATRIX, m_PickInfo_ModelView);
glGetDoublev(GL_PROJECTION_MATRIX, m_PickInfo_Projection);
m_PickInfo_Saved = true;
}



A tutaj funkcja, którą wywołuję po wykryciu kliknięcia myszy:

bool CSwiat::Wylicz_punkt_klikniecia(CVector* Punkt_klikniecia, CVector* Kierunek, int Mysz_x, int Mysz_y)
{

if (!m_PickInfo_Saved)
return false;

double MyWinX = static_cast<double>(Mysz_x);
double MyWinY = static_cast<double>(m_PickInfo_Viewport[3]-Mysz_y-1);
double OutX1, OutY1, OutZ1;
double OutX2, OutY2, OutZ2;

if (!gluUnProject(
MyWinX, MyWinY, 0.0,
m_PickInfo_ModelView,
m_PickInfo_Projection,
m_PickInfo_Viewport,
&OutX1, &OutY1, &OutZ1))
{
return false;
}
if (!gluUnProject(
MyWinX, MyWinY, 0.1,
m_PickInfo_ModelView,
m_PickInfo_Projection,
m_PickInfo_Viewport,
&OutX2, &OutY2, &OutZ2))
{
return false;
}

Punkt_klikniecia->x = static_cast<float>(OutX1);
Punkt_klikniecia->y = static_cast<float>(OutY1);
Punkt_klikniecia->z = static_cast<float>(OutZ1);

Kierunek->x = static_cast<float>(OutX2) - Punkt_klikniecia->x;
Kierunek->y = static_cast<float>(OutY2) - Punkt_klikniecia->y;
Kierunek->z = static_cast<float>(OutZ2) - Punkt_klikniecia->z;

return true;
}




I sam moment wywołania tej funkcji:

CVector Punkt_klikniecia, Kierunek;

Wylicz_punkt_klikniecia(&Punkt_klikniecia, &Kierunek, myszka->Click_X, myszka->Click_Y);



99% to Twój kod, zmieniłem tylko nazwy zmiennych. Wiecie co tu jest nie tak?

5
Szkółka / Problem z WM_LBUTTONUP
« dnia: Maj 27, 2009, 14:01:40 »
Witam

Mam problem z obsługą kliknięć za pomocą komunikatów windowsowych.
Chciałbym, aby po otrzymaniu komunikatu 'WM_LBUTTONUP' wywołała się funkcja:

void CSwiat::Rysuj_strzalke()
{
if(l_strzalki < 20)
{
Strzalki_stan[l_strzalki]= 1; //1 oznacza, że strzałka znajdująca się w Strzalki[l_strzalki] ma być narysowana
Strzalki[l_strzalki]->Zmien_pozycje(myszka->Zwroc_X()-400, -5, myszka->Zwroc_Y()-310);
l_strzalki++;
}
else
{
PostQuitMessage(0);
}

}

Zmienia ona wartości w tablicy Strzalki_stan[20], a na jej podstawie w każdej klatce rysowane są strzałki.

Problem w tym, że Windows jak gdyby dostawał kilka komunikatów na każde kliknięcie i wywoływał tę funkcję wiele razy.



Proszę o pomoc i z góry dziękuję

6
Matematyka i fizyka / Problem z kierunkiem poruszania postaci
« dnia: Maj 24, 2009, 14:51:09 »
Witam.

Wiem, że te problemy pojawiały się już często i przepatrzyłem forum, ale nie znalazłem rozwiązania mojego problemu.
Mam zrobić poruszanie się postaci po krzywej Beziera, co się sprowadza do wędrówki do kolejnych punktów. Problemy są 2.

1. Postaci zdarza się iść tyłem.
2. Postać znika na początku i na końcu trasy.


A robię to tak. Najpierw wyznaczam cele, które zapisuje w tablicy wektorów Cel[10].
Potem każę mu iść do następnego celu i czekam aż tam dojdzie.

Później obracam go w stronę celu (to szwankuje) i wysyłam go w drogę:

bool CMD2Model::Przemieszczenie_automat(CVector Cel) //Jeśli dotrze do zadanego celu (CVector Cel), to zwraca true
{

CVector Kierunek= Cel - position; //Tworzenie wektora, który jest różnicą położenia wózka i jego celu
Kierunek.Normalize();             //Normalizacja

//Obrócenie w stronę celu
direction= RAD2DEG(asin((Cel.z - position.z) / (Cel.x - position.x)));


if((position.x >= Cel.x - 5 && position.x <= Cel.x + 5) && (position.z >= Cel.z - 5 && position.z <= Cel.z + 5)) //Gdy dotarł do celu, to wyznacz kolejny cel
{
return true;
}

else
{
position.x += Kierunek.x;
position.z += Kierunek.z;
}



}



A tak wygląda rysowanie postaci:

glPushMatrix();
   
   glTranslatef(dresu->Zwroc_X(), dresu->Zwroc_Y(), dresu->Zwroc_Z());  //Przemieszcza się do pumktu o współrzędnych rysowanego obiektu
   glRotatef(-dresu->direction + 90.0, 0.0, 1.0, 0.0);
   glRotatef(270.0f, 0.0f, 0.0f, 1.0f);
   dresu->Animate(39, 80, 0.5);

glPopMatrix();


Wydaje mi się, że coś jest nie tak ze zmienną direction, ale nie wiem co. Próbowałem długo, ale nie dałem rady i proszę o pomoc :)

Z góry dzięki.

7
Szkółka / Problem z Direct Input
« dnia: Kwiecień 30, 2009, 23:38:28 »
Witam

Chciałem wykorzystać w moim programie klasę "CInputSystem" z książki "OpenGL Programowanie Gier". Kiedy uruchamiam przykład z płyty, wszystko jest ok, ale jak tylko dołączę te pliki do mojego projektu, to wyskakują błędy w stylu: "unresolved external symbol _c_dfDIKeyboard" . Może ktoś ma jakiś pomysł, co jest nie tak? Z góry dzięki.

8
Grafika 3D / Blender - problem z UV mappingiem
« dnia: Kwiecień 25, 2009, 17:33:42 »
Witam, mam problem z oteksturowaniem modelu. Niby wszystko jest OK, tworzę Seama, potem Unwrapuję, ale kiedy załaduję obrazek, zauważam, że jest kilka miejsc w modelu, które są oteksturowane nie z tej strony, co powinny( teksturę widać tylko od środka). Z góry dziękuję za jakąkolwiek pomoc.

9
OpenGL / Problem z eksportem tekstury z Blendera do OpenGL
« dnia: Kwiecień 01, 2009, 14:50:24 »
Jak w temacie. Zrobiłem unwrapping sześcianu i dałem prostą teksturkę, wyeksportowałem do md2, po zaimportowaniu z powrotem do Blendera wszystko było ok. Kiedy jednak chcę to wyświetlić w OpenGL, pojawiają się problemy... Kiedy wyświetlam sam model bez tekstury wszystko gra, kiedy chcę wyświetlić oteksturowany, wyświetla biały sześcian.
Przerabiam kod z książki 'Programowanie gier w OpenGL': http://glbook.gamedev.net/source.asp  (chapter 18). Nie jest to chyba wina tekstury, bo jak chcę wyświetlić tą załączoną z przykładem to też nie teksturuje sześcianu.

Proszę o pomoc i z góry dzięki

Strony: [1]