Leveraging Open Source Software to Create Technical Animations of Scientific Data



Similar documents
Simulation of Air Flow Through a Test Chamber

Human Body Mesh With Maya

Overview Presented by: Boyd L. Summers

Report Documentation Page

Detailed Alignment Procedure for the JEOL 2010F Transmission Electron Microscope

Determination of Volatile Organic Compounds Content Using Novel Ash and Total Solids Analysis for Chemical Agent Resistant Coating Systems

Guide to Using DoD PKI Certificates in Outlook 2000

John Mathieson US Air Force (WR ALC) Systems & Software Technology Conference Salt Lake City, Utah 19 May 2011

DEFENSE CONTRACT AUDIT AGENCY

EAD Expected Annual Flood Damage Computation

Synchronization of Unique Identifiers Across Security Domains

DCAA and the Small Business Innovative Research (SBIR) Program

THE FLATWORLD SIMULATION CONTROL ARCHITECTURE (FSCA): A FRAMEWORK FOR SCALABLE IMMERSIVE VISUALIZATION SYSTEMS

Asset Management- Acquisitions

Mr. Steve Mayer, PMP, P.E. McClellan Remediation Program Manger Air Force Real Property Agency. May 11, 2011

ELECTRONIC HEALTH RECORDS. Fiscal Year 2013 Expenditure Plan Lacks Key Information Needed to Inform Future Funding Decisions

AFRL-RX-WP-TP

VisIt Visualization Tool

Issue Paper. Wargaming Homeland Security and Army Reserve Component Issues. By Professor Michael Pasquarett

Integrated Force Method Solution to Indeterminate Structural Mechanics Problems

MayaVi: A free tool for CFD data visualization

Multiple Network Marketing coordination Model

RT 24 - Architecture, Modeling & Simulation, and Software Design

Using the Advancement Degree of Difficulty (AD 2 ) as an input to Risk Management

Pima Community College Planning Grant For Autonomous Intelligent Network of Systems (AINS) Science, Mathematics & Engineering Education Center

Dr. Gary S. E. Lagerloef Earth and Space Research, 1910 Fairview Ave E

CAPTURE-THE-FLAG: LEARNING COMPUTER SECURITY UNDER FIRE

REPORT DOCUMENTATION PAGE *

FIRST IMPRESSION EXPERIMENT REPORT (FIER)

73rd MORSS CD Cover Page UNCLASSIFIED DISCLOSURE FORM CD Presentation

An Oil-Free Thrust Foil Bearing Facility Design, Calibration, and Operation

Military Health System Conference

Visualization and Post Processing of OpenFOAM results a Brie. a Brief Introduction to VTK

SHOALS Toolbox: Software to Support Visualization and Analysis of Large, High-Density Data Sets

HEC-DSS Add-In Excel Data Exchange for Excel

THE MIMOSA OPEN SOLUTION COLLABORATIVE ENGINEERING AND IT ENVIRONMENTS WORKSHOP

Advanced Micro Ring Resonator Filter Technology

An Application of an Iterative Approach to DoD Software Migration Planning

Cancellation of Nongroup Health Insurance Policies

Introduction to Computer Graphics. Jürgen P. Schulze, Ph.D. University of California, San Diego Fall Quarter 2012

DEFENSE BUSINESS PRACTICE IMPLEMENTATION BOARD

Headquarters U.S. Air Force

Addressing the Real-World Challenges in the Development of Propulsion IVHM Technology Experiment (PITEX)

Introduction to Paraview. H.D.Rajesh

CERT Virtual Flow Collection and Analysis

Mobile Robot Knowledge Base

IISUP-. NAVAL SUPPLY SVSTE:MS COMMAND. Ready. Resourceful. Responsive!

An Implicit Three-Dimensional Meteorological Message for Artillery Trajectory Calculation

Image Processing and Computer Graphics. Rendering Pipeline. Matthias Teschner. Computer Science Department University of Freiburg

