1 /*=========================================================================
2 
3   Program:   Visualization Toolkit
4 
5   Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
6   All rights reserved.
7   See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
8 
9      This software is distributed WITHOUT ANY WARRANTY; without even
10      the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
11      PURPOSE.  See the above copyright notice for more information.
12 
13 =========================================================================*/
14 
15 #include "vtkActor.h"
16 #include "vtkCamera.h"
17 #include "vtkNew.h"
18 #include "vtkOpenGLPolyDataMapper.h"
19 #include "vtkOpenGLRenderWindow.h"
20 #include "vtkOpenGLVertexBufferObject.h"
21 #include "vtkPLYReader.h"
22 #include "vtkProperty.h"
23 #include "vtkRenderer.h"
24 
25 #include "vtkRegressionTestImage.h"
26 #include "vtkTestUtilities.h"
27 
28 #include "vtkRenderWindowInteractor.h"
29 
30 #include "vtkOpenGLRenderWindow.h"
31 
32 #include "vtkCullerCollection.h"
33 #include "vtkOpenVRCamera.h"
34 #include "vtkTransform.h"
35 
36 #include "vtkPlaneWidget.h"
37 
38 #include "vtkTransformPolyDataFilter.h"
39 
40 #include "vtkLight.h"
41 
42 #include "vtkOpenVRCamera.h"
43 #include "vtkOpenVRRenderWindow.h"
44 #include "vtkOpenVRRenderWindowInteractor.h"
45 #include "vtkOpenVRRenderer.h"
46 
47 #include "vtkWin32OpenGLRenderWindow.h"
48 #include "vtkWin32RenderWindowInteractor.h"
49 
50 //------------------------------------------------------------------------------
TestDragon(int argc,char * argv[])51 int TestDragon(int argc, char* argv[])
52 {
53   vtkNew<vtkOpenVRRenderer> renderer;
54   vtkNew<vtkOpenVRRenderWindow> renderWindow;
55   vtkNew<vtkOpenVRRenderWindowInteractor> iren;
56   vtkNew<vtkOpenVRCamera> cam;
57   renderer->SetShowFloor(true);
58 
59   vtkNew<vtkActor> actor;
60   renderer->SetBackground(0.2, 0.3, 0.4);
61   renderWindow->AddRenderer(renderer);
62   renderer->AddActor(actor);
63   iren->SetRenderWindow(renderWindow);
64   renderer->SetActiveCamera(cam);
65 
66   // renderer->UseShadowsOn();
67 
68   // crazy frame rate requirement
69   // need to look into that at some point
70   renderWindow->SetDesiredUpdateRate(350.0);
71   iren->SetDesiredUpdateRate(350.0);
72   iren->SetStillUpdateRate(350.0);
73 
74   renderer->RemoveCuller(renderer->GetCullers()->GetLastItem());
75 
76   vtkNew<vtkLight> light;
77   light->SetLightTypeToSceneLight();
78   light->SetPosition(1.0, 1.0, 1.0);
79   renderer->AddLight(light);
80 
81   const char* fileName = vtkTestUtilities::ExpandDataFileName(argc, argv, "Data/dragon.ply");
82   vtkNew<vtkPLYReader> reader;
83   reader->SetFileName(fileName);
84 
85   vtkNew<vtkTransform> trans;
86   trans->Translate(10.0, 20.0, 30.0);
87   // trans->Scale(10.0,10.0,10.0);
88   vtkNew<vtkTransformPolyDataFilter> tf;
89   tf->SetTransform(trans);
90   tf->SetInputConnection(reader->GetOutputPort());
91 
92   vtkNew<vtkOpenGLPolyDataMapper> mapper;
93   mapper->SetInputConnection(tf->GetOutputPort());
94   mapper->SetVBOShiftScaleMethod(vtkOpenGLVertexBufferObject::AUTO_SHIFT_SCALE);
95   actor->SetMapper(mapper);
96   actor->GetProperty()->SetAmbientColor(0.2, 0.2, 1.0);
97   actor->GetProperty()->SetDiffuseColor(1.0, 0.65, 0.7);
98   actor->GetProperty()->SetSpecularColor(1.0, 1.0, 1.0);
99   actor->GetProperty()->SetSpecular(0.5);
100   actor->GetProperty()->SetDiffuse(0.7);
101   actor->GetProperty()->SetAmbient(0.5);
102   actor->GetProperty()->SetSpecularPower(20.0);
103   actor->GetProperty()->SetOpacity(1.0);
104   //  actor->GetProperty()->SetRepresentationToWireframe();
105 
106   // the HMD may not be turned on/etc
107   renderWindow->Initialize();
108   if (renderWindow->GetHMD())
109   {
110     renderer->ResetCamera();
111     renderWindow->Render();
112 
113     int retVal = vtkRegressionTestImage(renderWindow.Get());
114     if (retVal == vtkRegressionTester::DO_INTERACTOR)
115     {
116       iren->Start();
117     }
118     return !retVal;
119   }
120   return 0;
121 }
122