Manta Interactive Ray Tracer Development Mailing List

Text archives Help


[MANTA] r396 - in branches/itanium2: Engine/Control Engine/Display Interface fox


Chronological Thread 
  • From: abe@sci.utah.edu
  • To: manta@sci.utah.edu
  • Subject: [MANTA] r396 - in branches/itanium2: Engine/Control Engine/Display Interface fox
  • Date: Sun, 19 Jun 2005 18:34:28 -0600 (MDT)

Author: abe
Date: Sun Jun 19 18:34:22 2005
New Revision: 396

Modified:
   branches/itanium2/Engine/Control/RTRT.cc
   branches/itanium2/Engine/Control/RTRT.h
   branches/itanium2/Engine/Display/GLXImageDisplay.cc
   branches/itanium2/Interface/RTRTInterface.h
   branches/itanium2/fox/FMantaImageFrame.cc
   branches/itanium2/fox/FMantaImageFrame.h
   branches/itanium2/fox/FMantaNavigator.h
   branches/itanium2/fox/FMantaQuakeNav.h
   branches/itanium2/fox/FMantaUniformNav.cc
   branches/itanium2/fox/FMantaUniformNav.h
   branches/itanium2/fox/FMantaWindow.cc
   branches/itanium2/fox/FMantaWindow.h
   branches/itanium2/fox/fox_manta.cc
Log:

M    fox/FMantaUniformNav.cc
M    fox/fox_manta.cc
M    fox/FMantaUniformNav.h
M    fox/FMantaWindow.cc
M    fox/FMantaWindow.h
M    fox/FMantaNavigator.h
M    fox/FMantaImageFrame.cc
M    fox/FMantaQuakeNav.h
M    fox/FMantaImageFrame.h
Implemented "camera bookmarks" all of the code is pretty much still in flux.

Uniform camera navigator is still hard to use.

M    Interface/RTRTInterface.h
M    Engine/Control/RTRT.cc
M    Engine/Control/RTRT.h
Added method to set the camera for a channel.

M    Engine/Display/GLXImageDisplay.cc


Modified: branches/itanium2/Engine/Control/RTRT.cc
==============================================================================
--- branches/itanium2/Engine/Control/RTRT.cc    (original)
+++ branches/itanium2/Engine/Control/RTRT.cc    Sun Jun 19 18:34:22 2005
@@ -597,6 +597,11 @@
   return channels[channel]->camera;
 }
 
+void RTRT::setCamera(int channel, Camera *camera ) {
+
+       channels[channel]->camera = camera;
+}
+
 void RTRT::getResolution(int channel, bool& stereo, int& xres, int& yres)
 {
   stereo = channels[channel]->stereo;

Modified: branches/itanium2/Engine/Control/RTRT.h
==============================================================================
--- branches/itanium2/Engine/Control/RTRT.h     (original)
+++ branches/itanium2/Engine/Control/RTRT.h     Sun Jun 19 18:34:22 2005
@@ -40,6 +40,7 @@
     virtual void registerComponent(const string& name, ImageDisplayCreator 
display);
     virtual listType listImageDisplays() const;
     virtual Camera* getCamera(int channel) const;
+               virtual void    setCamera(int channel, Camera *camera );
     virtual void getResolution(int channel, bool& stereo, int& xres, int& 
yres);
     virtual void changeResolution(int channel, int xres, int yres,
                                   bool changePipeline);

Modified: branches/itanium2/Engine/Display/GLXImageDisplay.cc
==============================================================================
--- branches/itanium2/Engine/Display/GLXImageDisplay.cc (original)
+++ branches/itanium2/Engine/Display/GLXImageDisplay.cc Sun Jun 19 18:34:22 
2005
@@ -152,7 +152,7 @@
                // Check for any gl error.
                GLenum errcode = glGetError();
                if(errcode != GL_NO_ERROR) {
-                       std::cerr << "OpenGLDisplay: Error code from OpenGL: 
" << gluErrorString(errcode) << std::endl;
+                       std::cerr << "GLXImageDisplay: Error code from 
OpenGL: " << gluErrorString(errcode) << std::endl;
                }
        }
 }