Scientific Visualization with Open Source Tools. HM 2014 Julien Jomier

Post-processing and Visualization with Open-Source Tools. Journée Scientifique Centre Image April 9, Julien Jomier

Why are we teaching you VisIt?

Introduction to Computer Graphics

DOCUMENTATION FILE BACKUP

In June 1998 the Joint Military Intelligence. Intelligence Education for Joint Warfighting A. DENIS CLIFT

Microstructural Evaluation of KM4 and SR3 Samples Subjected to Various Heat Treatments

Introduction to Visualization with VTK and ParaView

Visualization with ParaView. Greg Johnson

PREPARED FOR: U.S. Army Medical Research and Materiel CommandFort Detrick, Maryland

MINDS: A NEW APPROACH TO THE INFORMATION SECURITY PROCESS

Optical Blade Position Tracking System Test

A GPS Digital Phased Array Antenna and Receiver

Algorithmic Research and Software Development for an Industrial Strength Sparse Matrix Library for Parallel Computers

A New Empirical Relationship between Thrust Coefficient and Induction Factor for the Turbulent Windmill State

Visualizing Electromagnetic Fields: The Visualization Toolkit. Michael Selvanayagam

Computer Applications in Textile Engineering. Computer Applications in Textile Engineering

UMass at TREC 2008 Blog Distillation Task

TITLE: The Impact Of Prostate Cancer Treatment-Related Symptoms On Low-Income Latino Couples

Evaluation of a 10 kv, 400 ka Si SGTO at High di/dt


Assessment of NASA Dual Microstructure Heat Treatment Method Utilizing Ladish SuperCooler Cooling Technology

Non-Autoclave (Prepreg) Manufacturing Technology

Obsolescence Considerations for Materials in the Lower Sub-Tiers of the Supply Chain

NAVAL POSTGRADUATE SCHOOL

Elastomer Compatibility Testing of Renewable Diesel Fuels

Award Number: W81XWH

CONTRACTING ORGANIZATION: University of Alabama at Birmingham Birmingham, AL 35294

E X A D A T A NEW EXPLOSIVES ACCIDENT DATABASE

PROBLEM STATEMENT: Will reducing the ASD for Kadena AB F-15 C/Ds increase the CPFH for this Mission Design Series (MDS)?

Intelligence Community Public Key Infrastructure (IC PKI)

REPORT DOCUMENTATION PAGE

The Visualization Pipeline

OPTICAL IMAGES DUE TO LENSES AND MIRRORS *

Dynamic IR Scene Projector Based Upon the Digital Micromirror Device

Facts about Visualization Pipelines, applicable to VisIt and ParaView

How To Learn To Program In Csc 406 Computer Graphics

Transcription:

Leveraging Open Source Software to Create Technical Animations of Scientific Data by John M. Vines ARL-TR-3918 September 2006 Approved for public release; distribution is unlimited.

NOTICES Disclaimers The findings in this report are not to be construed as an official Department of the Army position unless so designated by other authorized documents. Citation of manufacturer s or trade names does not constitute an official endorsement or approval of the use thereof. DESTRUCTION NOTICE Destroy this report when it is no longer needed. Do not return it to the originator.

Army Research Laboratory Aberdeen Proving Ground, MD 21005-5066 ARL-TR-3918 September 2006 Leveraging Open Source Software to Create Technical Animations of Scientific Data John M. Vines Computational and Information Sciences Directorate, ARL Approved for public release; distribution is unlimited.

