From 602704a081e5164f12f386acc103e79b843db2f4 Mon Sep 17 00:00:00 2001 From: Sol Kim Date: Wed, 16 Nov 2016 18:24:38 +0900 Subject: [PATCH] fixed screen_window_min/max setting --- .../IECoreArnold/src/IECoreArnold/CameraAlgo.cpp | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/contrib/IECoreArnold/src/IECoreArnold/CameraAlgo.cpp b/contrib/IECoreArnold/src/IECoreArnold/CameraAlgo.cpp index 64503f0906..09b2fc66c0 100644 --- a/contrib/IECoreArnold/src/IECoreArnold/CameraAlgo.cpp +++ b/contrib/IECoreArnold/src/IECoreArnold/CameraAlgo.cpp @@ -89,8 +89,17 @@ AtNode *CameraAlgo::convert( const IECore::Camera *camera ) const Imath::V2i &resolution = cameraCopy->parametersData()->member( "resolution", true )->readable(); const float pixelAspectRatio = cameraCopy->parametersData()->member( "pixelAspectRatio", true )->readable(); float aspect = pixelAspectRatio * (float)resolution.x / (float)resolution.y; - AiNodeSetPnt2( result, "screen_window_min", screenWindow.min.x, screenWindow.min.y * aspect ); - AiNodeSetPnt2( result, "screen_window_max", screenWindow.max.x, screenWindow.max.y * aspect ); + + if ( aspect < 1.0f ) + { + AiNodeSetPnt2( result, "screen_window_min", screenWindow.min.x, screenWindow.min.y * aspect ); + AiNodeSetPnt2( result, "screen_window_max", screenWindow.max.x, screenWindow.max.y * aspect ); + } + else + { + AiNodeSetPnt2( result, "screen_window_min", screenWindow.min.x / aspect, screenWindow.min.y ); + AiNodeSetPnt2( result, "screen_window_max", screenWindow.max.x / aspect, screenWindow.max.y ); + } // Set any Arnold-specific parameters