Modified: branches/itanium2/Interface/RTRTInterface.h
==============================================================================
--- branches/itanium2/Interface/RTRTInterface.h (original)
+++ branches/itanium2/Interface/RTRTInterface.h Sun Jun 19 18:34:22 2005
@@ -46,6 +46,7 @@
     virtual void registerComponent(const string& name, ImageDisplayCreator 
display) = 0;
     virtual listType listImageDisplays() const = 0;
     virtual Camera* getCamera(int channel) const = 0;
+               virtual void    setCamera(int channel, Camera *camera ) = 0;
     virtual void getResolution(int channel, bool& stereo, int& xres, int& 
yres) = 0;
     // You can change the resolution of the rendered image without
     // having to change the pipeline.  If you want the pipeline

Modified: branches/itanium2/fox/FMantaImageFrame.cc
==============================================================================
--- branches/itanium2/fox/FMantaImageFrame.cc   (original)
+++ branches/itanium2/fox/FMantaImageFrame.cc   Sun Jun 19 18:34:22 2005
@@ -16,11 +16,12 @@
        FXMAPFUNC(SEL_CONFIGURE,           FMantaImageFrame::ID_IMAGE, 
FMantaImageFrame::onConfigure ),
        FXMAPFUNC(SEL_LEFTBUTTONRELEASE,   FMantaImageFrame::ID_IMAGE, 
FMantaImageFrame::onMouseChange ),
        FXMAPFUNC(SEL_LEFTBUTTONPRESS,     FMantaImageFrame::ID_IMAGE, 
FMantaImageFrame::onMouseChange ),
-       FXMAPFUNC(SEL_MIDDLEBUTTONRELEASE,   FMantaImageFrame::ID_IMAGE, 
FMantaImageFrame::onMouseChange ),
-       FXMAPFUNC(SEL_MIDDLEBUTTONPRESS,     FMantaImageFrame::ID_IMAGE, 
FMantaImageFrame::onMouseChange ),
-       FXMAPFUNC(SEL_RIGHTBUTTONRELEASE,   FMantaImageFrame::ID_IMAGE, 
FMantaImageFrame::onMouseChange ),
-       FXMAPFUNC(SEL_RIGHTBUTTONPRESS,     FMantaImageFrame::ID_IMAGE, 
FMantaImageFrame::onMouseChange ),
+       FXMAPFUNC(SEL_MIDDLEBUTTONRELEASE, FMantaImageFrame::ID_IMAGE, 
FMantaImageFrame::onMouseChange ),
+       FXMAPFUNC(SEL_MIDDLEBUTTONPRESS,   FMantaImageFrame::ID_IMAGE, 
FMantaImageFrame::onMouseChange ),
+       FXMAPFUNC(SEL_RIGHTBUTTONRELEASE,  FMantaImageFrame::ID_IMAGE, 
FMantaImageFrame::onMouseChange ),
+       FXMAPFUNC(SEL_RIGHTBUTTONPRESS,    FMantaImageFrame::ID_IMAGE, 
FMantaImageFrame::onMouseChange ),
 
+       FXMAPFUNC(SEL_MOUSEWHEEL,          FMantaImageFrame::ID_IMAGE, 
FMantaImageFrame::onMouseWheel ),
        FXMAPFUNC(SEL_MOTION,              FMantaImageFrame::ID_IMAGE, 
FMantaImageFrame::onMouseChange ),
        FXMAPFUNC(SEL_KEYPRESS,            FMantaImageFrame::ID_IMAGE, 
FMantaImageFrame::onKeyPress )
 };
@@ -30,7 +31,7 @@
 // Constructor, creates a GLX Visual with a double buffer.
 FMantaImageFrame::FMantaImageFrame( FXComposite *p, FXApp *app, int width, 
int height, RTRTInterface *manta_interface_ ) 
        : FXGLCanvas( p, new FXGLVisual( app, VISUAL_DOUBLEBUFFER ), this, 
ID_IMAGE, 
-                     LAYOUT_FILL, 0, 0, width, height ),
+                     LAYOUT_FILL|LAYOUT_TOP, 0, 0, width, height ),
          manta_interface( manta_interface_ ) 
 {
 }