REPORT DOCUMENTATION PAGE Form Approved OMB No. 0704-0188 Public reporting burden for this collection of information is estimated to average 1 hour per response, including the time for reviewing instructions, searching existing data sources, gathering and maintaining the data needed, and completing and reviewing the collection information. Send comments regarding this burden estimate or any other aspect of this collection of information, including suggestions for reducing the burden, to Department of Defense, Washington Headquarters Services, Directorate for Information Operations and Reports (0704-0188), 1215 Jefferson Davis Highway, Suite 1204, Arlington, VA 22202-4302. Respondents should be aware that notwithstanding any other provision of law, no person shall be subject to any penalty for failing to comply with a collection of information if it does not display a currently valid OMB control number. PLEASE DO NOT RETURN YOUR FORM TO THE ABOVE ADDRESS. 1. REPORT DATE (DD-MM-YYYY) September 2006 4. TITLE AND SUBTITLE 2. REPORT TYPE Final 3. DATES COVERED (From - To) 5a. CONTRACT NUMBER Leveraging Open Source Software to Create Technical Animations of Scientific Data 5b. GRANT NUMBER 5c. PROGRAM ELEMENT NUMBER 6. AUTHOR(S) John M. Vines (ARL) 5d. PROJECT NUMBER 6UH7CC 5e. TASK NUMBER 5f. WORK UNIT NUMBER 7. PERFORMING ORGANIZATION NAME(S) AND ADDRESS(ES) U.S. Army Research Laboratory Computational and Information Sciences Directorate Aberdeen Proving Ground, MD 21005-5066 9. SPONSORING/MONITORING AGENCY NAME(S) AND ADDRESS(ES) 8. PERFORMING ORGANIZATION REPORT NUMBER ARL-TR-3918 10. SPONSOR/MONITOR S ACRONYM(S) 11. SPONSOR/MONITOR S REPORT NUMBER(S) 12. DISTRIBUTION/AVAILABILITY STATEMENT Approved for public release; distribution is unlimited. 13. SUPPLEMENTARY NOTES 14. ABSTRACT Open source animation software packages provide a means for which scientists, researchers, and engineers can develop technically correct animation at no cost. The U.S. Army Research Laboratory spends tens of thousands of dollars annually for software licenses for packages such as Maya, Houdini, and 3D Studio Max, while in many instances, an open source package such as Blender3D would suffice. 15. SUBJECT TERMS high performance computing; HPC; Python; scientific; visualization 16. SECURITY CLASSIFICATION OF: 17. LIMITATION OF ABSTRACT 18. NUMBER OF PAGES 19a. NAME OF RESPONSIBLE PERSON John M. Vines a. REPORT Unclassified b. ABSTRACT Unclassified c. THIS PAGE Unclassified SAR 15 19b. TELEPHONE NUMBER (Include area code) 410-278-9150 Standard Form 298 (Rev. 8/98) Prescribed by ANSI Std. Z39.18 ii

Contents List of Figures iv 1. Introduction 1 2. Discussion 1 3. Conclusions 5 4. References 7 Appendix A. Blender Python Script Importing and Animating Time Variant Data 9 Distribution List 12 iii

List of Figures Figure 1. Blender3D user interface...4 Figure 2. Blender3D rendered image, time step 1....4 Figure 3. Blender3D rendered image, time step 300....5 Figure 4. Blender3D rendered image, time step 500 (the last time step in data)...5 iv

