Merge topic 'master'

a9ccdf57 Merge branch 'master' of gitlab.kitware.com:vtk/vtk-m
447295e7 Switch from OSMesa to ray tracer for demo because OSMesa is not working atm.
df0e6457 Demo.cxx compiles, at least. But, the background isn't even correct.
293ba569 Demo.cxx has not been updated in a while (pre-ResultDataSet change).
e8b17eb9 OSMesa, not OSMESA.

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !492
This commit is contained in:
Robert Maynard 2016-08-03 12:58:00 -04:00 committed by Kitware Robot
commit 5837864c52
2 changed files with 49 additions and 40 deletions

@ -20,7 +20,7 @@
##
##=============================================================================
vtkm_configure_component_OSMESA()
if(VTKm_OSMESA_FOUND)
if(VTKm_OSMesa_FOUND)
if(VTKm_CUDA_FOUND)
# Cuda compiles do not respect target_include_directories

@ -20,8 +20,8 @@
#include <vtkm/cont/testing/MakeTestDataSet.h>
#include <vtkm/rendering/Actor.h>
#include <vtkm/rendering/CanvasOSMesa.h>
#include <vtkm/rendering/MapperGL.h>
#include <vtkm/rendering/CanvasRayTracer.h>
#include <vtkm/rendering/MapperRayTracer.h>
#include <vtkm/rendering/Scene.h>
#include <vtkm/rendering/View.h>
#include <vtkm/cont/DeviceAdapter.h>
@ -34,6 +34,19 @@
#include <iostream>
void makeScene(const vtkm::cont::DataSet &inputData,
const vtkm::rendering::ColorTable &colorTable,
const std::string &fieldName,
vtkm::rendering::Scene &scene)
{
scene.AddActor(vtkm::rendering::Actor(inputData.GetCellSet(),
inputData.GetCoordinateSystem(),
inputData.GetField(fieldName),
colorTable));
}
// This example reads an input vtk file specified on the command-line (or generates a default
// input data set if none is provided), uses VTK-m's rendering engine to render it to an
// output file using OS Mesa, instantiates an isosurface filter using VTK-m's filter
@ -65,71 +78,67 @@ int main(int argc, char* argv[])
fieldName = "SCALARS:pointvar";
}
typedef vtkm::rendering::MapperGL< > Mapper;
typedef vtkm::rendering::CanvasOSMesa Canvas;
typedef vtkm::rendering::MapperRayTracer<VTKM_DEFAULT_DEVICE_ADAPTER_TAG> Mapper;
typedef vtkm::rendering::CanvasRayTracer Canvas;
// Set up a camera for rendering the input data
const vtkm::cont::CoordinateSystem coords = inputData.GetCoordinateSystem();
Mapper mapper;
vtkm::rendering::Camera3D &camera = mapper.GetCamera();
vtkm::Float64 coordsBounds[6];
coords.GetBounds(coordsBounds,VTKM_DEFAULT_DEVICE_ADAPTER_TAG());
vtkm::rendering::Camera camera = vtkm::rendering::Camera();
//Set3DView
vtkm::Bounds coordsBounds = coords.GetBounds(VTKM_DEFAULT_DEVICE_ADAPTER_TAG());
camera.ResetToBounds(coordsBounds);
vtkm::Vec<vtkm::Float32,3> totalExtent;
totalExtent[0] = vtkm::Float32(coordsBounds[1] - coordsBounds[0]);
totalExtent[1] = vtkm::Float32(coordsBounds[3] - coordsBounds[2]);
totalExtent[2] = vtkm::Float32(coordsBounds[5] - coordsBounds[4]);
totalExtent[0] = vtkm::Float32(coordsBounds.X.Max - coordsBounds.X.Min);
totalExtent[1] = vtkm::Float32(coordsBounds.Y.Max - coordsBounds.Y.Min);
totalExtent[2] = vtkm::Float32(coordsBounds.Z.Max - coordsBounds.Z.Min);
vtkm::Float32 mag = vtkm::Magnitude(totalExtent);
vtkm::Normalize(totalExtent);
camera.LookAt = totalExtent * (mag * .5f);
camera.Up = vtkm::make_Vec(0.f, 1.f, 0.f);
camera.NearPlane = 1.f;
camera.FarPlane = 100.f;
camera.FieldOfView = 60.f;
camera.Height = 512;
camera.Width = 512;
camera.Position = totalExtent * (mag * 2.f);
camera.SetLookAt(totalExtent * (mag * .5f));
camera.SetViewUp(vtkm::make_Vec(0.f, 1.f, 0.f));
camera.SetClippingRange(1.f, 100.f);
camera.SetFieldOfView(60.f);
camera.SetPosition(totalExtent * (mag * 2.f));
vtkm::rendering::ColorTable colorTable("thermal");
mapper.SetActiveColorTable(colorTable);
mapper.SetCamera(camera);
// Create a scene for rendering the input data
vtkm::rendering::Scene3D scene;
vtkm::rendering::Scene scene;
vtkm::rendering::Color bg(0.2f, 0.2f, 0.2f, 1.0f);
vtkm::rendering::CanvasOSMesa surface(512,512,bg);
scene.Actors.push_back(vtkm::rendering::Actor(inputData.GetCellSet(),
inputData.GetCoordinateSystem(),
inputData.GetField(fieldName),
colorTable));
Canvas canvas(512,512);
makeScene(inputData, colorTable, fieldName, scene);
// Create a view and use it to render the input data using OS Mesa
vtkm::rendering::View3D<Mapper, Canvas> view1(scene,
vtkm::rendering::View3D view(scene,
mapper,
surface,
canvas,
camera,
bg);
view1.Initialize();
view1.Paint();
view1.SaveAs("demo_input.pnm");
view.Initialize();
view.Paint();
view.SaveAs("demo_input.pnm");
// Create an isosurface filter
vtkm::filter::MarchingCubes filter;
filter.SetGenerateNormals(false);
filter.SetMergeDuplicatePoints(false);
filter.SetIsoValue(isovalue);
vtkm::filter::DataSetResult result = filter.Execute( inputData,
vtkm::filter::ResultDataSet result = filter.Execute( inputData,
inputData.GetField(fieldName) );
filter.MapFieldOntoOutput(result, inputData.GetField(fieldName));
vtkm::cont::DataSet& outputData = result.GetDataSet();
// Render a separate image with the output isosurface
std::cout << "about to render the results of the MarchingCubes filter" << std::endl;
scene.Actors.clear();
scene.Actors.push_back(vtkm::rendering::Actor(outputData.GetCellSet(),
outputData.GetCoordinateSystem(),
outputData.GetField(fieldName),
colorTable));
vtkm::rendering::Scene scene2;
makeScene(outputData, colorTable, fieldName, scene2);
vtkm::rendering::View3D< Mapper, Canvas> view2(scene,
vtkm::rendering::View3D view2(scene2,
mapper,
surface,
canvas,
camera,
bg);
view2.Initialize();
view2.Paint();