2015-06-30 14 views
6

Tôi có mã cpp hiển thị hình dạng OpenGL đơn giản trong Maya. Nếu khung nhìn di sản được sử dụng, sau đó tôi có một cách chính xác những gì tôi muốn: mũi tên đi dọc theo trục x:
Các hành vi OpenGL khác nhau tùy thuộc vào chế độ xem của Maya được sử dụng

enter image description here

camera Tuy nhiên nếu tôi sử dụng cùng mã trong Viewport 2.0 thì các mũi tên đang theo dõi phong trào:

enter image description here

enter image description here

này đang xảy ra chỉ khi tôi áp dụng glTranslatef (mà tôi sẽ cần phải sử dụng).

Đây là đoạn mã:

for (int i=0;i<10;i++) 
{ 
    glPushMatrix(); 
    glTranslatef(i,0,0); 
    glBegin(GL_LINES); 
    // Arrow 
    glVertex3f(0, y, z); 
    glVertex3f(1, y, z); 

    glVertex3f(1, y, z); 
    glVertex3f(0.5, y, z+0.5); 

    glVertex3f(1, y, z); 
    glVertex3f(0.5, y, z-0.5); 

    glEnd(); 
    glPopMatrix(); 
} 

Làm thế nào tôi có thể có hành vi thích hợp trong "mới" Maya viewport?

+0

Một phần trong tôi cảm thấy như bạn đang bỏ lỡ một 'glLoadIdentity()' sau đó 'glPushmatrix()', cái kia cảm thấy như thế là quá dễ để trở thành sự thật. – Borgleader

+0

Một phần khác không may là đúng. Cảm ơn vì đề xuất này :-) –

+0

Hành vi ma trận lạ khiến tôi tự hỏi liệu các khung nhìn khác nhau có ngăn xếp ma trận khác nhau bị ràng buộc hay không, và trong trường hợp thứ hai, bạn đang áp dụng biến đổi cho ma trận chiếu thay vì modelview hoặc thứ gì đó. .. – JasonD

Trả lời

2

Theo dõi nhận xét của tôi, có vẻ như bản dịch đang diễn ra trong một khung tọa độ khác với kết xuất, điều này gợi ý cho tôi rằng một ngăn xếp ma trận khác bị ràng buộc. Vì vậy, trong khung nhìn cũ (nơi kết quả của bạn là 'chính xác') bạn đang nối một bản dịch vào ma trận modelview, nhưng trong trường hợp 2.0, bạn có thể nối một bản dịch vào phép chiếu ma trận - kết quả sẽ trong bản dịch xuất hiện tương đối so với màn hình, thay vì chế độ xem.

Tôi muốn giới thiệu đảm bảo rằng tất cả các nhà nước có liên quan được thiết lập một cách chính xác trong làm cho cuộc gọi của bạn, chẳng hạn như thiết lập các glMatrixMode mong muốn() trước khi can thiệp vào ma trận chồng vv

+0

Điều đó làm cho lừa, cảm ơn! Tôi đã phải thực hiện glMatrixMode (GL_MODELVIEW) –

Các vấn đề liên quan