Show
Ignore:
Timestamp:
01/21/09 13:06:13 (5 years ago)
Author:
robert
Message:

Cleaned up osgvolume

Files:
1 modified

Legend:

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

    r9522 r9523  
    12481248    } 
    12491249     
    1250     // create a model from the images. 
    1251     osg::ref_ptr<osg::Node> rootNode = 0; 
    1252      
    1253     { 
    1254  
    1255         osg::ref_ptr<osgVolume::Volume> volume = new osgVolume::Volume; 
    1256         osg::ref_ptr<osgVolume::VolumeTile> tile = new osgVolume::VolumeTile; 
    1257         volume->addChild(tile); 
    1258  
    1259         osg::ref_ptr<osgVolume::Layer> layer = new osgVolume::ImageLayer(image_3d); 
    1260          
     1250    osg::ref_ptr<osgVolume::Volume> volume = new osgVolume::Volume; 
     1251    osg::ref_ptr<osgVolume::VolumeTile> tile = new osgVolume::VolumeTile; 
     1252    volume->addChild(tile); 
     1253 
     1254    osg::ref_ptr<osgVolume::Layer> layer = new osgVolume::ImageLayer(image_3d); 
     1255 
     1256    if (matrix) 
     1257    { 
     1258        osgVolume::Locator* locator = new osgVolume::Locator(*matrix); 
     1259        layer->setLocator(locator); 
     1260        tile->setLocator(locator); 
     1261    } 
     1262 
     1263    tile->setLayer(layer.get()); 
     1264 
     1265    tile->setEventCallback(new osgVolume::PropertyAdjustmentCallback()); 
     1266 
     1267    if (useShader) 
     1268    { 
     1269 
     1270        osgVolume::SwitchProperty* sp = new osgVolume::SwitchProperty; 
     1271        sp->setActiveProperty(0); 
     1272 
     1273        osgVolume::AlphaFuncProperty* ap = new osgVolume::AlphaFuncProperty(alphaFunc); 
     1274        osgVolume::SampleDensityProperty* sd = new osgVolume::SampleDensityProperty(0.005); 
     1275        osgVolume::TransparencyProperty* tp = new osgVolume::TransparencyProperty(1.0); 
     1276 
     1277        { 
     1278            // Standard 
     1279            osgVolume::CompositeProperty* cp = new osgVolume::CompositeProperty; 
     1280            cp->addProperty(ap); 
     1281            cp->addProperty(sd); 
     1282            cp->addProperty(tp); 
     1283 
     1284            sp->addProperty(cp); 
     1285        } 
     1286 
     1287        { 
     1288            // Light 
     1289            osgVolume::CompositeProperty* cp = new osgVolume::CompositeProperty; 
     1290            cp->addProperty(ap); 
     1291            cp->addProperty(sd); 
     1292            cp->addProperty(tp); 
     1293            cp->addProperty(new osgVolume::LightingProperty); 
     1294 
     1295            sp->addProperty(cp); 
     1296        } 
     1297 
     1298        { 
     1299            // Isosurface 
     1300            osgVolume::CompositeProperty* cp = new osgVolume::CompositeProperty; 
     1301            cp->addProperty(sd); 
     1302            cp->addProperty(tp); 
     1303            cp->addProperty(new osgVolume::IsoSurfaceProperty(alphaFunc)); 
     1304 
     1305            sp->addProperty(cp); 
     1306        } 
     1307 
     1308        { 
     1309            // MaximumIntensityProjection 
     1310            osgVolume::CompositeProperty* cp = new osgVolume::CompositeProperty; 
     1311            cp->addProperty(ap); 
     1312            cp->addProperty(sd); 
     1313            cp->addProperty(tp); 
     1314            cp->addProperty(new osgVolume::MaximumIntensityProjectionProperty); 
     1315 
     1316            sp->addProperty(cp); 
     1317        } 
     1318 
     1319        layer->addProperty(sp); 
     1320 
    12611321        if (transferFunction.valid()) 
    12621322        { 
     
    12641324            layer->addProperty(new osgVolume::TransferFunctionProperty(transferFunction.get())); 
    12651325        } 
    1266          
    1267         if (matrix) 
    1268         { 
    1269             osgVolume::Locator* locator = new osgVolume::Locator(*matrix); 
    1270             layer->setLocator(locator); 
    1271             tile->setLocator(locator); 
    1272         } 
    1273          
    1274         tile->setLayer(layer.get()); 
    1275          
    1276         tile->setEventCallback(new osgVolume::PropertyAdjustmentCallback()); 
    1277  
    1278 #if 0         
    1279         if (useShader) 
    1280         { 
    1281             switch(shadingModel) 
    1282             { 
    1283                 case(Standard): 
    1284                     layer->addProperty(new osgVolume::AlphaFuncProperty(alphaFunc)); 
    1285                     break; 
    1286                 case(Light): 
    1287                     layer->addProperty(new osgVolume::AlphaFuncProperty(alphaFunc)); 
    1288                     layer->addProperty(new osgVolume::LightingProperty); 
    1289                     break; 
    1290                 case(Isosurface): 
    1291                     layer->addProperty(new osgVolume::IsoSurfaceProperty(alphaFunc)); 
    1292                     break; 
    1293                 case(MaximumIntensityProjection): 
    1294                     layer->addProperty(new osgVolume::AlphaFuncProperty(alphaFunc)); 
    1295                     layer->addProperty(new osgVolume::MaximumIntensityProjectionProperty); 
    1296                     break; 
    1297             } 
    1298              
    1299             layer->addProperty(new osgVolume::SampleDensityProperty(0.005)); 
    1300             layer->addProperty(new osgVolume::TransparencyProperty(1.0)); 
    1301              
    1302          
    1303             tile->setVolumeTechnique(new osgVolume::ShaderTechnique); 
    1304         } 
    1305         else 
    1306         { 
    1307             layer->addProperty(new osgVolume::AlphaFuncProperty(alphaFunc)); 
    1308             tile->setVolumeTechnique(new osgVolume::FixedFunctionTechnique); 
    1309         } 
    1310 #else 
    1311  
    1312         osgVolume::SwitchProperty* sp = new osgVolume::SwitchProperty; 
    1313         sp->setActiveProperty(0); 
    1314          
    1315         { 
    1316             // Standard 
    1317             osgVolume::CompositeProperty* cp = new osgVolume::CompositeProperty; 
    1318             cp->addProperty(new osgVolume::AlphaFuncProperty(alphaFunc)); 
    1319  
    1320             sp->addProperty(cp); 
    1321         } 
    1322  
    1323         { 
    1324             // Light 
    1325             osgVolume::CompositeProperty* cp = new osgVolume::CompositeProperty; 
    1326             cp->addProperty(new osgVolume::AlphaFuncProperty(alphaFunc)); 
    1327             cp->addProperty(new osgVolume::LightingProperty); 
    1328  
    1329             sp->addProperty(cp); 
    1330         } 
    1331  
    1332         { 
    1333             // Isosurface 
    1334             osgVolume::CompositeProperty* cp = new osgVolume::CompositeProperty; 
    1335             cp->addProperty(new osgVolume::IsoSurfaceProperty(alphaFunc)); 
    1336  
    1337             sp->addProperty(cp); 
    1338         } 
    1339  
    1340         { 
    1341             // MaximumIntensityProjection 
    1342             osgVolume::CompositeProperty* cp = new osgVolume::CompositeProperty; 
    1343             cp->addProperty(new osgVolume::AlphaFuncProperty(alphaFunc)); 
    1344             cp->addProperty(new osgVolume::MaximumIntensityProjectionProperty); 
    1345  
    1346             sp->addProperty(cp); 
    1347         } 
    1348          
    1349         layer->addProperty(sp); 
     1326 
    13501327        tile->setVolumeTechnique(new osgVolume::ShaderTechnique); 
    1351  
    1352 #endif         
    1353          
    1354         rootNode = volume.get();         
     1328    } 
     1329    else 
     1330    { 
     1331        layer->addProperty(new osgVolume::AlphaFuncProperty(alphaFunc)); 
     1332        tile->setVolumeTechnique(new osgVolume::FixedFunctionTechnique); 
    13551333    } 
    13561334         
     
    13661344                osgDB::writeImageFile(*image_3d, image_3d->getFileName()); 
    13671345            } 
    1368             osgDB::writeNodeFile(*rootNode, outputFile); 
     1346            osgDB::writeNodeFile(*volume, outputFile); 
    13691347        } 
    13701348        else if (ext=="ive") 
    13711349        { 
    1372             osgDB::writeNodeFile(*rootNode, outputFile);         
     1350            osgDB::writeNodeFile(*volume, outputFile);         
    13731351        } 
    13741352        else if (ext=="dds") 
    13751353        { 
    1376             osgDB::writeImageFile(*image_3d, outputFile);         
     1354            osgDB::writeImageFile(*image_3d, outputFile); 
    13771355        } 
    13781356        else 
     
    13851363 
    13861364 
    1387     if (rootNode)  
     1365    if (volume.valid())  
    13881366    { 
    13891367 
    13901368        // set the scene to render 
    1391         viewer.setSceneData(rootNode.get()); 
     1369        viewer.setSceneData(volume.get()); 
    13921370         
    13931371        // the the viewers main frame loop