@@ -40,9 +41,9 @@
 
        // Send a transaction to manta, notifying change resolution.
        manta_interface->addTransaction("resize",
-                                                                             
                                                          Callback::create( 
manta_interface, // Call on this.
+                                                                             
                                                          Callback::create( 
manta_interface,                  // Call on this.
                                                                              
                                                                              
                                                    
&RTRTInterface::changeResolution, // This method.
-                                                                             
                                                                              
                                                    manta_channel, // These 
args.
+                                                                             
                                                                              
                                                    manta_channel,            
        // These args.
                                                                              
                                                                              
                                                    getWidth(),
                                                                              
                                                                              
                                                    getHeight(),
                                                                              
                                                                              
                                                    true ) );
@@ -64,14 +65,22 @@
        return 1;
 }
 
+long FMantaImageFrame::onMouseWheel ( FXObject *sender, FXSelector sel, void 
*data ) {
+
+       FXEvent *event = (FXEvent *)data;
+       
+       std::cout << "Mouse wheel code: " << event->code << std::endl;
+       
+       return 1;
+}
+
 long FMantaImageFrame::onKeyPress   ( FXObject *sender, FXSelector sel, void 
*data ) {
 
        FXEvent *event = (FXEvent *)data;
        
        // Check for a quit only by default.
        if (event->text[0] == 'q') {
-               std::cerr << "Finish after next frame." << std::endl;
-               manta_interface->finish();
+               return 0;
        }
 
        return navigator->onKeyPress( sender, sel, data );

Modified: branches/itanium2/fox/FMantaImageFrame.h
==============================================================================
--- branches/itanium2/fox/FMantaImageFrame.h    (original)
+++ branches/itanium2/fox/FMantaImageFrame.h    Sun Jun 19 18:34:22 2005
@@ -41,12 +41,16 @@
                // Fox message handlers for mouse and keyboard.
                long onConfigure  ( FXObject *sender, FXSelector sel, void 
*data );
                long onMouseChange( FXObject *sender, FXSelector sel, void 
*data );
+               long onMouseWheel ( FXObject *sender, FXSelector sel, void 
*data );
          long onKeyPress   ( FXObject *sender, FXSelector sel, void *data );
                
                // Accessors.
                void setMantaInterface( RTRTInterface *manta_interface_, int 
manta_channel_ ) { 
                        manta_interface = manta_interface_; manta_channel = 
manta_channel_; };
                void setNavigator( FMantaNavigator *navigator_ ) { navigator 
= navigator_; }
+               
+               FMantaNavigator *getNavigator()          { return navigator; 
};
+               int              getMantaChannel() const { return 
manta_channel; };
                
                RTRTInterface *getMantaInterface() { return manta_interface; 
};
                int            getMantaChannel  () { return manta_channel;   
};

Modified: branches/itanium2/fox/FMantaNavigator.h
==============================================================================
--- branches/itanium2/fox/FMantaNavigator.h     (original)
+++ branches/itanium2/fox/FMantaNavigator.h     Sun Jun 19 18:34:22 2005
@@ -33,9 +33,10 @@
                Camera        *getMantaCamera()    { return manta_camera;    
};
                
                // Virtual interface.
-               virtual long onKeyPress   ( FXObject *sender, FXSelector sel, 
void *data ) = 0;
-               virtual long onMouseChange( FXObject *sender, FXSelector sel, 
void *data ) = 0;
+               virtual long onKeyPress      ( FXObject *sender, FXSelector 
sel, void *data ) = 0;
+               virtual long onMouseChange   ( FXObject *sender, FXSelector 
sel, void *data ) = 0;
                
+               virtual void setControlSpeed( Real new_speed ) = 0;
        };
 
 };

