Show
Ignore:
Timestamp:
01/09/09 16:19:25 (5 years ago)
Author:
robert
Message:

Moved osgVolume::ImageUtils? to osg::ImageUtils?, updated wrappers, and started moving osgvolume example across to create osgVolume subgraphs

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • OpenSceneGraph/trunk/examples/osgvolume/osgvolume.cpp

    r9395 r9479  
    6161#include <iostream> 
    6262 
    63 #include <osgVolume/ImageUtils> 
     63#include <osg/ImageUtils> 
     64#include <osgVolume/Volume> 
     65#include <osgVolume/VolumeTile> 
    6466 
    6567typedef std::vector< osg::ref_ptr<osg::Image> > ImageList; 
     
    15201522        // compute range of values 
    15211523        osg::Vec4 minValue, maxValue; 
    1522         osgVolume::computeMinMax(image.get(), minValue, maxValue); 
    1523         osgVolume::modifyImage(image.get(),ScaleOperator(1.0f/maxValue.r()));  
     1524        osg::computeMinMax(image.get(), minValue, maxValue); 
     1525        osg::modifyImage(image.get(),ScaleOperator(1.0f/maxValue.r()));  
    15241526    } 
    15251527     
     
    15461548             
    15471549                // read the pixels into readOp's _colour array 
    1548                 osgVolume::readRow(sizeS, pixelFormat, dataType, image->data(0,t,r), readOp); 
     1550                osg::readRow(sizeS, pixelFormat, dataType, image->data(0,t,r), readOp); 
    15491551                                 
    15501552                // pass readOp's _colour array contents over to writeOp (note this is just a pointer swap). 
    15511553                writeOp._colours.swap(readOp._colours); 
    15521554                 
    1553                 osgVolume::modifyRow(sizeS, pixelFormat, GL_UNSIGNED_BYTE, new_image->data(0,t,r), writeOp); 
     1555                osg::modifyRow(sizeS, pixelFormat, GL_UNSIGNED_BYTE, new_image->data(0,t,r), writeOp); 
    15541556 
    15551557                // return readOp's _colour array contents back to its rightful owner. 
     
    16181620        { 
    16191621            std::cout<<"doing conversion MODULATE_ALPHA_BY_LUMINANCE"<<std::endl; 
    1620             osgVolume::modifyImage(image,ModulateAlphaByLuminanceOperator());  
     1622            osg::modifyImage(image,ModulateAlphaByLuminanceOperator());  
    16211623            return image; 
    16221624        } 
     
    16241626        { 
    16251627            std::cout<<"doing conversion MODULATE_ALPHA_BY_COLOUR"<<std::endl; 
    1626             osgVolume::modifyImage(image,ModulateAlphaByColourOperator(colour));  
     1628            osg::modifyImage(image,ModulateAlphaByColourOperator(colour));  
    16271629            return image; 
    16281630        } 
     
    16301632        { 
    16311633            std::cout<<"doing conversion REPLACE_ALPHA_WITH_LUMINANACE"<<std::endl; 
    1632             osgVolume::modifyImage(image,ReplaceAlphaWithLuminanceOperator());  
     1634            osg::modifyImage(image,ReplaceAlphaWithLuminanceOperator());  
    16331635            return image; 
    16341636        } 
     
    16381640            osg::Image* newImage = new osg::Image; 
    16391641            newImage->allocateImage(image->s(), image->t(), image->r(), GL_LUMINANCE, image->getDataType()); 
    1640             osgVolume::copyImage(image, 0, 0, 0, image->s(), image->t(), image->r(), 
    1641                                  newImage, 0, 0, 0, false); 
     1642            osg::copyImage(image, 0, 0, 0, image->s(), image->t(), image->r(), 
     1643                           newImage, 0, 0, 0, false); 
    16421644            return newImage; 
    16431645        } 
     
    16951697     
    16961698    ApplyTransferFunctionOperator op(transferFunction, output_image->data()); 
    1697     osgVolume::readImage(image,op);  
     1699    osg::readImage(image,op);  
    16981700     
    16991701    return output_image; 
     
    19391941    while(arguments.read("--num-components", numComponentsDesired)) {} 
    19401942 
     1943    bool useOsgVolume = true;  
     1944    while(arguments.read("--osgVolume")) { useOsgVolume = true; } 
     1945    while(arguments.read("--no-osgVolume")) { useOsgVolume = false; } 
     1946 
    19411947    bool useShader = true;  
    19421948    while(arguments.read("--shader")) { useShader = true; } 
     
    21402146    { 
    21412147        osg::Vec4 localMinValue, localMaxValue; 
    2142         if (osgVolume::computeMinMax(itr->get(), localMinValue, localMaxValue)) 
     2148        if (osg::computeMinMax(itr->get(), localMinValue, localMaxValue)) 
    21432149        { 
    21442150            if (localMinValue.r()<minValue.r()) minValue.r() = localMinValue.r(); 
     
    21882194                    ++itr) 
    21892195                {         
    2190                     osgVolume::offsetAndScaleImage(itr->get(),  
     2196                    osg::offsetAndScaleImage(itr->get(),  
    21912197                        osg::Vec4(offset, offset, offset, offset), 
    21922198                        osg::Vec4(scale, scale, scale, scale)); 
     
    22022208                    ++itr) 
    22032209                {         
    2204                     osgVolume::offsetAndScaleImage(itr->get(),  
     2210                    osg::offsetAndScaleImage(itr->get(),  
    22052211                        osg::Vec4(offset, offset, offset, offset), 
    22062212                        osg::Vec4(1.0f, 1.0f, 1.0f, 1.0f)); 
     
    22812287    osg::Node* rootNode = 0; 
    22822288     
    2283     if (useShader) 
    2284     { 
    2285         rootNode = createShaderModel(shadingModel,  
    2286                                image_3d, normalmap_3d.get(),  
    2287                                (gpuTransferFunction ? transferFunction.get() : 0), 
    2288                                internalFormatMode, 
    2289                                xSize, ySize, zSize, 
    2290                                xMultiplier, yMultiplier, zMultiplier, 
    2291                                numSlices, sliceEnd, alphaFunc); 
     2289    if (useOsgVolume) 
     2290    { 
     2291 
     2292        osg::ref_ptr<osgVolume::Volume> volume = new osgVolume::Volume; 
     2293        osg::ref_ptr<osgVolume::VolumeTile> tile = new osgVolume::VolumeTile; 
     2294        osg::ref_ptr<osgVolume::Layer> layer = new osgVolume::ImageLayer(image_3d); 
     2295        tile->addLayer(layer.get()); 
     2296        volume->addChild(tile); 
     2297         
     2298        rootNode = volume.get();         
     2299 
    22922300    } 
    22932301    else 
    22942302    { 
    2295         rootNode = createModel(shadingModel, 
    2296                                image_3d, normalmap_3d,  
    2297                                internalFormatMode, 
    2298                                xSize, ySize, zSize, 
    2299                                xMultiplier, yMultiplier, zMultiplier, 
    2300                                numSlices, sliceEnd, alphaFunc); 
    2301     } 
    2302      
    2303     if (matrix && rootNode) 
    2304     { 
    2305         osg::MatrixTransform* mt = new osg::MatrixTransform; 
    2306         mt->setMatrix(*matrix); 
    2307         mt->addChild(rootNode); 
    2308          
    2309         rootNode = mt; 
    2310     } 
    2311      
     2303        if (useShader) 
     2304        { 
     2305            rootNode = createShaderModel(shadingModel,  
     2306                                   image_3d, normalmap_3d.get(),  
     2307                                   (gpuTransferFunction ? transferFunction.get() : 0), 
     2308                                   internalFormatMode, 
     2309                                   xSize, ySize, zSize, 
     2310                                   xMultiplier, yMultiplier, zMultiplier, 
     2311                                   numSlices, sliceEnd, alphaFunc); 
     2312        } 
     2313        else 
     2314        { 
     2315            rootNode = createModel(shadingModel, 
     2316                                   image_3d, normalmap_3d,  
     2317                                   internalFormatMode, 
     2318                                   xSize, ySize, zSize, 
     2319                                   xMultiplier, yMultiplier, zMultiplier, 
     2320                                   numSlices, sliceEnd, alphaFunc); 
     2321        } 
     2322         
     2323        if (matrix && rootNode) 
     2324        { 
     2325            osg::MatrixTransform* mt = new osg::MatrixTransform; 
     2326            mt->setMatrix(*matrix); 
     2327            mt->addChild(rootNode); 
     2328 
     2329            rootNode = mt; 
     2330        } 
     2331    } 
     2332         
    23122333    if (!outputFile.empty()) 
    23132334    {