1. Introduction The objective of this technical report is to provide data about the use of open source software tools to create scientifically correct technical animations from scientific data. The packages used were Blender 3D, blender3d.org, and the Visualization Toolkit (VTK), www.vtk.org. Television and movie industry animation packages, such as Maya 1, Houdini 2, Lightwave 3 or 3D Studio Max 1, are very powerful and very costly. These programs are very good at importing, animating, and rendering the millions of polygons created by large scientific data sets. My objective was to see if we could employ an open-source package with the same or nearly the same results as using a professional package. 2. Discussion The first place that I started when reviewing Blender3D was the number of polygons supported; at present, version 2.42 supports as many as 2 billion faces per scene. A face can be comprised of quadrilateral or triangular polygons. On average, a scientific data set may encompass 500,000 to 1,000,000 cells or polygons; larger data sets contain well over 1,000,000 and approach 1,000,000,000 cells or polygons. The data that I am using have at most 750,000 polygons; therefore, Blender3D will have no problems with the data. At the very heart of Blender3D is the Python 4 programming language. Python is a high-level programming language designed by Guido van Rossum in 1990. It is a dynamically typed, object-oriented language, which makes it similar to Perl 5, Ruby, Scheme, Smalltalk 6, and Tcl. Python runs on Windows 7, Linux 8 or UNIX 9, Palm Handhelds and is the primary programming language for Nokia mobile phones. It was developed as an open-source project, under the Python Software Foundation. Its versatility allows for many different uses in many different areas. National Aeronautics and Space Administration uses it to streamline communication with Oracle s databases for space shuttle missions, the New York Stock Exchange uses it to create 1 Maya and 3D Studio Max are registered trademarks of Autodesk, Inc. 2 Houdini is a registered trademark of Side Effects Software, Inc. 3 Lightwave is a registered trademark of NewTek, Inc. 4 Python is a trademark of Python Software Foundation. 5 Perl is a trademark of The Perl Foundation. 6 SmallTalk is a trademark of Active Information Corporation. 7 Windows is a trademark of Microsoft Corporation. 8 Linux is a registered trademark of Linus Torvalds. 9 UNIX is a registered trademark of The Open Group. 1

graphical user interfaces (GUIs) for the real-time equity trading system, and Industrial Light and Magic use Python to glue together the thousands of computers and hundreds of software components in its computer graphics pipeline. By default, Blender3D does not provide an interface for color-per-vertex shading. We needed to find a way to map scalar values from the data to the vertices, or nodes, of the polygonal data. I was able to accomplish this through the use of VTK and a new Python module, VTKBlender.py, written at the University of Alberta. VTK is an open source, freely available software system for three-dimensional (3-D) computer graphics, image processing, and visualization. VTK is a true visualization program, meaning that it does not just allow for simple geometry visualization but for a wide variety of algorithms that include scalar, vector, tensor, texture, and volumetric methods. It also allows for advanced modeling techniques such as implicit modeling, polygon reduction, mesh smoothing, cutting, contouring, and Delaunay triangulation. The VTKBlender Python module was written at the University of Alberta's Academic Information and Communication Technology center. The module converts vtkpolydatamapper s to Blender3D polygonal meshes, with color-per-vertex information, and converts Blender3D meshes to vtkpolydata. VTKBlender.PolyDataMapperToBlender(pmapper, me=none) If the function is run with only one argument, this function takes a vtkpolydatamapper pmapper and returns a new blender mesh with the converted polydata. A second optional argument, which takes a pre-existing blender mesh, may be provided, causing the existing mesh to be overwritten with the polydata. Please note that the new mesh is not added to the scene and can be added afterwards via sc = Blender.Scene.GetCurrent() ob = Blender.Object.New('Mesh') ob.link(me) sc.link(ob) The reason why the function takes a vtkpolydatamapper object as an argument (instead of a vtkpolydata object) is because the vtkpolydatamapper can also contain a look-up table to color the data, in which case, the blender mesh will have vertex colors set accordingly. VTKBlender.BlenderToPolyData(me) This function takes a blender mesh and returns a vtkpolydata object that contains the geometry contained in the mesh. (http://www.ualberta.ca/cns/research/vis/vtkblender/index.html) Blender 3D is an open-source software package used for 3-D modeling and animation developed as an in-house application by the Dutch animation studio NeoGeo and Not a Number Technologies 2

