Changeset 1902
- Timestamp:
- 04/18/03 17:59:34 (10 years ago)
- Location:
- OpenSceneGraph/trunk
- Files:
-
- 6 modified
-
NEWS.txt (modified) (2 diffs)
-
doc/dependencies.html (modified) (1 diff)
-
examples/osgoccluder/osgoccluder.cpp (modified) (7 diffs)
-
src/osgPlugins/txp/trpage_material.cpp (modified) (2 diffs)
-
src/osgProducer/Viewer.cpp (modified) (1 diff)
-
src/osgProducer/ViewerEventHandler.cpp (modified) (9 diffs)
Legend:
- Unmodified
- Added
- Removed
-
OpenSceneGraph/trunk/NEWS.txt
r1889 r1902 4 4 ================================================ 5 5 6 osgProducer library adds very tight integration with OpenProducer, 7 provide the OpenSceneGraph with a scalable, configurable and portable 8 framework for developing real-time and interactive graphics application. 9 The scalability afforded by OpenProducer allows applications to be 10 developed which seemlessly run on single pipe machines up to multi-pipe 11 machines such as Sgi Onyx IR system, and Sun Zulu systems, through 12 to running of clusters. The osgProducer/OpenProducer framework 13 automatically handles the multi-threading of cull-draw pairs and GUI 14 events. 6 18th April 2003 - OpenSceneGraph-0.9.4 7 8 >>> Multi-threaded, multi-pipe support via integration with OpenProducer, 9 >>> 64bit Linux support for Intel Intanium and AMD Opteron, 10 >>> new osgText library with greater performance, and thread safety, 11 >>> new DDS plug-in for compressed and non-compressed images, 12 >>> new MD2 plug-in adds support for animate Quake character, 13 >>> support added for NV_texture_rectangle. 14 15 The most significant new feature is the osgProducer library that adds 16 tight integration with OpenProducer, providing the OpenSceneGraph with a 17 scalable, configurable and portable framework for developing real-time 18 and interactive graphics applications. The scalability afforded by 19 OpenProducer allows applications to be developed which run seamlessly 20 on single pipe machines up to multi-pipe machines such as Sgi Onyx 21 IR system, and Sun Zulu systems. 22 The osgProducer/OpenProducer framework automatically handles the 23 multi-threading of cull-draw pairs and GUI events. 15 24 16 25 All the example programs have been ported over from being based on 17 GLUT to using osgProducer. This allows all the examples to scale from18 running on laptops up to multiple cpuand graphics pipe systems. The26 GLUT to using osgProducer. This allows all the examples to scale from 27 running on laptops up to multiple CPU and graphics pipe systems. The 19 28 configuration of threading and multiple camera views can all be done 20 via ASCII configuration files, no need to recompile. 21 22 Added Linux 64 bit support for IA64 (Intel Itanium) and x86-64 (AMD Opteron) 23 which augments the existing support for Solaris and IRIX 64 bit compilation. 24 64 bit supports allows the use of very large data set, and potential 25 peformance improvemnts. 26 27 Improvements to the makefile system, all makefiles are now named 28 GNUmakefile which ensures that they are only run by gmake. The new system 29 allow multiple build targets to be built from one source code install. 30 31 Completely new osgText implemention which is simpler to use, faster, and 32 thread safe. Support for high quality true type fonts has now been moved 33 to a freetype plugin which is dynamically loaded on demand, with the 34 core osgText library providing a default font when the plugin is 35 unavailable. Moving the freetype dependancy out of the osgText allows 36 the text library to be just dependant on OpenGL and Standard C++ like 37 the rest of the core libraries, virtual of this osgText now compiles 38 by default on platforms. 39 40 Improved thread safety when working multipipe systems. 41 42 New DDS plugin for loading compressed and non-compressed images. 43 44 New MD2 plugin which allows Quake animated characters to be loaded 45 into the OSG. 46 47 New osg::TextureRectangle texture class which encapsulates the 48 NV_texture_rectangle and EXT_texture_rectange extensions. 49 50 Added automatic subloading of textures when image data is updated. 51 52 Added the option of automatic unref'ing of texture image data once the data has 53 been download to OpenGL to active graphics contexts. 54 55 New osgUtil::DelaunayTriangulator utlity class for tesselating data points. 56 57 New osg::ArgumentParser and osg::ApplicationUsage classes for 58 convineiently and robustly parsing command line arguments and 59 report command line usage, environmental variables and 60 keyboard and mouse bindings used by applications. Running any 61 of the examples with -h or --help will report full details example 62 usage. Keyboard and Mouse bindings usage is now also available as 63 a HUD on all examples, simply press 'h' while the app is runing to 29 via ASCII configuration files, no need to recompile. A number of 30 new examples have also been added or revamped, bringing the total to 42. 31 32 Also in the theme of increasing scalability there is support for 64bit Linux for both 33 IA64 (Intel Itanium) and x86-64 (AMD Opteron) which compliments the existing 34 support for Solaris and IRIX 64 bit compilation. 64 bit supports allows 35 the use of very large data sets, and potential performance improvements. 36 37 To help support development teams working with multiple build configuration, 38 the makefile system has been extended to allow multiple build targets to be 39 built from one source code base. All makefiles are also now named GNUmakefile 40 which ensures that they are only run by gmake to avoid an confusion on system 41 where gmake isn't the default make tool. 42 43 A completely new osgText implemention has been developed which is simpler 44 to use, faster, and thread safe. Support for high quality true type fonts 45 has now been moved to a freetype plug-in which is dynamically loaded on demand, 46 with the core osgText library providing a default font when the plug-in is 47 unavailable. Moving the freetype dependency out of the osgText library makes 48 it just dependant on OpenGL and Standard C++ like the rest of the core libraries, 49 allowing osgText to compile by default on all platforms. 50 51 Improved thread safety has also been achieved in the core osg and osgUtil libraries 52 making work on multiple CPU/multi-pipe systems robust and with improved performance. 53 54 Two new plug-ins have been added, for loading DDS and MD2 data formats. The DDS plug-in 55 is for loading compressed and non-compressed images. The MD2 plug-in loads Quake 56 animated characters. 57 58 osg::TextureRectangle class has been added, which encapsulates the 59 NV_texture_rectangle and EXT_texture_rectangle extensions. This is particularly 60 useful for render to texture algorithms, and dynamic paging of images such as for 61 rendering video streams. 62 63 Support for automatic subloading of osg::Texture2D textures has been added 64 so that when image data is updated the corresponding OpenGL texture is 65 automatically updated - no need for callbacks. Also added to the osg::Texture 66 classes is the option of automatic unref'ing of texture image data once the data has 67 been download to all active OpenGL graphics contexts. 68 69 A new osgUtil::DelaunayTriangulator utility class has been added. This is ideal for 70 creating optimal triangular meshes from unconnected data points. 71 72 Two new classes, osg::ArgumentParser and osg::ApplicationUsage, have been introduced 73 to convineiently and robustly parse command line arguments and 74 report command line usage, environmental variables and keyboard and mouse bindings 75 used by applications. Running any of the examples with -h or --help will report 76 full details example usage. Keyboard and Mouse bindings usage is now also available as 77 a HUD on all examples, simply press 'h' while the app is running to 64 78 bring up help. 65 79 66 New database cache in the osgDB library. 67 68 Added support for early abort of rendering, useful for interactive 69 applications which occasional have rendering that takes that long 70 enough (i.e. several seconds) that end users may wish to abort 71 during the drawing. 72 73 Clean up of memory management in the OpenFlight loader. 74 75 Various API clean ups and bug fixes. 80 A database cache in the osgDB library has been added, along with a clean up 81 of memory management in the OpenFlight loader, make development of 82 dynamic paging of databases easier and more robust. 83 84 Support for early abort of rendering has been added, which is useful for 85 interactive applications which occasionally have rendering that takes that long 86 enough (i.e.several seconds) that end users may wish to abort during the drawing. 87 88 There have also been many general API improvements and bug fixes, too many to enumerate, 89 but all go to solidify the quality of the scene graph and its accompanying libraries. 90 91 The combination of new features, robustness and scalability mark this release as a 92 significant step towards 1.0. 93 94 76 95 77 96 24th January 2003 - OpenSceneGraph-0.9.3.tar.gz … … 396 415 397 416 398 24th February 2002 - osg-0.8.44.tar.gz 417 24th February 2002 - osg-0.8.44.tar.gzosg- 399 418 400 419 >>> Support added for Mac OSX, Cygwin and MinGW, and new TerraPage loader. -
OpenSceneGraph/trunk/doc/dependencies.html
r1869 r1902 82 82 src/osgProducer - The osgProducer library depends upon, you guessed it, Producer...</li> 83 83 84 <ul><i><a href="http://www.andesengineering.com/ BlueMarbleViewer/producer_install.html">"http://www.andesengineering.com/BlueMarbleViewer/producer_install.html</a></i></ul>84 <ul><i><a href="http://www.andesengineering.com/Producer">"http://www.andesengineering.com/Producer</a></i></ul> 85 85 </ul> 86 86 -
OpenSceneGraph/trunk/examples/osgoccluder/osgoccluder.cpp
r1851 r1902 27 27 public: 28 28 29 OccluderEventHandler(osg Util::SceneView* sceneview,osg::Group* rootnode):_sceneview(sceneview),_rootnode(rootnode) {}29 OccluderEventHandler(osgProducer::Viewer* viewer):_viewer(viewer) {} 30 30 31 31 virtual bool handle(const osgGA::GUIEventAdapter& ea,osgGA::GUIActionAdapter&); … … 40 40 void endOccluder(); 41 41 42 43 osg::ref_ptr<osgUtil::SceneView> _sceneview; 42 osg::Group* rootNode() { return dynamic_cast<osg::Group*>(_viewer->getSceneData()); } 43 44 45 osgProducer::Viewer* _viewer; 44 46 osg::ref_ptr<osg::Group> _rootnode; 45 47 osg::ref_ptr<osg::Group> _occluders; … … 56 58 { 57 59 58 float x = ea.getX ();59 float y = ea.getY ();60 float x = ea.getXnormalized(); 61 float y = ea.getYnormalized(); 60 62 61 osg ::Vec3 near_point,far_point;62 if (!_ sceneview->projectWindowXYIntoObject(x,ea.getYmax()-y,near_point,far_point))63 osgUtil::IntersectVisitor::HitList hitList; 64 if (!_viewer->computeIntersections(x,y,hitList)) 63 65 { 64 66 return true; 65 67 } 66 68 67 osg::ref_ptr<osg::LineSegment> lineSegment = new osg::LineSegment; 68 lineSegment->set(near_point,far_point); 69 70 osgUtil::IntersectVisitor iv; 71 iv.addLineSegment(lineSegment.get()); 72 73 _rootnode->accept(iv); 74 75 if (iv.hits()) 69 if (!hitList.empty()) 76 70 { 77 78 osgUtil::IntersectVisitor::HitList& hitList = iv.getHitList(lineSegment.get()); 79 if (!hitList.empty()) 80 { 81 82 osgUtil::Hit& hit = hitList.front(); 83 addPoint(hit.getWorldIntersectPoint()); 84 } 85 71 72 osgUtil::Hit& hit = hitList.front(); 73 addPoint(hit.getWorldIntersectPoint()); 86 74 } 87 75 … … 97 85 if (_occluders.valid()) 98 86 { 99 std::cout<<"saving occluders to 'saved_occluders.osg'"<<std::endl; 100 osgDB::writeNodeFile(*_occluders,"saved_occluders.osg"); 87 88 if (osgDB::writeNodeFile(*_occluders,"saved_occluders.osg")) 89 std::cout<<"saved occluders to 'saved_occluders.osg'"<<std::endl; 101 90 } 102 91 else … … 137 126 { 138 127 _occluders = new osg::Group; 139 _rootnode->addChild(_occluders.get());128 if (rootNode()) rootNode()->addChild(_occluders.get()); 140 129 } 141 130 _occluders->addChild(occluderNode); … … 298 287 while (arguments.read("-m")) { manuallyCreateOccluders = true; } 299 288 289 if (manuallyCreateOccluders) 290 { 291 viewer.getEventHandlerList().push_front(new OccluderEventHandler(&viewer)); 292 } 293 300 294 // get details on keyboard and mouse bindings used by the viewer. 301 295 viewer.getUsage(*arguments.getApplicationUsage()); … … 350 344 viewer.realize(); 351 345 352 if (manuallyCreateOccluders)353 {354 osgUtil::SceneView* sceneview = viewer.getSceneHandlerList()[0].get();355 356 viewer.getEventHandlerList().push_front(new OccluderEventHandler(sceneview,rootnode.get()));357 }358 346 359 347 while( !viewer.done() ) -
OpenSceneGraph/trunk/src/osgPlugins/txp/trpage_material.cpp
r1431 r1902 1209 1209 return totSize; 1210 1210 } 1211 default: 1212 break; 1211 1213 }; 1212 1214 … … 1343 1345 pixel_size = 2; 1344 1346 break; 1347 default: 1348 break; 1345 1349 } 1346 1350 -
OpenSceneGraph/trunk/src/osgProducer/Viewer.cpp
r1894 r1902 438 438 if (computePixelCoords(x,y,cameraNum,pixel_x,pixel_y)) 439 439 { 440 return scenehandler->projectWindowXYIntoObject( pixel_x,pixel_y,near_point,far_point);440 return scenehandler->projectWindowXYIntoObject((int)(pixel_x+0.5f),(int)(pixel_y+0.5f),near_point,far_point); 441 441 } 442 442 return false; -
OpenSceneGraph/trunk/src/osgProducer/ViewerEventHandler.cpp
r1896 r1902 227 227 text->setFont("fonts/arial.ttf"); 228 228 text->setColor(colorDescription); 229 text->setFontSize( characterSize,characterSize);229 text->setFontSize((unsigned int)characterSize,(unsigned int)characterSize); 230 230 text->setCharacterSize(characterSize); 231 231 text->setPosition(posDescription); … … 253 253 text->setFont("fonts/arial.ttf"); 254 254 text->setColor(colorOption); 255 text->setFontSize( characterSize,characterSize);255 text->setFontSize((unsigned int)characterSize,(unsigned int)characterSize); 256 256 text->setCharacterSize(characterSize); 257 257 text->setPosition(posOption); … … 280 280 text->setFont("fonts/arial.ttf"); 281 281 text->setColor(colorExplanation); 282 text->setFontSize( characterSize,characterSize);282 text->setFontSize((unsigned int)characterSize,(unsigned int)characterSize); 283 283 text->setCharacterSize(characterSize); 284 284 text->setPosition(posExplanation); … … 614 614 text->setFont("fonts/arial.ttf"); 615 615 text->setColor(colorUpdate); 616 text->setFontSize( characterSize,characterSize);616 text->setFontSize((unsigned int)characterSize,(unsigned int)characterSize); 617 617 text->setCharacterSize(characterSize); 618 618 text->setPosition(pos); … … 628 628 _updateTimeText->setFont("fonts/arial.ttf"); 629 629 _updateTimeText->setColor(colorUpdate); 630 _updateTimeText->setFontSize( characterSize,characterSize);630 _updateTimeText->setFontSize((unsigned int)characterSize,(unsigned int)characterSize); 631 631 _updateTimeText->setCharacterSize(characterSize); 632 632 _updateTimeText->setPosition(pos); … … 651 651 cullLabel->setFont("fonts/arial.ttf"); 652 652 cullLabel->setColor(colorCull); 653 cullLabel->setFontSize( characterSize,characterSize);653 cullLabel->setFontSize((unsigned int)characterSize,(unsigned int)characterSize); 654 654 cullLabel->setCharacterSize(characterSize); 655 655 cullLabel->setPosition(pos); … … 665 665 cullField->setFont("fonts/arial.ttf"); 666 666 cullField->setColor(colorCull); 667 cullField->setFontSize( characterSize,characterSize);667 cullField->setFontSize((unsigned int)characterSize,(unsigned int)characterSize); 668 668 cullField->setCharacterSize(characterSize); 669 669 cullField->setPosition(pos); … … 681 681 drawLabel->setFont("fonts/arial.ttf"); 682 682 drawLabel->setColor(colorDraw); 683 drawLabel->setFontSize( characterSize,characterSize);683 drawLabel->setFontSize((unsigned int)characterSize,(unsigned int)characterSize); 684 684 drawLabel->setCharacterSize(characterSize); 685 685 drawLabel->setPosition(pos); … … 695 695 drawField->setFont("fonts/arial.ttf"); 696 696 drawField->setColor(colorDraw); 697 drawField->setFontSize( characterSize,characterSize);697 drawField->setFontSize((unsigned int)characterSize,(unsigned int)characterSize); 698 698 drawField->setCharacterSize(characterSize); 699 699 drawField->setPosition(pos);