Modified: branches/itanium2/fox/FMantaQuakeNav.h
==============================================================================
--- branches/itanium2/fox/FMantaQuakeNav.h      (original)
+++ branches/itanium2/fox/FMantaQuakeNav.h      Sun Jun 19 18:34:22 2005
@@ -100,6 +100,8 @@
                long onKeyPress   ( FXObject *sender, FXSelector sel, void 
*data );
                long onMouseChange( FXObject *sender, FXSelector sel, void 
*data );
                
+               void setControlSpeed( Real new_speed ) { translateStepSize = 
new_speed; };
+               
                // Transaction callback for manta thread. 
                void mantaThreadCallback() const;
        };

Modified: branches/itanium2/fox/FMantaUniformNav.cc
==============================================================================
--- branches/itanium2/fox/FMantaUniformNav.cc   (original)
+++ branches/itanium2/fox/FMantaUniformNav.cc   Sun Jun 19 18:34:22 2005
@@ -143,18 +143,12 @@
                                                                              
   trackball_radius );
                
                // Check to make sure the vectors are far enough apart.
-               std::cout << "Distance: " << (rotate_from - 
rotate_to).length() << std::endl;
-               
                Real distance = (rotate_from - rotate_to).length();
                if (distance > 0.001) {
                        
                        // Create a rotation event.
                        Action action;
                        
-                       std::cout << "Rotate: from: " 
-                                                               << 
rotate_from << " to: "
-                                                               << rotate_to 
<< std::endl;
-                       
                        action.type = Action::ROTATE;
                        action.rotation.initWithRotation( rotate_to, 
rotate_from );
                        
@@ -173,6 +167,8 @@
                action.type = Action::DOLLY;
                action.dolly = ((Real) (event->win_x - 
event->last_x))/(width+amount);
                
+               action.dolly *= amount;
+               
                mantaAddTransaction( action );
        }
        
@@ -185,6 +181,8 @@
                action.translation[0] = ((Real)-(event->win_x - 
event->last_x))/width;
                action.translation[1] = ((Real) (event->win_y - 
event->last_y))/height;
        
+               action.translation *= amount;
+       
                mantaAddTransaction( action );
        }
        
@@ -194,24 +192,26 @@
 // This function is called by the manta thread.
 void FMantaUniformNav::mantaThreadCallback( Action action ) const {
 
+       Camera *channel_camera = manta_interface->getCamera( manta_channel );
+
        // Check for a translation.
        if (action.type == Action::TRANSLATE) {
-               manta_camera->translate( action.translation );
+               channel_camera->translate( action.translation );
        }
        
        // Check for a scale fov.
        if (action.type == Action::FOV) {
-               manta_camera->scaleFOV( action.scale_fov );
+               channel_camera->scaleFOV( action.scale_fov );
        }
        
        // Check for a rotation.
        if (action.type == Action::ROTATE) {
-               manta_camera->transform( action.rotation, 
(Camera::TransformCenter)rotate_type );
+               channel_camera->transform( action.rotation, 
(Camera::TransformCenter)rotate_type );
        }
        
        // Check for a dolly.
        if (action.type == Action::DOLLY) {
-               manta_camera->dolly( action.dolly );
+               channel_camera->dolly( action.dolly );
        }
 }
 

Modified: branches/itanium2/fox/FMantaUniformNav.h
==============================================================================
--- branches/itanium2/fox/FMantaUniformNav.h    (original)
+++ branches/itanium2/fox/FMantaUniformNav.h    Sun Jun 19 18:34:22 2005
@@ -38,6 +38,9 @@
                        };
                };
                
+               // Which manta channel to use.
+               int manta_channel;
+               
                // Attributes.
                Real amount;           // Uniform amount to move.
                Real trackball_radius; // Radius of trackball, 1.0 is half 
width of window.
@@ -61,20 +64,23 @@
        public:
                FMantaUniformNav() : amount( 1.0 ), 
                                     trackball_radius( 1.0 ), 
