History

The Beginnings

Zach Fox committed 8 years ago

Commit 668e4ae1 parent 5e013143 files · +87 −3Browse files

Showing the changes to interface/src/Application.cpp (1 of 3 files). Show all

Unified · Split

interface/src/Application.cpp+29−1
@@ -5585,7 +5585,35 @@ void Application::updateSecondaryCameraViewFrustum() { · 5584 unmodified lines
5585 }5585 }
5586 5586
5587 ViewFrustum secondaryViewFrustum;5587 ViewFrustum secondaryViewFrustum;
5588 if (camera->mirrorProjection && !camera->attachedEntityId.isNull()) {5588 if (camera->portalProjection && !camera->attachedEntityId.isNull()) {
5589 auto entityScriptingInterface = DependencyManager::get<EntityScriptingInterface>();
5590 auto entityProperties = entityScriptingInterface->getEntityProperties(camera->attachedEntityId);
5591 glm::vec3 mirrorPropertiesPosition = entityProperties.getPosition();
5592 glm::quat mirrorPropertiesRotation = entityProperties.getRotation();
5593 glm::vec3 mirrorPropertiesDimensions = entityProperties.getDimensions();
5594 glm::vec3 halfMirrorPropertiesDimensions = 0.5f * mirrorPropertiesDimensions;
5595
5596 glm::mat4 worldFromMirrorRotation = glm::mat4_cast(mirrorPropertiesRotation) * glm::scale(vec3(1.0f, 1.0f, 1.0f));
5597 glm::mat4 worldFromMirrorTranslation = glm::translate(mirrorPropertiesPosition);
5598 glm::mat4 worldFromMirror = worldFromMirrorTranslation * worldFromMirrorRotation;
5599 glm::mat4 mirrorFromWorld = glm::inverse(worldFromMirror);
5600
5601 glm::vec3 mainCameraPositionWorld = getCamera().getPosition();
5602 glm::vec3 mainCameraPositionMirror = vec3(mirrorFromWorld * vec4(mainCameraPositionWorld, 1.0f));
5603 glm::vec3 mirrorCameraPositionMirror = vec3(mainCameraPositionMirror.x, mainCameraPositionMirror.y,
5604 mainCameraPositionMirror.z);
5605 glm::vec3 mirrorCameraPositionWorld = vec3(worldFromMirror * vec4(mirrorCameraPositionMirror, 1.0f));
5606
5607 glm::quat mirrorCameraOrientation = glm::quat_cast(worldFromMirrorRotation);
5608 secondaryViewFrustum.setPosition(mirrorCameraPositionWorld);
5609 secondaryViewFrustum.setOrientation(mirrorCameraOrientation);
5610
5611 float nearClip = mirrorCameraPositionMirror.z + mirrorPropertiesDimensions.z * 2.0f;
5612 glm::vec3 upperRight = halfMirrorPropertiesDimensions - mirrorCameraPositionMirror;
5613 glm::vec3 bottomLeft = -halfMirrorPropertiesDimensions - mirrorCameraPositionMirror;
5614 glm::mat4 frustum = glm::frustum(bottomLeft.x, upperRight.x, bottomLeft.y, upperRight.y, nearClip, camera->farClipPlaneDistance);
5615 secondaryViewFrustum.setProjection(frustum);
5616 } else if (camera->mirrorProjection && !camera->attachedEntityId.isNull()) {
5589 auto entityScriptingInterface = DependencyManager::get<EntityScriptingInterface>();5617 auto entityScriptingInterface = DependencyManager::get<EntityScriptingInterface>();
5590 auto entityProperties = entityScriptingInterface->getEntityProperties(camera->attachedEntityId);5618 auto entityProperties = entityScriptingInterface->getEntityProperties(camera->attachedEntityId);
5591 glm::vec3 mirrorPropertiesPosition = entityProperties.getPosition();5619 glm::vec3 mirrorPropertiesPosition = entityProperties.getPosition();