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