(NaN). Blender is available for use on many operating systems, including FreeBSD 10, IRIX 11, GNU/Linux, Windows, Mac OSX, Solaris 12, SkyOS, and MorphOS. Recent additions to Blender support for 2 billion faces per scene, user interface enhancements and support for third party raytracing packages have brought its capabilities close to those of high end 3-D software, such as XSI, 3D Studio Max, and Maya, all professional programs used by Hollywood studios such as Pixar. The user interface for Blender3D is highly customizable and configurable by the user. A typical scripting setup will have an OpenGL 13 showing the data, a text editing window showing the Python script, and application windows at the bottom of the screen comprised of rendering options, directory information, animation options and hierarchical data. The Python program shown in figure 1 imports, animates, and renders the time-variant data on a local file system. All polygonal objects in Blender3D are considered meshes. The VTKBlender module, VTKBlender.py, provides the interface between the VTK data and Blender3D creating the polygonal mesh and applying the color-per-vertex information on the fly. The data represented here are of an experimental armature for an electromagnetic weapon system. The rendered data show the electromagnetic forces in the X axial direction. In the completed animation, I was able to move the camera around the data showing multiple views of the data. The areas of interest (and showing where the forces are the greatest) are in red. The completed animation presents a complete picture of the performance of the candidate armature, presenting the color-per-vertex scientific data in a manner that is easily understood by the viewing audience. Figures 2, 3, and 4 show time-variant electromagnetic data rendered in Blender3D. 10 FreeBSD is a registered trademark of The FreeBSD Foundation. 11 IRIX is a trademark of Silicon Graphics, Inc. (SGI). 12 Solaris is a trademark of Sun Microsystems, Inc. 13 OpenGL is a registered trademark of SGI. 3

Figure 1. Blender3D user interface. Figure 2. Blender3D rendered image, time step 1. 4

Figure 3. Blender3D rendered image, time step 300. Figure 4. Blender3D rendered image, time step 500 (the last time step in data). 3. Conclusions In the past, I have used animation packages such as Maya, Lightwave, 3D Studio Max, and Houdini to present and render scientific data. All these animation packages are tremendous at what they do, but there is a cost associated with each package and in some cases, it may be in the range of tens of thousands of dollars each year. Employing an open-source software package such as Blender3D to render photographic quality images and technical animations at no cost would save ARL and the Department of Defense tens of thousands of dollars each year in fees associated with software licenses and maintenance. 5

The incorporation of a Python interpreter at the very core of Blender3D provides an application programming interface to the data, thus providing a means to read and manipulate the data in a highly scientific manner. 6

4. References 1. Wikipedia. Python Programming Language, web site, http://em.wikipedia.org/wiki/ Python_programming_language, 2006. 2. Wikipedia. Visualization Toolkit (VTK), web site, http://em.wikipedia.org/wiki/vtk, 2006. 3. Visualization: VTK and Blender; http://www.ualberta.ca/cns/ RESEARCH/Vis/ VTKBlender/index.html, 2006. 5. Web site, http://www.vtk.org/, 2006. 6. Web site, http://www.blender.org/, 2006. 7

INTENTIONALLY LEFT BLANK 8

Appendix A. Blender Python Script Importing and Animating Time Variant Data #!BPY """ Name: 'ANIMATE XDMF' Blender: 241 Group: 'Animation' """ import os,sys,string import Blender from Blender.Scene import Render try: except: import VTKBlender as VB print 'Problem importing VTKBlender module...' import vtk as V #from Xdmf import * from XFrameWork.io import XdmfVtk as X class Data: iteration = 0 datadir = None name = None ext = None me = None ActiveScalar = 'FX' location = [[0,0,0]] def init (self): """reads XDMF files from directory""" pass def ComputeAverageDistance(self): x_vector = 255 dx = x_vector / 18.0 print 'Computing average distance...', dx x = 0 for i in range( 18 ): loc = [ x + dx, 0, 0] self.location.append( loc ) x = x + dx print 'X: ', x del x_vector del dx def ImportTimesteps(self): """Checks to see if we have multiple timesteps, if so import them into Blender""" print '%d files' % self.iteration if self.iteration!= 0: self.xdmfdatafiles.sort() for file in self.xdmfdatafiles: path = self.datadir + '/' + file self.import_xdmf( self.xdmfdatafiles.index( file ), path ) def Import_Xdmf(self, cntr, xdmf_file): print 'XDMF file: ', xdmf_file Blender.Window.WaitCursor(1) reader = X.vtkXdmfReader() reader.setfilename( xdmf_file ) 9

