|
|
|
|
|
/* <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>lib.h*/
|
|
|
|
|
|
#ifndef XJ_OSG_VIEW_H
|
|
|
|
|
|
#define XJ_OSG_VIEW_H
|
|
|
|
|
|
|
|
|
|
|
|
#include "XJObject.h"
|
|
|
|
|
|
#include "XJPoint2D.h"
|
|
|
|
|
|
#include "ViewExport.h"
|
|
|
|
|
|
#include "ViewCommon.h"
|
|
|
|
|
|
#include "OSGDef.h"
|
|
|
|
|
|
#include <string>
|
|
|
|
|
|
#include <vector>
|
|
|
|
|
|
#include <map>
|
|
|
|
|
|
|
|
|
|
|
|
class CRenderingThread;
|
|
|
|
|
|
class CXJPlane;
|
|
|
|
|
|
class CXJ2DLine;
|
|
|
|
|
|
class CXJ2DGeomCircle;
|
|
|
|
|
|
struct pickPoint2D;
|
|
|
|
|
|
struct pickPoint3D;
|
|
|
|
|
|
typedef unsigned int UINT;
|
|
|
|
|
|
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
//ѡ<><D1A1>ģʽ
|
|
|
|
|
|
enum eOsgPickMode
|
|
|
|
|
|
{
|
|
|
|
|
|
OSG_PICK_OBJECT = 0, //ѡ<><D1A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
OSG_PICK_POINT = 1 //ѡ<><D1A1><EFBFBD><EFBFBD>
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
class XJOSGVIEWEXPORT CXJOSGView
|
|
|
|
|
|
{
|
|
|
|
|
|
public:
|
|
|
|
|
|
CXJOSGView(void* hWnd, int index);
|
|
|
|
|
|
virtual ~CXJOSGView();
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ
|
|
|
|
|
|
void InitOSG(const std::string& bkgFile);
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ⱦ<EFBFBD>߳<EFBFBD>
|
|
|
|
|
|
void StartRenderingThread();
|
|
|
|
|
|
|
|
|
|
|
|
//ǰ<><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
void PreFrameUpdate();
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
void PostFrameUpdate();
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD>볡<EFBFBD><EBB3A1><EFBFBD><EFBFBD><EFBFBD>ػ<EFBFBD>
|
|
|
|
|
|
void RequestRedraw();
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ⱦ<EFBFBD><C8BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֡<EFBFBD><D6A1>
|
|
|
|
|
|
void SetRunMaxFrameRate(double frameRate) {m_runMaxFrameRate = frameRate;}
|
|
|
|
|
|
double GetRunMaxFrameRate() {return m_runMaxFrameRate;}
|
|
|
|
|
|
|
|
|
|
|
|
//<2F>ͷų<CDB7><C5B3><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD>ڴ<EFBFBD>
|
|
|
|
|
|
int TerminateOSG();
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><>Ⱦ<EFBFBD><C8BE>ͼ
|
|
|
|
|
|
static void Render(void* ptr);
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD>ݴ<EFBFBD><DDB4><EFBFBD><EFBFBD>Ķ<EFBFBD><C4B6><EFBFBD>ָ<EFBFBD>룬<EFBFBD><EBA3AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĭ<EFBFBD><C4AC>Ϊ<EFBFBD><CEAA><EFBFBD>¶<EFBFBD><C2B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
int UpdateObjectView(CXJObject* obj, EOSGUpdateType updateType = UPDATE_ALL);
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD>UIģ<49><C4A3><EFBFBD>еIJ<D0B5><C4B2><EFBFBD><EFBFBD>¼<EFBFBD><C2BC><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>CXJMouseOperator<6F><72>
|
|
|
|
|
|
void ActivateEventOperator(void* pEventOp);
|
|
|
|
|
|
void DeactiveEventOperator();
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
int UpdatePolyLineOnScreen(std::vector<std::vector<Point3D>>& polyline, Point3D curPoint);
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
void ClearPolyLineOnScreen();
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD>ͶӰ<CDB6><D3B0>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC>
|
|
|
|
|
|
void SetProjView(XJViewType viewType);
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD>ͶӰ<CDB6><D3B0>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC>
|
|
|
|
|
|
void SetProjViewNoZoom(XJViewType viewType);
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6>ͼ
|
|
|
|
|
|
void ZoomView();
|
|
|
|
|
|
|
|
|
|
|
|
//<2F>ƶ<EFBFBD><C6B6><EFBFBD>ͼ
|
|
|
|
|
|
void SetViewPos(double px, double py, double scale);
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><>ȡ<EFBFBD><C8A1>ͼλ<CDBC><CEBB>
|
|
|
|
|
|
void GetViewPos(Point2D& pt, double& scale);
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͶӰ<CDB6><D3B0>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͶӰ<CDB6><D3B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><CDB8>ͶӰ<CDB6><D3B0>
|
|
|
|
|
|
void StartOrthoProjection();
|
|
|
|
|
|
void StartPerspectProjection();
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD>ѡ<EFBFBD>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD>omkey<65><79><EFBFBD><EFBFBD>
|
|
|
|
|
|
const std::vector<int>& GetSelOmKeyList();
|
|
|
|
|
|
|
|
|
|
|
|
/*******ʰȡ<CAB0><C8A1>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD>ӿ<EFBFBD>*******/
|
|
|
|
|
|
|
|
|
|
|
|
//ѡ<>еĶ<D0B5><C4B6><EFBFBD><EFBFBD>ĸ<EFBFBD><C4B8><EFBFBD>
|
|
|
|
|
|
int NbSelected();
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD>ѡ<EFBFBD>еĶ<D0B5><C4B6><EFBFBD><EFBFBD><EFBFBD>omkey
|
|
|
|
|
|
int SelectedObjOmKey(int index);
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD>ʰȡ<CAB0>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD>ʰȡ<CAB0>ɹ<EFBFBD><C9B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵΪtrue
|
|
|
|
|
|
int PickedPoint(Point3D& interPt);
|
|
|
|
|
|
int PickedPoint(Point3D& interPt, Point3D& interNormal);
|
|
|
|
|
|
|
|
|
|
|
|
int PickedDir(Point3D& dir);
|
|
|
|
|
|
|
|
|
|
|
|
int PickedPoint2D(pickPoint2D& pp);
|
|
|
|
|
|
|
|
|
|
|
|
int PickedPoint3D(pickPoint3D& pp);
|
|
|
|
|
|
|
|
|
|
|
|
/****ʰȡ<CAB0><C8A1>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*****/
|
|
|
|
|
|
//ѡ<><D1A1><EFBFBD><EFBFBD>ͼ<EFBFBD>еĶ<D0B5><C4B6><EFBFBD><EFBFBD><EFBFBD>Ĭ<EFBFBD><C4AC><EFBFBD>β<EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD>ֵΪ<D6B5><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>OMKey
|
|
|
|
|
|
int PickObject(int x, int y, bool hightlight = true, bool reverseY = false);
|
|
|
|
|
|
int PickedObject();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><>orgPoint<6E><74><EFBFBD>϶<EFBFBD><CFB6><EFBFBD><EFBFBD><EFBFBD>Ļ(corX,corY)<29><><EFBFBD><EFBFBD>ʱ<EFBFBD>Ŀռ<C4BF><D5BC><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
void DragPoint(const Point3D& orgPoint, int corX, int corY, Point3D& pt);
|
|
|
|
|
|
|
|
|
|
|
|
//ʰȡ2άƽ<CEAC><C6BD><EFBFBD>ϵĵ<CFB5>
|
|
|
|
|
|
int Pick2DPoint(int x, int y, Point3D& pnt);
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD>ʰȡģʽ
|
|
|
|
|
|
void SetPickMode(int pickModel);
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD>ʰȡ<CAB0><C8A1><EFBFBD>õ<EFBFBD>osgKey<65><79><EFBFBD><EFBFBD><EFBFBD>ö<EFBFBD><C3B6>ڵĶ<DAB5><C4B6><EFBFBD><EFBFBD><EFBFBD>omkey
|
|
|
|
|
|
int GetOmKeyByOsgKey(int osgKey);
|
|
|
|
|
|
|
|
|
|
|
|
/**************<2A><>OSG<53><47>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD>ʾģ<CABE><C4A3>*****************************************/
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD>Ļ<EFBFBD>ϻ<EFBFBD><CFBB>ƶ<EFBFBD><C6B6><EFBFBD><EFBFBD>ߣ<EFBFBD><DFA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD>仯
|
|
|
|
|
|
int DrawPolylineOnWindow(std::vector<Point3D>& polyline);
|
|
|
|
|
|
int DrawPolylineOnMFCWindow(std::vector<Point3D>& polyline, int state=0);
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ļ<EFBFBD>ϻ<EFBFBD><CFBB>ƵĶ<C6B5><C4B6><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
int ClearPolylineOnWindow();
|
|
|
|
|
|
|
|
|
|
|
|
//<2F>ڳ<EFBFBD><DAB3><EFBFBD><EFBFBD>л<EFBFBD><D0BB>ƶ<EFBFBD><C6B6><EFBFBD><EFBFBD>ߣ<EFBFBD><DFA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD>仯
|
|
|
|
|
|
int DrawPolylineOnSceneGraph(std::vector<Point3D>& polyline);
|
|
|
|
|
|
int ClearPolylineOnSceneGraph();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD>Ļ<EFBFBD>ϻ<EFBFBD><CFBB><EFBFBD>Բ<EFBFBD><D4B2>ָ<EFBFBD><D6B8>Բ<EFBFBD><D4B2>λ<EFBFBD>úͰ뾶<CDB0><EBBEB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD>仯
|
|
|
|
|
|
int DrawCircleOnWindow(int x, int y, float circleRad = 1.0);
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ļ<EFBFBD>ϻ<EFBFBD><CFBB>Ƶ<EFBFBD>Բ
|
|
|
|
|
|
int ClearCircleOnWindow();
|
|
|
|
|
|
/***************<2A><>OSG<53><47>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD>ʾģ<CABE><C4A3>****************************************/
|
|
|
|
|
|
|
|
|
|
|
|
/****<2A><>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܽӿ<DCBD>****/
|
|
|
|
|
|
|
|
|
|
|
|
//<2F>ж<EFBFBD>osg<73>Ƿ<EFBFBD>ӵ<EFBFBD>в<EFBFBD><D0B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD>
|
|
|
|
|
|
bool HasOperatorHandler();
|
|
|
|
|
|
|
|
|
|
|
|
//ȥ<><C8A5><EFBFBD><EFBFBD><EFBFBD>еIJ<D0B5><C4B2><EFBFBD><EFBFBD>¼<EFBFBD>
|
|
|
|
|
|
void OnNoSelectEvent();
|
|
|
|
|
|
|
|
|
|
|
|
//ȡ<><C8A1><EFBFBD><EFBFBD>̬ʰȡ<CAB0><C8A1><EFBFBD><EFBFBD><EFBFBD>ĸ<EFBFBD><C4B8><EFBFBD><EFBFBD>Ӵ<EFBFBD><D3B4><EFBFBD>ʾ
|
|
|
|
|
|
void UnlightDynamicDetectedObject();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//ʹ<><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƽ<EFBFBD>Ʋ<EFBFBD><C6B2><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
void OnCameraPan();
|
|
|
|
|
|
|
|
|
|
|
|
//ʹ<><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
void OnCameraOrbit();
|
|
|
|
|
|
|
|
|
|
|
|
//ʹ<>ù켣<C3B9><ECBCA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
void OnCameraTrackball();
|
|
|
|
|
|
|
|
|
|
|
|
//ʹ<>ó<EFBFBD><C3B3><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD>켣<EFBFBD><ECBCA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
void OnCameraContinuousOrbit();
|
|
|
|
|
|
|
|
|
|
|
|
//ʹ<>ù̶<C3B9><CCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת
|
|
|
|
|
|
void OnCameraVerticalAxisOrbit();
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD>ı<EFBFBD><C4B1><EFBFBD>
|
|
|
|
|
|
void ClearMarkUp();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
void HilightObject(int omkey);
|
|
|
|
|
|
void UnHilightObject(int omkey);
|
|
|
|
|
|
|
|
|
|
|
|
//ѡ<><D1A1>ָ<EFBFBD><D6B8>key<65><79><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><F3A3ACBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
int SelectObject(int omkey);
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾѡ<CABE><D1A1><EFBFBD>б<EFBFBD><D0B1>еĶ<D0B5><C4B6><EFBFBD>
|
|
|
|
|
|
void DeSelectSelList();
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><>ѡ<EFBFBD><D1A1><EFBFBD>б<EFBFBD><D0B1>е<EFBFBD><D0B5><EFBFBD><EFBFBD>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>
|
|
|
|
|
|
void InvisibleSelList(bool visible);
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><>ѡ<EFBFBD><D1A1><EFBFBD>б<EFBFBD><D0B1>е<EFBFBD><D0B5><EFBFBD><EFBFBD>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD>Ϊ<CEAA><CDB8>
|
|
|
|
|
|
void TransparentSelList(bool transparent);
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><>ѡ<EFBFBD><D1A1><EFBFBD>б<EFBFBD><D0B1>е<EFBFBD><D0B5><EFBFBD><EFBFBD>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD>߿<EFBFBD><DFBF><EFBFBD>ʾ
|
|
|
|
|
|
void WireframeSelList(bool wireframe);
|
|
|
|
|
|
|
|
|
|
|
|
void SetPolygonOffsets(CXJObject* pobj, float aFactor, float aUnits);
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
void SetViewManipulatorEnable(bool enable);
|
|
|
|
|
|
|
|
|
|
|
|
/*******ģ<><C4A3><EFBFBD>϶<EFBFBD><CFB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*******/
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ά<EFBFBD>϶<EFBFBD><CFB6><EFBFBD>
|
|
|
|
|
|
void TranslateAxisDragger(CXJObject *obj);
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD>һά<D2BB><CEAC><EFBFBD><EFBFBD><EFBFBD>϶<EFBFBD><CFB6><EFBFBD>
|
|
|
|
|
|
void TranslateDirDragger(std::vector<CXJObject*> objList, Point3D dir);
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD>һά<D2BB><CEAC><EFBFBD><EFBFBD><EFBFBD>϶<EFBFBD><CFB6><EFBFBD><EFBFBD><EFBFBD>ת
|
|
|
|
|
|
void TranslateDirAndRotateDragger(std::vector<CXJObject*> objList, Point3D dir);
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>̶<EFBFBD><CCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD>϶<EFBFBD><CFB6><EFBFBD>
|
|
|
|
|
|
void RotateDirDragger( CXJObject *obj,Point3D dir );
|
|
|
|
|
|
|
|
|
|
|
|
void SetTranslationDraggerStep(double step);
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>Ĺ켣<C4B9><ECBCA3><EFBFBD>϶<EFBFBD><CFB6><EFBFBD>
|
|
|
|
|
|
void TrackBallDragger(CXJObject *obj);
|
|
|
|
|
|
void SetRotationDraggerStep(double step);
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ļ<EFBFBD><C4BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>϶<EFBFBD>
|
|
|
|
|
|
void Translate2DDragger(CXJObject *obj);
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ļ<EFBFBD><C4BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת
|
|
|
|
|
|
void TrackBall2DDragger(CXJObject* obj);
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ո<EFBFBD><D5B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>϶<EFBFBD>
|
|
|
|
|
|
void TranslateLocalCordDragger(CXJObject* obj, const Point3D& localCorX, const Point3D& localCorY, const Point3D& localCorZ);
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ո<EFBFBD><D5B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת
|
|
|
|
|
|
void TrackBallLocalCordDragger(CXJObject* obj, const Point3D& localCorX, const Point3D& localCorY, const Point3D& localCorZ);
|
|
|
|
|
|
|
|
|
|
|
|
void TransformObjectOnce(CXJObject* obj, Point3D originPt, Point3D oriVec, Point3D destVec);
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>϶<EFBFBD><CFB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
void ClearDraggerObject();
|
|
|
|
|
|
|
|
|
|
|
|
//<2F>ж<EFBFBD><D0B6><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD>Ƿ<EFBFBD><C7B7>Ѿ<EFBFBD><D1BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>϶<EFBFBD><CFB6><EFBFBD>
|
|
|
|
|
|
bool IsExistDragger();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD>ݸ<EFBFBD><DDB8><EFBFBD><EFBFBD>IJ<EFBFBD><C4B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƶ<EFBFBD><C6B6><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
|
|
|
|
|
|
void TranslateObject(CXJObject *obj, float x, float y, float z );
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD>ݸ<EFBFBD><DDB8><EFBFBD><EFBFBD>IJ<EFBFBD><C4B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
|
|
|
|
|
|
void RotateObject(CXJObject* obj, Point3D basePt,Point3D dir,float angle);
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾλ<CABE><CEBB>
|
|
|
|
|
|
void ResetObjectViewPos(CXJObject* obj);
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD>϶<EFBFBD><CFB6><EFBFBD>
|
|
|
|
|
|
void GetObjectTranslation(CXJObject *obj, float &x, float &y, float &z);
|
|
|
|
|
|
|
|
|
|
|
|
void GetObjectRotation(CXJObject *obj, float &x, float &y, float &z,float &ang);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><>ȡ<EFBFBD><C8A1>Ļ<EFBFBD><C4BB><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>ڽ<EFBFBD>ƽ<EFBFBD><C6BD><EFBFBD><EFBFBD>λ<EFBFBD>ã<EFBFBD><C3A3><EFBFBD><EFBFBD><EFBFBD>Ļ<EFBFBD><C4BB><EFBFBD>ȶ<EFBFBD>Ӧ<EFBFBD><D3A6>ƽ<EFBFBD><C6BD><EFBFBD>ϳ<EFBFBD><CFB3><EFBFBD>
|
|
|
|
|
|
void TranslatePointW2NP(Point3D& p, double& r);
|
|
|
|
|
|
void TranslatePointW2NFP(Point3D& p, Point3D& N, Point3D& F);
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD>ʸת<CAB8><D7AA>Ϊ<EFBFBD><CEAA>ת<EFBFBD><D7AA><EFBFBD>ͽǶ<CDBD>ֵ
|
|
|
|
|
|
void ConvertDirToAngleAxis(const Point3D& dir, Point3D& rotAxis, double& angle);
|
|
|
|
|
|
|
|
|
|
|
|
bool MakeRotationByAxes(const Point3D& xdir, const Point3D& ydir, const Point3D& zdir,
|
|
|
|
|
|
Point3D& rotateAxis, double& angle, const char* priorityOrder = "ZXY");
|
|
|
|
|
|
|
|
|
|
|
|
//ɾ<><C9BE><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD>Ķ<EFBFBD><C4B6><EFBFBD>ƫ<EFBFBD><C6AB>ƽ<EFBFBD><C6BD>
|
|
|
|
|
|
void DeleteTempOffsetPlane();
|
|
|
|
|
|
|
|
|
|
|
|
void DeleteTempPattern2D();
|
|
|
|
|
|
|
|
|
|
|
|
/***********<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>*************/
|
|
|
|
|
|
//<2F><>ʾѡ<CABE><D1A1><EFBFBD>ĸ<EFBFBD><C4B8><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
void ShowSelPt(Point3D &pt);
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD>ѡ<EFBFBD>еĸ<D0B5><C4B8><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
void ClearSelPt();
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߵ<EFBFBD><DFB5><EFBFBD>ʱ<EFBFBD><CAB1>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
int CreateTempObject(CXJObject* obj);
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵĸ<CFB5><C4B8><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>
|
|
|
|
|
|
int DeleteTempObject();
|
|
|
|
|
|
|
|
|
|
|
|
void DeleteTempObject(const CXJObject* pobj);
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><>ʾ<EFBFBD>㼯
|
|
|
|
|
|
void ShowPointSet(const vector<Point3D>& pts);
|
|
|
|
|
|
//<2F><><EFBFBD>յ㼯
|
|
|
|
|
|
void ClearPointSet();
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><>ʾֱ<CABE><EFBFBD>
|
|
|
|
|
|
void ShowLineSet(const vector<Point3D>& pts);
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD>ֱ<EFBFBD><EFBFBD>
|
|
|
|
|
|
void ClearLineSet();
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD>ռ<EFBFBD><D5BC><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA>Ļ<EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
void ProjectObjectToWindow(const Point3D& pt, int& x, int& y );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*****************<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>****************************/
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD>ã<EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD>λ<EFBFBD>ú<EFBFBD><C3BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
void GetCameraLookAt(Point3D& eye, Point3D& target, Point3D& up) const;
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϸ<EFBFBD><CFB7><EFBFBD>
|
|
|
|
|
|
void GetCameraLookAt(Point3D& CameraNormal,Point3D& CameraUp) const;
|
|
|
|
|
|
|
|
|
|
|
|
Point3D GetCameraNormal() const;
|
|
|
|
|
|
Point3D GetCameraUp() const ;
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD>ã<EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD>λ<EFBFBD>ú<EFBFBD><C3BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
void SetCameraLookAt(Point3D a_normal,Point3D a_up);
|
|
|
|
|
|
|
|
|
|
|
|
void SetCameraLookAt(const Point3D& eye, const Point3D& target, const Point3D& up);
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD>ñ<EFBFBD><C3B1><EFBFBD>ͼƬ<CDBC>Ĵ洢·<E6B4A2><C2B7>
|
|
|
|
|
|
void SetBackGroudBmpPath(const std::string& path);
|
|
|
|
|
|
void SetBackGroudColor(int r, int g, int b, float a);
|
|
|
|
|
|
|
|
|
|
|
|
//ʹ<><CAB9>osg<73><67><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƽ<EFBFBD><C6BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ľ<EFBFBD><C4BD><EFBFBD>
|
|
|
|
|
|
int GetPlaneMeshIntersection(CXJObject* pobj, double plnDir[3],double plnPoint[3], std::vector<std::vector<Point3D>>& pnts,int& PolygonNum );
|
|
|
|
|
|
|
|
|
|
|
|
//ɾ<><C9BE><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD>osg<73><67><EFBFBD><EFBFBD>
|
|
|
|
|
|
void DeleteAllOSGObjects();
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD>÷ָ<C3B7><D6B8><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE>ǰ<EFBFBD><C7B0>
|
|
|
|
|
|
void setModelShowInFront(CXJObject* pobj);
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD>Text<78><74> displayPosΪ<73><CEAA>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>,alignment<6E><74>ʾ<EFBFBD><CABE><EFBFBD>ֶ<EFBFBD><D6B6>뷽ʽ
|
|
|
|
|
|
void setHUDText(wchar_t* str, HUDTextWinPos displayPos = WINDOW_LEFT_TOP_POS, AlignmentType alighment = BASE_LINE_ALIGNMENT);
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD>text<78><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD><D0A1><EFBFBD><EFBFBD>ɫ<EFBFBD><C9AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
void setHUDTextProperties(float textSize, COLORREF textColor, std::string& font);
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD>ֱ<EFBFBD><D6B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD>Ľ<EFBFBD><C4BD><EFBFBD>
|
|
|
|
|
|
int GetIntersectPt(CXJObject* pobj, const Point3D& start, Point3D& lineDir, Point3D& intersectPt);
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD>ͼƬ<CDBC><C6AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD>
|
|
|
|
|
|
bool setPictureOnBackGround(const std::string& picPath);
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD>Ĭ<EFBFBD>ϱ<EFBFBD><CFB1><EFBFBD>ͼƬ
|
|
|
|
|
|
void setDefaultBackGround();
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD>osg<73>е<EFBFBD><D0B5>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
void runEventHandle();
|
|
|
|
|
|
|
|
|
|
|
|
void* GetOSGInternal();
|
|
|
|
|
|
|
|
|
|
|
|
void DrawImage(std::string path);
|
|
|
|
|
|
|
|
|
|
|
|
void TakeObjectPicture(const std::vector<CXJObject*>& objList, std::string path,
|
|
|
|
|
|
Point3D eye,
|
|
|
|
|
|
Point3D dir,
|
|
|
|
|
|
Point3D up,
|
|
|
|
|
|
double rad,
|
|
|
|
|
|
int w=500, int h=500);
|
|
|
|
|
|
|
|
|
|
|
|
void EnablePickZValue(CXJObject* pobj, bool bEnable = true);
|
|
|
|
|
|
|
|
|
|
|
|
void EnableOpDrawPolygon(bool bEnable = true);
|
|
|
|
|
|
void GetOpDrawPolygon(std::vector<Point2D>& polygen);
|
|
|
|
|
|
|
|
|
|
|
|
void EnableAntiAliasing(bool bEnable);
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
void ShowMouse(int px, int py);
|
|
|
|
|
|
void GetMousePos(int& px, int& py);
|
|
|
|
|
|
private:
|
|
|
|
|
|
void * m_osgInternal;
|
|
|
|
|
|
void * m_hWnd;
|
|
|
|
|
|
int m_osgIndex;
|
|
|
|
|
|
double m_runMaxFrameRate;
|
|
|
|
|
|
CRenderingThread* m_ThreadHandle;
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
#endif
|