2012-11-28 27 views
5

Viết một ứng dụng biểu đồ mở nhỏ và cần một cách để thay đổi chiều cao Máy ảnh. Về cơ bản, mắt đang nhìn thẳng vào một quả bóng trong không gian. Những gì tôi muốn làm là có thể hạ thấp chiều cao của máy ảnh để tôi có thể chơi bóng từ bên dưới và cũng tăng chiều cao của máy ảnh nếu tôi cần. Làm thế nào để tôi đạt được điều này hoặc với mã oPengl hoặc OpenScenegraph?C++ OpenSceneGraph Thay đổi máy ảnh Chiều cao mắt

int main(int argc, char* argv[]) 
{ 
    osg::ref_ptr<osg::ShapeDrawable> shape2 = new osg::ShapeDrawable; 
    shape2->setShape(new osg::Sphere(osg::Vec3(3.0f, 0.0f, 0.0f),1.0f)); 
    shape2->setColor(osg::Vec4(0.0f, 0.0f, 1.0f, 1.0f)); 
    osg::ref_ptr<osg::Geode> root = new osg::Geode; 
    root->addDrawable(shape2.get());///add first osgshapeDrawable2 
    osgViewer::Viewer viewer; 
    viewer.setSceneData(root.get());///set the Geode as scenedata for the viewer 
    return viewer.run(); 
} 

Trả lời

3

Bạn cần tiếp quản quyền kiểm soát của osgViewer::Camera, bạn không nên cố gắng thực hiện việc này bằng OpenGL cơ bản.

osgViewer::Viewer::getCameraWithFocus sẽ đưa bạn đến Máy ảnh. Từ đây bạn có thể đặt vị trí và giao diện của Camera.

Hãy nhớ, trong một ứng dụng cơ bản như bạn có ở đó, Trình thao tác trên máy ảnh sẽ đặt vị trí của máy ảnh (dựa trên tương tác chuột) một lần trên mỗi khung hình.

Bạn sẽ cần quyết định cách bạn muốn xử lý thao tác nhập chuột và có thể đảm nhận nhiệm vụ mà Trình thao tác trên máy ảnh đang thực hiện.

+0

Tôi có một người thao túng và có máy ảnh. Những gì còn lại là thay đổi chiều cao của chính nó. Làm thế nào để đạt được điều này? Tôi có thể sửa đổi thuộc tính nào của máy ảnh để di chuyển nó lên hoặc xuống trong trường hợp này? – Kobojunkie

0

Sử dụng phương pháp setViewMatrixAsLookAt (link) trên đối tượng Máy ảnh của bạn. Phương pháp này có ba tham số:

  • eye: Vị trí của máy ảnh - bạn có thể sử dụng để đặt chiều cao của nó.
  • center: Điểm mà máy ảnh của bạn đang xem - đặt giá trị này thành tâm của đối tượng được quan sát.
  • up: Up-vector của máy ảnh - điều khiển cách chế độ xem của bạn sẽ xoay về trung tâm của nó và phải bằng [0, 1, 0] trong hệ thống tọa độ đồ họa thông thường.

Bởi vì phương pháp này sẽ chăm sóc của vòng quay của camera bằng cách xác định điểm mà tại đó nó tìm, bạn chỉ nên thay đổi y-phối hợp của eye vector để thực hiện những gì bạn đang xin.

Bạn có thể xem thêm chi tiết về bộ ba véc tơ 'xem xét' here.

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