Changeset 13109

Show
Ignore:
Timestamp:
04/24/14 19:14:54 (less than one hour ago)
Author:
robert
Message:

From Kristofer Tingdahl, "I and my team have gone over the code again, and we feel that we are comfortable in our current proposal for change. It goes deeper than it did before, and I explain why:

There was code in the osgViewer/Viewer.cpp and osgViewer/CompositeViewer.cpp that transformed the Y-coordinates of an event. The code in the composite viewer did however miss the touch-data of the event. I thought that it should really be the GUIEventAdapter that should know about this, and hence I added the
GUIEventAdapter::setMouseYOrientationAndUpdateCoords which is re-computing the coordinates. First I simply added a boolean to the setMouseYOrientation function:

setMouseYOrientation( MouseYOrientation, bool updatecooreds=false );

but then the serializer complained.

This function is called from both the Viewer and the CompositeViewer?. We have not tested from the viewer, but I cannot see it would not work from visual inspection.

The other change is in MultiTouchTrackballManipulator::handleMultiTouchDrag. I have removed the normalisation. The reason for that is that it normalised into screen coordinates from 0,0 to 1,1. The problem with that is that if you have a pinch event and you keep the distance say 300 pixels between your fingers, these 300 pixels represent 0.20 of the screen in the horizontal domain, but 0.3 of the screen in the vertical domain. A rotation of the pinch-fingers will hence result in a zoom in, as the normalised distance is changing between them.

A consequence of this is that I have changed the pan-code to use the same algorithm as the middle-mouse-pan.

The rest of it is very similar from previous revision, and there has been some fine-tuning here and there.

"

Location:
OpenSceneGraph/trunk
Files:
2 modified

Legend:

Unmodified
Added
Removed
  • OpenSceneGraph/trunk/include/osgShadow/ViewDependentShadowMap

    r13041 r13109  
    188188 
    189189        typedef std::vector< osg::ref_ptr<osg::Uniform> > Uniforms; 
     190        mutable OpenThreads::Mutex              _accessUnfiromsAndProgramMutex; 
    190191        Uniforms                                _uniforms; 
    191192        osg::ref_ptr<osg::Program>              _program; 
  • OpenSceneGraph/trunk/src/osgShadow/ViewDependentShadowMap.cpp

    r13108 r13109  
    11621162    unsigned int _baseTextureUnit = 0; 
    11631163 
     1164    OpenThreads::ScopedLock<OpenThreads::Mutex> lock(_accessUnfiromsAndProgramMutex); 
     1165 
    11641166    _shadowCastingStateSet = new osg::StateSet; 
    11651167 
     
    23432345    osg::ref_ptr<osg::StateSet> stateset = vdd.getStateSet(); 
    23442346 
     2347    OpenThreads::ScopedLock<OpenThreads::Mutex> lock(_accessUnfiromsAndProgramMutex); 
     2348     
    23452349    vdd.getStateSet()->clear(); 
    23462350