-                                                                             
                   rotate_type( ROTATE_EYE ) {  
+                                                                             
                   rotate_type( ROTATE_EYE ),
+                                                                             
                   manta_channel( 0 ) {  
                                                                              
                   
                        mouse_down[0] = mouse_down[1] = mouse_down[2] = 
false; };
        
                // Mouse events.
                long onKeyPress   ( FXObject *sender, FXSelector sel, void 
*data );
                long onMouseChange( FXObject *sender, FXSelector sel, void 
*data );
-       
+               
                // This function is called by the manta thread.
                void mantaThreadCallback( Action action ) const;
                
                // Accessors.
+               void setMantaChannel( int manta_channel_ )        { 
manta_channel = manta_channel_; };
                void setAmount( Real amount_ )                    { amount = 
amount_; };
                void setTrackballRadius( Real trackball_radius_ ) { 
trackball_radius = trackball_radius_; };
+               void setControlSpeed( Real new_speed )            { 
setAmount( new_speed ); };
        };
 };
 

Modified: branches/itanium2/fox/FMantaWindow.cc
==============================================================================
--- branches/itanium2/fox/FMantaWindow.cc       (original)
+++ branches/itanium2/fox/FMantaWindow.cc       Sun Jun 19 18:34:22 2005
@@ -3,6 +3,8 @@
 #include <fox/FMantaWindow.h>
 #include <fox/FMantaImageFrame.h>
 
+#include <SCIRun/Core/Thread/Thread.h>
+
 #include <iostream>
 
 using namespace fox_manta;
@@ -12,6 +14,8 @@
        
//////////////////////////////////////////////////////////////////////////////
        //        Message_Type ID                                 
Message_Handler
        FXMAPFUNC(SEL_COMMAND, FMantaWindow::ID_QUIT,  FMantaWindow::onQuit ),
+       FXMAPFUNC(SEL_CHANGED, FMantaWindow::ID_SPEED_SLIDER, 
FMantaWindow::onSpeedSlider ),
+       FXMAPFUNC(SEL_COMMAND, FMantaWindow::ID_BOOKMARK_LIST, 
FMantaWindow::onCameraBookmark )
 };
 
 
FXIMPLEMENT(FMantaWindow,FXMainWindow,FMantaWindowMap,ARRAYNUMBER(FMantaWindowMap));
@@ -39,11 +43,21 @@
        FXComposite *frame = new FXHorizontalFrame( this, LAYOUT_FILL );
        
        FXComposite *left_controls  = new FXVerticalFrame  ( frame, 
LAYOUT_FILL_Y|LAYOUT_LEFT );
-       FXComposite *viewers        = new FXHorizontalFrame( frame, 
LAYOUT_FILL );
-       FXComposite *right_controls = new FXVerticalFrame  ( frame, 
LAYOUT_FILL_Y|LAYOUT_RIGHT );
+       FXComposite *viewers        = new FXVerticalFrame( frame, LAYOUT_FILL 
);
+       // FXComposite *bottom_controls = new FXHorizontalFrame  ( frame, 
LAYOUT_FILL_X|LAYOUT_BOTTOM );
 
        // Manta Image Frame.
        manta_frame = new FMantaImageFrame( viewers, app, width, height, 0 );
+       
+       // Control speed.
+       speed_slider = new FXRealSlider( left_controls, this, 
ID_SPEED_SLIDER, REALSLIDER_VERTICAL|LAYOUT_FILL_Y );
+       speed_slider->setRange( 0.01, 100.0 );
+       
+       // Camera bookmarks.
+       camera_bookmark_list = new FXListBox( viewers, this, 
ID_BOOKMARK_LIST, LAYOUT_FILL_X|LAYOUT_BOTTOM|COMBOBOX_REPLACE,0,0,0,20 );
+       
+       // Default camera for default scene.
+       // camera_bookmark_list->appendItem( "pinhole(-eye 3 3 2 -lookat 0 0 
0.3 -up 0 0 1 -fov 60)" );
 }
 
 // Quit the program.
@@ -51,11 +65,67 @@
        
        // Hard quit.
        if (fast_quit) {
-               // SCIRun::Thread::allExit( 0 );
-               exit( 0 );
+               SCIRun::Thread::exitAll( 0 );
        }
        
-       manta_interface->finish();
+       // Add a quit command to manta.
+       
manta_interface->addTransaction("Quit",Callback::create(manta_interface,&RTRTInterface::finish));
+       fast_quit = true;
        
        return 1;
 };
