FirstPersonCamera::FirstPersonCamera(float aspectRatio, float fieldOfView, float nearClip, float farClip) : BaseCamera(nearClip, farClip) , m_aspectRatio(aspectRatio) , m_fov(fieldOfView) { OC_ASSERT(m_aspectRatio > 0); OC_ASSERT(m_fov > 0 && m_fov < OC_PI); CreateProjection(); }
OrthographicCamera::OrthographicCamera(float minX, float minY, float maxX, float maxY, float nearClip, float farClip) : Camera(), m_fxMin(minX), m_fyMin(minY), m_fxMax(maxX), m_fyMax(maxY) { Assert_(maxX > minX && maxY > minY); m_fNearPlane = nearClip; m_fFarPlane = farClip; CreateProjection(); }
void initilize() { // SenseManagerを生成する senseManager = PXCSenseManager::CreateInstance(); if ( senseManager == 0 ) { throw std::runtime_error( "SenseManagerの生成に失敗しました" ); } // カラーストリームを有効にする auto sts = senseManager->EnableStream( PXCCapture::StreamType::STREAM_TYPE_COLOR, COLOR_WIDTH, COLOR_HEIGHT, COLOR_FPS ); if ( sts<PXC_STATUS_NO_ERROR ) { throw std::runtime_error( "カラーストリームの有効化に失敗しました" ); } // Depthストリームを有効にする sts = senseManager->EnableStream( PXCCapture::StreamType::STREAM_TYPE_DEPTH, DEPTH_WIDTH, DEPTH_HEIGHT, DEPTH_FPS ); if ( sts<PXC_STATUS_NO_ERROR ) { throw std::runtime_error( "Depthストリームの有効化に失敗しました" ); } // 手の検出を有効にする sts = senseManager->EnableHand(); if ( sts < PXC_STATUS_NO_ERROR ) { throw std::runtime_error( "手の検出の有効化に失敗しました" ); } // パイプラインを初期化する sts = senseManager->Init(); if ( sts<PXC_STATUS_NO_ERROR ) { throw std::runtime_error( "パイプラインの初期化に失敗しました" ); } // デバイスを取得する auto device = senseManager->QueryCaptureManager()->QueryDevice(); // ミラー表示にする device->SetMirrorMode( PXCCapture::Device::MirrorMode::MIRROR_MODE_HORIZONTAL ); // 座標変換オブジェクトを作成 projection = device->CreateProjection(); // 手の検出の初期化 initializeHandTracking(); }
ERMsg CProjectionManager::Load(const std::string& filePath, CProjectionPtr& pPrj) { ERMsg msg; ifStream file; msg = file.open(filePath); if (msg) { string src = file.GetText(); msg = CreateProjection(src.c_str()); if (msg) pPrj = GetPrj(src.c_str()); file.close(); } return msg; }
void OrthographicCamera::SetMaxY(float maxY) { m_fyMax = maxY; CreateProjection(); }
void OrthographicCamera::SetMaxX(float maxX) { m_fxMax = maxX; CreateProjection(); }
void OrthographicCamera::SetMinY(float minY) { m_fyMin = minY; CreateProjection(); }
void OrthographicCamera::SetMinX(float minX) { m_fxMin = minX; CreateProjection(); }
void BaseCamera::SetNearClip(float nearClip) { m_nearZ = nearClip; CreateProjection(); }
void BaseCamera::SetFarClip(float farClip) { m_farZ = farClip; CreateProjection(); }
void FirstPersonCamera::SetFov(float fov) { m_fov = fov; CreateProjection(); }
void FirstPersonCamera::SetAspectRatio(float aspect) { m_aspectRatio = aspect; CreateProjection(); }