From c765b0b62db2020f601d289c13aea9e136e07783 Mon Sep 17 00:00:00 2001 From: Marc Helbling Date: Thu, 2 Mar 2017 11:33:47 +0000 Subject: [PATCH 1/5] Add missing type for attribute merge --- src/osgUtil/Optimizer.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/osgUtil/Optimizer.cpp b/src/osgUtil/Optimizer.cpp index b3ae72f07..718e0cc25 100644 --- a/src/osgUtil/Optimizer.cpp +++ b/src/osgUtil/Optimizer.cpp @@ -2320,6 +2320,13 @@ class MergeArrayVisitor : public osg::ArrayVisitor virtual void apply(osg::UIntArray& rhs) { if (_offset) _mergeAndOffset(rhs); else _merge(rhs); } virtual void apply(osg::Vec4ubArray& rhs) { _merge(rhs); } + virtual void apply(osg::Vec3ubArray& rhs) { _merge(rhs); } + virtual void apply(osg::Vec2ubArray& rhs) { _merge(rhs); } + + virtual void apply(osg::Vec4usArray& rhs) { _merge(rhs); } + virtual void apply(osg::Vec3usArray& rhs) { _merge(rhs); } + virtual void apply(osg::Vec2usArray& rhs) { _merge(rhs); } + virtual void apply(osg::FloatArray& rhs) { _merge(rhs); } virtual void apply(osg::Vec2Array& rhs) { _merge(rhs); } virtual void apply(osg::Vec3Array& rhs) { _merge(rhs); } @@ -2333,6 +2340,7 @@ class MergeArrayVisitor : public osg::ArrayVisitor virtual void apply(osg::Vec2bArray& rhs) { _merge(rhs); } virtual void apply(osg::Vec3bArray& rhs) { _merge(rhs); } virtual void apply(osg::Vec4bArray& rhs) { _merge(rhs); } + virtual void apply(osg::Vec2sArray& rhs) { _merge(rhs); } virtual void apply(osg::Vec3sArray& rhs) { _merge(rhs); } virtual void apply(osg::Vec4sArray& rhs) { _merge(rhs); } From a97cdebe11e7a63dd0d88c5386967f4bef65b4ab Mon Sep 17 00:00:00 2001 From: Marc Helbling Date: Thu, 2 Mar 2017 11:36:33 +0000 Subject: [PATCH 2/5] Remove unused offset attribute in MergeArrayVisitor --- src/osgUtil/Optimizer.cpp | 33 ++++++++------------------------- 1 file changed, 8 insertions(+), 25 deletions(-) diff --git a/src/osgUtil/Optimizer.cpp b/src/osgUtil/Optimizer.cpp index 718e0cc25..e3dadc4d5 100644 --- a/src/osgUtil/Optimizer.cpp +++ b/src/osgUtil/Optimizer.cpp @@ -2269,21 +2269,18 @@ class MergeArrayVisitor : public osg::ArrayVisitor { protected: osg::Array* _lhs; - int _offset; public: MergeArrayVisitor() : - _lhs(0), - _offset(0) {} + _lhs(0) {} /// try to merge the content of two arrays. - bool merge(osg::Array* lhs,osg::Array* rhs, int offset=0) + bool merge(osg::Array* lhs,osg::Array* rhs) { if (lhs==0 || rhs==0) return true; if (lhs->getType()!=rhs->getType()) return false; _lhs = lhs; - _offset = offset; rhs->accept(*this); return true; @@ -2296,28 +2293,14 @@ class MergeArrayVisitor : public osg::ArrayVisitor lhs->insert(lhs->end(),rhs.begin(),rhs.end()); } - template - void _mergeAndOffset(T& rhs) - { - T* lhs = static_cast(_lhs); - - typename T::iterator itr; - for(itr = rhs.begin(); - itr != rhs.end(); - ++itr) - { - lhs->push_back(*itr + _offset); - } - } - virtual void apply(osg::Array&) { OSG_WARN << "Warning: Optimizer's MergeArrayVisitor cannot merge Array type." << std::endl; } - virtual void apply(osg::ByteArray& rhs) { if (_offset) _mergeAndOffset(rhs); else _merge(rhs); } - virtual void apply(osg::ShortArray& rhs) { if (_offset) _mergeAndOffset(rhs); else _merge(rhs); } - virtual void apply(osg::IntArray& rhs) { if (_offset) _mergeAndOffset(rhs); else _merge(rhs); } - virtual void apply(osg::UByteArray& rhs) { if (_offset) _mergeAndOffset(rhs); else _merge(rhs); } - virtual void apply(osg::UShortArray& rhs) { if (_offset) _mergeAndOffset(rhs); else _merge(rhs); } - virtual void apply(osg::UIntArray& rhs) { if (_offset) _mergeAndOffset(rhs); else _merge(rhs); } + virtual void apply(osg::ByteArray& rhs) { _merge(rhs); } + virtual void apply(osg::ShortArray& rhs) { _merge(rhs); } + virtual void apply(osg::IntArray& rhs) { _merge(rhs); } + virtual void apply(osg::UByteArray& rhs) { _merge(rhs); } + virtual void apply(osg::UShortArray& rhs) { _merge(rhs); } + virtual void apply(osg::UIntArray& rhs) { _merge(rhs); } virtual void apply(osg::Vec4ubArray& rhs) { _merge(rhs); } virtual void apply(osg::Vec3ubArray& rhs) { _merge(rhs); } From 4627821e79d4ec1fc8d27562b250620fe5296bc0 Mon Sep 17 00:00:00 2001 From: Marc Helbling Date: Mon, 6 Mar 2017 12:29:19 +0100 Subject: [PATCH 3/5] Revert bad change in 3ds reader --- src/osgPlugins/3ds/ReaderWriter3DS.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/osgPlugins/3ds/ReaderWriter3DS.cpp b/src/osgPlugins/3ds/ReaderWriter3DS.cpp index 9aa4a9d31..3c1d89c20 100644 --- a/src/osgPlugins/3ds/ReaderWriter3DS.cpp +++ b/src/osgPlugins/3ds/ReaderWriter3DS.cpp @@ -619,7 +619,7 @@ osg::Node* ReaderWriter3DS::ReaderObject::processNode(StateSetMap& drawStateMap, { // add our geometry to group (where our children already are) // creates geometry under modifier node - processMesh(drawStateMap,group,mesh,meshAppliedMatPtr); + processMesh(drawStateMap,meshTransform,mesh,meshAppliedMatPtr); return group; } else From 18826a9ebc725b859e1d9213082c29db4e801da3 Mon Sep 17 00:00:00 2001 From: Marc Helbling Date: Mon, 6 Mar 2017 12:49:06 +0100 Subject: [PATCH 4/5] Fix implicit ref_ptr conversions --- src/osg/Geometry.cpp | 2 +- src/osgPlugins/OpenCASCADE/ReaderWriterOpenCASCADE.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/osg/Geometry.cpp b/src/osg/Geometry.cpp index 7ec1add5f..cb43b9505 100644 --- a/src/osg/Geometry.cpp +++ b/src/osg/Geometry.cpp @@ -133,7 +133,7 @@ void Geometry::configureBufferObjects() itr != arrays.end(); ++itr) { - osg::Array* array = *itr; + osg::Array* array = itr->get(); if (array->getBinding()==osg::Array::BIND_PER_VERTEX) { if (array->getNumElements()==numVertices) diff --git a/src/osgPlugins/OpenCASCADE/ReaderWriterOpenCASCADE.cpp b/src/osgPlugins/OpenCASCADE/ReaderWriterOpenCASCADE.cpp index e1148bf60..02132b3d3 100644 --- a/src/osgPlugins/OpenCASCADE/ReaderWriterOpenCASCADE.cpp +++ b/src/osgPlugins/OpenCASCADE/ReaderWriterOpenCASCADE.cpp @@ -262,7 +262,7 @@ osg::ref_ptr ReaderWritterOpenCASCADE::OCCTKReader::_createGeomet std::cout << "Adding Primitive set" << std::endl; #endif - geom->addPrimitiveSet(triangleStrip); + geom->addPrimitiveSet(triangleStrip.get()); } return geom; From e906465dcbe52ee3aa743c33edfea0ff95a9a758 Mon Sep 17 00:00:00 2001 From: Marc Helbling Date: Mon, 6 Mar 2017 12:54:54 +0100 Subject: [PATCH 5/5] Fix commented variable assertions in inventor writer --- src/osgPlugins/Inventor/ConvertToInventor.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/osgPlugins/Inventor/ConvertToInventor.cpp b/src/osgPlugins/Inventor/ConvertToInventor.cpp index ec131365c..27e7f0507 100644 --- a/src/osgPlugins/Inventor/ConvertToInventor.cpp +++ b/src/osgPlugins/Inventor/ConvertToInventor.cpp @@ -282,7 +282,7 @@ void osgArray2ivMField_composite_template(const osg::Array *array, fieldClass &f assert(startIndex >= 0 && stopIndex >= 0); assert(stopIndex <= int(array->getNumElements())); } - assert(numItemsUntilMinusOne <= 0 && "Composite template must have numItemsUntilMinusOne set to 0."); + // assert(numItemsUntilMinusOne <= 0 && "Composite template must have numItemsUntilMinusOne set to 0."); field.setNum(num); ivType *a = field.startEditing(); @@ -305,7 +305,7 @@ void osgArray2ivMField_pack_template(const osg::Array *array, fieldClass &field, assert(startIndex >= 0 && stopIndex >= 0); assert(stopIndex <= int(array->getNumElements())); } - assert(numItemsUntilMinusOne <= 0 && "Pack template must have numItemsUntilMinusOne set to 0."); + // assert(numItemsUntilMinusOne <= 0 && "Pack template must have numItemsUntilMinusOne set to 0."); field.setNum(num); ivType *a = field.startEditing();