+
+long FMantaWindow::onSpeedSlider( FXObject *sender, FXSelector key, void 
*data ) {
+
+       // Set the control speed for interaction.
+       Real new_speed = *((double *)data);
+       
+       std::cout << "Control speed: " << new_speed << std::endl;
+       manta_frame->getNavigator()->setControlSpeed( new_speed );
+       return 1;
+}
+
+long FMantaWindow::onCameraBookmark( FXObject *sender, FXSelector key, void 
*data ) {
+
+       // Determine the selected index.
+       int index = (FXint)(FXival)data;
+
+       // Get the text from the list box.
+       string camera_text = camera_text_list[ index ];
+
+       // Send a transaction to our self to change the camera.
+       manta_interface->addTransaction("Camera Bookmark",
+               
Callback::create(this,&FMantaWindow::mantaThreadBookmark,camera_text));
+
+       return 1;
+}
+
+void FMantaWindow::mantaThreadBookmark( const string camera_text ) const {
+
+       // Determine the channel number.
+       int channel = manta_frame->getMantaChannel();
+       
+       std::cout << "Camera text: " << camera_text << std::endl;
+       
+       // Create the camera.
+       Camera *camera = manta_interface->createCamera( camera_text );
+       
+       // Check to make sure the camera text was valid.
+       if (camera != 0) {
+               manta_interface->setCamera( channel, camera );
+       }
+}
+
+void FMantaWindow::addCameraBookmark( const string &description, const 
string &camera_text ) {
+
+       // Add the description to the drop down list.
+       camera_bookmark_list->appendItem( description.c_str() );
+       
+       // Add the camera text to the camera text list.
+       camera_text_list.push_back( camera_text );
+}
+
+
+
+
+

Modified: branches/itanium2/fox/FMantaWindow.h
==============================================================================
--- branches/itanium2/fox/FMantaWindow.h        (original)
+++ branches/itanium2/fox/FMantaWindow.h        Sun Jun 19 18:34:22 2005
@@ -8,11 +8,13 @@
 #include <Engine/Display/GLXImageDisplay.h>
 
 #include <fox/FMantaImageFrame.h>
+#include <vector>
 
 namespace fox_manta {
 
        using namespace FX;
        using namespace Manta;
+       using std::vector;
        
        // This is the main window for the Fox application.
        // this class will have a pointer to the RTRTInterface (manta 
interface)
@@ -34,6 +36,11 @@
                FXMenuPane *file_menu;
                FXMenuPane *manta_menu;
                
+               FXRealSlider  *speed_slider;
+               FXLabel       *speed_text;
+               FXListBox     *camera_bookmark_list;
+               vector<string> camera_text_list;
+               
                // Image panels for displaying output.
                FMantaImageFrame *manta_frame;
                
@@ -43,13 +50,15 @@
                // Commands for the main window.
                enum {
                        ID_QUIT = FXMainWindow::ID_LAST, // Sent when the 
application must quit.
+                       ID_SPEED_SLIDER,                 // Control speed 
slider was changed.
+                       ID_BOOKMARK_LIST,                // User selected a 
camera bookmark.
                        ID_LAST
                };
                
                // Constructors.
                FMantaWindow() : manta_interface( 0 ), fast_quit( false ) {  
};
                FMantaWindow( FXApp *app, const FXString &name, int width = 
256, int height = 256,
-                             FXIcon *ic=NULL,FXIcon *mi=NULL,FXuint 
opts=(DECOR_TITLE|DECOR_MINIMIZE|DECOR_MAXIMIZE|DECOR_BORDER|DECOR_SHRINKABLE|DECOR_STRETCHABLE|DECOR_MENU),
+                             FXIcon *ic=NULL,FXIcon *mi=NULL,FXuint 
opts=(DECOR_ALL),
                                                                        FXint 
x=20,FXint y=20,FXint w=256,FXint h=256,FXint pl=0,FXint pr=0,FXint 
pt=0,FXint pb=0,FXint hs=0,FXint vs=0);
                
                // Create the window.