reader.updateinformation() reader.enableallgrids() reader.enableallarrays() reader.update() surface = V.vtkDataSetSurfaceFilter() surface.setinput( reader.getoutput() ) surface.setpieceinvariant( 1 ) surface.update() cells = surface.getoutput().getnumberofcells() lut = V.vtkLookupTable() lut.setnumberofcolors( 256 ) lut.sethuerange( 0.667, 0.0 ) lut.build() m = V.vtkPolyDataMapper() m.setinput( surface.getoutput() ) m.setscalarmodetousepointdata() m.getinput().getpointdata().setactivescalars( self.activescalar ) min, max = m.getinput().getscalarrange() if min < 0.0: min = 0.0 print 'Scalar min: %f max: %f ' % ( min, max ) m.setlookuptable( lut ) m.getlookuptable().settablerange( min, max ) m.update() self.name,self.ext = os.path.splitext( os.path.basename( xdmf_file ) ) scn = Blender.Scene.GetCurrent() if cntr == 0: self.me = VB.PolyDataMapperToBlender( m ) ob = Blender.Object.New('Mesh', self.name) ob.link(self.me) #tell object to use new mesh scn.link(ob) #link object to current scene else: self.u_me = VB.PolyDataMapperToBlender( m, self.me ) c_ob = scn.getactiveobject() scn.unlink( c_ob ) ob = Blender.Object.New('Mesh', self.name) ob.link(self.u_me) #tell object to use new mesh scn.link(ob) #link object to current scene cam = Blender.Object.Get('Camera') grp1 = Blender.Object.Get('armature_guides') grp2 = Blender.Object.Get('payload') lamp1 = Blender.Object.Get('Lamp') lamp2 = Blender.Object.Get('Lamp.001') ob.makeparent( [cam, grp1, grp2, lamp1, lamp2] ) ob.setlocation( self.location[cntr] ) ob.sel = 1 ob.layers = scn.layers scn.update() Blender.Window.RedrawAll() del scn def RenderScene(self, cntr): context = Blender.Scene.GetCurrent().getRenderingContext() context.saverenderedimage("%s.%04d.jpg" % ( self.activescalar, cntr) ) context.setimagetype(render.jpeg) context.enableextensions(1) context.render() del context def Main(self): self.computeaveragedistance() for i in range(1): 10

file = '/home/jvines/devel/coupling_05/em_dyna3d_coupling/test/coupled_probed_%04d.xmf' % i self.import_xdmf( i, file ) self.renderscene( i ) if name ==" main ": d = Data() d.main() 11

NO. OF COPIES ORGANIZATION 1 DEFENSE TECHNICAL (PDF INFORMATION CTR ONLY) DTIC OCA 8725 JOHN J KINGMAN RD STE 0944 FORT BELVOIR VA 22060-6218 1 US ARMY RSRCH DEV & ENGRG CMD SYSTEMS OF SYSTEMS INTEGRATION AMSRD SS T 6000 6TH ST STE 100 FORT BELVOIR VA 22060-5608 1 DIRECTOR US ARMY RESEARCH LAB IMNE ALC IMS 2800 POWDER MILL RD ADELPHI MD 20783-1197 1 DIRECTOR US ARMY RESEARCH LAB AMSRD ARL CI OK TL 2800 POWDER MILL RD ADELPHI MD 20783-1197 2 DIRECTOR US ARMY RESEARCH LAB AMSRD ARL CS OK T 2800 POWDER MILL RD ADELPHI MD 20783-1197 ABERDEEN PROVING GROUND 1 DIRECTOR US ARMY RSCH LABORATORY ATTN AMSRD ARL CI OK (TECH LIB) BLDG 4600 2 DIRECTOR US ARMY RSCH LABORATORY ATTN AMSRD ARL CI HC J VINES BLDG 394 12