@@ -57,6 +66,8 @@
                
                // Message handlers.
                long onQuit( FXObject *sender, FXSelector key, void *data );
+               long onSpeedSlider( FXObject *sender, FXSelector key, void 
*data );
+               long onCameraBookmark( FXObject *sender, FXSelector key, void 
*data );
                
                // Accessors.
                void setMantaInterface( RTRTInterface *manta_interface_, int 
manta_channel_ ) { 
@@ -66,6 +77,10 @@
                RTRTInterface    *getMantaInterface() { return 
manta_interface; };
                FMantaImageFrame *getMantaFrame()     { return manta_frame; };
                
+               void addCameraBookmark( const string &description, const 
string &camera_text );
+               
+               // This method is called by the manta thread to replace the 
camera.
+               void mantaThreadBookmark( const string camera_text ) const;
        };
 };
 

Modified: branches/itanium2/fox/fox_manta.cc
==============================================================================
--- branches/itanium2/fox/fox_manta.cc  (original)
+++ branches/itanium2/fox/fox_manta.cc  Sun Jun 19 18:34:22 2005
@@ -25,7 +25,7 @@
 int main( int argc, char *argv[]) {
 
        // Don't catch thread exceptions.
-       setenv("THREAD_NO_CATCH_SIGNALS","1",true);
+       setenv("THREAD_NO_CATCH_SIGNALS","1",false);
 
        // Parse args.
        int np = 1;
@@ -55,6 +55,13 @@
        // Add an FMantaWindow.
        FMantaWindow manta_window( &app, "Open-Source MANTA. Silicon Graphics 
Inc. and SCI Institute, University of Utah", width, height );
 
+       manta_window.addCameraBookmark( "Left Engine Cross-Section", 
"pinhole( -eye 1038.31 -517.053 108.78  -lookat 1057.9 169.557 123.655  -up 
0.0107751 -0.392417 0.919724  -fov 60 )" );
+       manta_window.addCameraBookmark( "Whole Cross-Section",       
"pinhole( -eye 1408.56 -2172.05 110.736  -lookat 1350.55 188.313 354.277  -up 
0.0117111 -0.465077 0.885192  -fov 60 )" );
+       manta_window.addCameraBookmark( "Cockpit Cross-Section",     
"pinhole( -eye 312.31 -315.671 199.735  -lookat 280.305 98.0706 184.652  -up 
0.0256952 -0.337005 0.941152  -fov 60 )" );
+       manta_window.addCameraBookmark( "Top View",                  
"pinhole( -eye 1821.5 -29.356 2323.27  -lookat 1446.55 13.6745 -591.948  -up 
-0.323033 -0.85584 0.403966  -fov 60 )" );
+       manta_window.addCameraBookmark( "Cargo Area",                
"pinhole( -eye 1858.79 -33.8248 155.066  -lookat 1273.5 -40.34 146.295  -up 
0.357763 0.0232703 0.933523  -fov 60 )" );
+       manta_window.addCameraBookmark( "Inside Cockpit",            
"pinhole( -eye 209.886 14.2034 244.021  -lookat -241.326 -158.379 185.454  
-up 0.216817 0.154821 0.963858  -fov 56.8882 )" );
+       
        // Create the application's windows.
        app.create();
 
@@ -92,7 +99,7 @@
        FMantaUniformNav *uniform_nav = new FMantaUniformNav();
        uniform_nav->setMantaCamera( camera );
        uniform_nav->setMantaInterface( manta_interface );
-       
+       uniform_nav->setMantaChannel( 0 );
        
        FMantaNavigator *nav = uniform_nav;
        manta_window.setNavigator( nav );
@@ -105,7 +112,6 @@
        if ((scene_text == 0) || (!manta_interface->readScene( scene_text ))) 
{
                // Create a default scene.
                manta_interface->setScene( createDefaultScene() );
-               
        }
 
        // Set the manta interface for the application.




  • [MANTA] r396 - in branches/itanium2: Engine/Control Engine/Display Interface fox, abe, 06/19/2005

Archive powered by MHonArc 2.6.16.

Top of page