Wednesday, August 31, 2016

GCode

G Code *(Geometric Code) aka RS-274

or G&N cdeo as descibed on you tube
https://www.youtube.com/watch?v=r5bimWKeMbY

GCode is a code language for CnC machines
it controls how and where a machine moves
code vary for different machines

movements are done with Cartesion Coordinates.
X indicates the X axis
Y indicates the vetical postion of the machines Y axis
(usually Y is also up in world space for CAD software, with the exception of 3DsMax)
Z controls depth or Z axis

numbers direcly following X,Y,Z are the distances the machine should travel in that direction
specific Codes can change the units of measurement
ie G20 will mean subsequent code will be executed in inches
ie G21 will mean subsequent code will be executed in mm

the machines speed is determined by the code
ie G00 use max speed

spindle rotation speed I also controlled

G01 - move at a feed rate (determined by F)

some codes are like predetermied movements
G20 - makes a clockwise circular motion, G30 in in a counter clockwise circular motion
G02 circular interpolation clockwise, G03 circular interpolation counter clockwise


an Arc is determined by I, J for incremental centers and J determines the radius
ie to arc (clockwise) from p1 to p2, p2 must be a point tot he right of p1 or in the + X axis

(if it was negative in X in relation to p1 then it would form a counter clockwise arc)
the center of the arc would lie at the midpoint of P1 and P2
the center is specified with coordinates I and J
the radius of the arc is specified in the GCode - this will give us the arc.

the Gcode would be :
X_Y_I_J_F_

where X,Y is the pos of p1, I,J is the pos of the arcs center (relative to the start),
and F is the feed rate - how fast to move the nozzle/end mill.

G90 - set the coordinate system to absolute (the arc center is always relative to the start point)
G91 - set the coordinate system to relative (aka incremental)


MCodes (misc machine codes) ie
M06 tool change on a CnC machines

Init code
Saftety codes - cancel offsets - set measurements etc.
N07 tool change and speed setting


then the actual movements are specified
Ncodes - return the machine to the home position then stop and rewind the program in preparation for another print.


nozzle is sometimes referred to as the end mill.
a complete set of GCodes is refferred to as a part program

start and end of GCode is indicated with a %
Prep codes are unique to machines


M15 tells the machine to stop the spindle

typically a nozzle is lifted up in Y above a machines part

GCodes are typically simulated for identify errors and prevent expensive machine damage.

GCode Tutorials
http://linuxcnc.org/docs/html/gcode.html (Quick Reference)https://www.youtube.com/watch?v=r5bimWKeMbY
https://www.youtube.com/watch?v=hq47wq9qBbs
https://www.youtube.com/watch?v=iMx_UYrvuos (HAAS)

TCPC - controlling part and machine 'tip' at the same time akin to rotating worldspace in a
3D virtual environment
https://www.youtube.com/watch?v=HxPjH4v5iEg

code Details : http://reprap.org/wiki/G-code

Week 5 research - Image J

A quick search revealed that image J supports "bitmap stacks".
So more research follows:

"ImageJ can display multiple spatially or temporally related images in a single window. These image sets are called stacks. The images that make up a stack are called slices. In stacks, a pixel (which represents 2D image data in a bitmap image) becomes a voxel (volumetric pixel), i.e., an intensity value on a regular grid in a three dimensional space."

Stacks are stored in RAM - Virtual Stacks are stored on the disk, and are read only, bu there are work arounds. TIF Virtual stacks can be accessed faster then JPG virtual stacks
JPG can be converted to TIF.


TIF is the Native format of imageJ:

TIFF (Tagged Image File Format) is the ‘default’ format of ImageJ
Images can be 1–bit, 8–bit, 16–bit (unsigned1), 32–bit (real) or RGB color. 
TIFF files with multiple images of the same type and size open as Stacks or Hyperstacks. 

ImageJ opens lossless compressed TIFF files (see II Image Types: Lossy Compression and Metadata) by the LZW, PackBits and ZIP (Deflate/Inflate) [2] compression schemes. 

In addition, TIFF files can be opened and saved as ZIP archives. Tiff tags and information needed to import the file (number of images, offset to first images, gap between images) are printed to the Log Window when ImageJ is running in Debug Mode (Edit.Options.Misc..., see Settings and Preferences).

DICON also supported:
DICOM (Digital Imaging and Communications in Medicine) is a standard popular in the medical imaging community.
Support in ImageJ is limited to uncompressed DICOM files.
DICOM files containing multiple images open as Stacks. Use Image.Show Info... [i] to display the DICOM header information.

A DICOM sequence can be opened using File.Import.Image Sequence... 
or by dragging and dropping the folder on the ‘ImageJ’ window. 

Imported sequences are sorted by image number instead of filename and the tags are preserved when DICOM images are saved in TIFF format. 

ImageJ supports custom DICOM dictionaries, such as the one at http://imagej.nih.gov/ij/download/docs/DICOM_Dictionary.txt. 

More information can be found at the Center for Advanced Brain Imaging. 

Tiff bitmapstacks can be "flattened " with a montage feature under the stacks menu


Chapter 12 of the Manual is on Volumes




Tuesday, August 30, 2016

GUI stuff - using houdini as an example

* to check your directX version: START->dxdiag

his is Houdini's technical layout mode - its shows the features of a 3D interface
we may or may not want to use.


Major Sections shown here (note the interface is very customisable)

Top row: file menus through to help menu

Under this: shelves - basically shortcuts to commands like make a cube at the origin
shelves are grouped into like minded tools or tool all using the same tech like polygons or volumes

Left: tall list like view:
tree view - a scene hierarchy, clicking on a leaf or node in the tree is the same as selecting the graphical representation of an object in the viewport (see  below)

center: Viewport - where the openGL graphics is drawn representing the 3D scene
viewport top right yellow text: select camera to look through

TABS above openGL viewport"
#Scene view - currently displaying a single perspective view
can be split into four view like more CAD oriented software.

#Animation Editor - animation graph with 2D navigation (pan,zoom, zoom extends, frame, frame selected) and keyframing abilities

#render view, # Composite view, # motion FX view - beyond our scope

#Viewport left vertical ribbon: Mouse Selection Options
select objects, components, hierarchies with the mouse
select mouse modes (lasso, laser pointer, box-drag, circle-drag)
move, rotate, scale - I never use these, I use hot keys instead (Q,W,E,R)
adjust object pivot

Snaps (grid, curve, point etc)
render region - beyond our scope
inspect object properties by mouse over ?
flipbook/playblast animation

#lower Ribbon - Animation Controls - beyond our scope
animation playback,
timeslider
jogging controls - +1 single frame , minus 1 single frame
frame entry field
keyframe button
loop mode (play once, loop, ping pong)
audio
time global Settings ie playback rate in fps, min and max speed threshold

#Right Ribbon: Viewport Display Options - more suitable for us
show grid
lock camera to navigation
show lighting, texturing, ambient occlusion, realtime lighting level of accuracy
show points
show point normals
show point numbers
show primitive numbers
show primitive normals
show object names
show background image
show customized attributes

all this could really all be bundled into HUD (Heads up display) for us

# lower center: Python shell / Command feedback

# Top-Right: Node graph view - object level (this toggles to subobject level when required)
node hierarchy also shown here with node connections (wires)

# lower Right : Node Parameters
this is sensitive to which node is selected.
shows all relative information on a node:
Transforms, render settings
Shaders assigned
misc - including custom display color, icon scale etc.
*Any object hcan have custom data or meta data attached.
















Wednesday, August 24, 2016

Client Meeting #1

A late introduction to our client Dr Greg Ruthenbeck
has revealed some directions to look into:

- he has already a lot of experience in the field so he can steer us in certain directions

the meeting revealed:

* dont assume we have convert between volumetric formats and triangles/"shells" right away or at all, maybe some 3D printers can print from a voxel format, a print is afterall just 3D space discretised (broken up into lots of cubes)

this reminds me the 2D world - of conversion from vector graphics to bitmaps
- you dont want to do it too soon - you may be open for a loss of data or image quality. or even a slight change in perception of an image when converting from vectors to a bitmap - may not be desirable

* pre-existing software to look into

Shapeways - triangle manip ? / libraries
searching for this gave me more of a 3D model market place ?
but then I saw this
http://www.shapeways.com/tutorials/supported-applications

Image J - powerful openSource image (voxel as well ?) manipulation
I had a quick look but couldnt see any mention to voxels
http://imagej.net/Welcome 

DirectX as an alternative to openGL
- better support / documentation is an advantge

wikipedia:
DirectX is a set of low-level Application Programming Interfaces (APIs) that provides Windows programs with high-performance hardware-accelerated multimedia support. DirectX enables the program to easily determine the hardware capabilities of your computer, and then sets the program parameters to match.

*File Formats

Input
bitmap stacks (arrays of bitmaps)
DICON
http://www.dicomlibrary.com/dicom/

Output
stl (a shell of triangles for 3D printing) see previous post
gcode - an ascii printing description format to control a CNC machine

Action List

Follow up email for "the Client"

Download a Stanford 3D file of each available format
- done, i downloaded the partial brain
http://graphics.stanford.edu/data/voldata/

can i ?
Access it 3D with Code
Display it using direct 3D with navigation
Manipulate it in Direct 3D

Gantt Chart of tasks - can only be done after a WBS work breakdown structure
(a list of tasks we need to do)
(gantt chart is sure to be updated each week)

Draft Requirements Specification
modelling -  boolean operations are needed GUI design -
we will need a HUD with useful info ie fps, triangle count, voxel count
we will know what we need to see as we go
(this could be useful to inject supporting structures)
what (libraries) can we lean on ?


Final Requirements spec due on Friday week.

List of New terms:

CT scan (Computer Tomography)

CNC
wikipedia:
A CNC router is a computer-controlled cutting machine related to the hand held router used for cutting various hard materials, such as wood, composites, aluminium, steel, plastics, and foams. CNC stands for computer numerical control.


MRI scan Magenetic Resonance Image/Imagery
http://insideinsides.blogspot.com.au/
Houdini can convert MRI to 3D models for us and thus to Voxels or a shell
http://www.3dde.com/plugins_page.htm


possibly MRI data available here can be converted to voxels:
https://www.nlm.nih.gov/research/visibl

GCode - an output format for printing.

Shell (triangle model ("hollow"))

Ray Marching- as i understand it - 'probing' a bunch of cubes with rays in
order to define / approximate a volume surface

Thursday, August 11, 2016

Modeling with Volumes in Houdini

in Houdini there are a number of methods of working with voxels or volumetric formats
(there a few different types)

These could be features we wish to emulate with our development.
Users can quickly convert

* convert any 3D geometry into a voxel format,
though we can be only concerned with converting triangles to begin with

basic BG material on voxels
https://youtu.be/fGMu5kDNKU8

my high level understanding of options provided:

users have options to specify sampling divisions - the geometry is sampled with a user defined amount of rays to determine where the surface lies in the voxel array. The higher the ray samples - the more accurate the resulting voxel grid will be. This seems similar to changing the number of subdivisions in an octree.

I think the bounding box and centroid must be calculated first in order for rays to be fired toward the centroid. At some point it must be determined if the ray vector is inside the solid object or not possibly by using the direction of the surface normal as a guide.

There is an option for the user to offset the surface of the resulting "voxel grid" in the direction of the original surface's normals. (From a high level or artistic point of view (Houdini is aimed at creative but tech savvy people) this will push the resulting volume closer to the surfaces of the original geometry - useful if the ray sample size is needed to be kept low)

Houdini Help files on "isoffset node"
"The IsoOffset operation builds an implicit function given the input geometry. It then uses the implicit function to create a shell at a fixed offset from the original surface."



people talk about the benefits of modeling with voxels over polygons or triangles - it seems Boolean operations of polygonal solids are not easy - but they are with volumes. Volumes can be more easily modified in powerful procedural ways - basically with mathematics - ie a noise function - to generate complex results that would be difficult with traditional polygonal modeling techniques.

Multiplying certain values of a voxel 'grid' with an implicit noise function can add or remove voxels within the volume, for instance it has been used with computer graphics (CG) to gererate vein like structures present with 2 different materials interacting with each other - ie veins of gold running through quartz or veins of jelly running through icecream for example. The complex shapes present in atmosphereics like clouds in CG are created with such techniques - adding and subtracting and multiplying noise functions with volumetric data.
see papers on the A-Team movie's clouds

Modeling with volumes takes advantages of all the operation possible with voxels with the ability to convert or approximate back and forth at anytime between volumetric file formats and polyonal or triangular file formats. Artists can then work in a way unbounded compared to old-school polyonal only type techniques ie manual vertex manipulation and subdivision algorithms ie Catmul-Clarke, open Subdiv from Pixar.

Other voxel operations we might try to emulate with a voxel modeling program:

Boolean operations
Add / union
Subtract / difference
Intersect

Mathematical functions : Multiply / Divide with other functions

There are a suite of other common modelling tools that can be considered useful for modeling in general such as found in Houdini and Maya -some of which are beyond the scope of what we are interested but worth thinking about:

* creating 1,2,3D arrays of objects
* transformation tools - translate, rotate, scale, skew
* peak/push tools - pushing points along their normals - basically making them expand / contract in 3D
* copying objects (stamping) onto the point positions of another object
* stamping an object onto a point (of another object possibly) and auto aligning that object to the normal of that point (in Houdini known as a 'rivet')
* creation of nulls (visible as a 3D 'cross' or 'plus') simply to use as a guide or marker in Euclidean space
* creation of parametric primitives to use as guides or modeling templates - ie circles, squares, torus, spheres, cubes arbitrary curves etc etc.
* extraction of a subset of an object as a new separate shape
*mirroring of a object
* duplication of an object with an added transform
* locking of an object so it cannot be moved accidentally













Wednesday, August 10, 2016

3D Printing Research

File formats commonly used for 3D Printing

.stl

wikipedia: 
STL files describe only the surface geometry of a three-dimensional object without any representation of color.

stl files are common
http://3dprintingforbeginners.com/3d-model-reposit
https://all3dp.com/best-sites-free-stl-files-3d-printi
http://3dfilemarket.com/ (no reg required)

Article on the stl file format
https://all3dp.com/what-is-stl-file-format-extension-3d-printing/

Summary here:

its the most common format in 3D printing
it uses a series of linked triangles to create the surface model of 3D geom

Obviously - the more detailed the model, the more triangles required and the larger the resulting stl file

each triangle is described by 3 vertices and a Normal (to define the facing direction) perindicular to the triangle face.

"
An STL file provides a complete listing of the x, y and z coordinates of these corners and perpendiculars."


STL is just a container for a model - it doesnt guarantee a virtual object will be printable

format:
An ASCII STL file begins with the line
solid name 
 
each triangle is then specified with
facet normal ni nj nk
    outer loop
        vertex v1x v1y v1z
        vertex v2x v2y v2z
        vertex v3x v3y v3z
    endloop
endfacet

where each n or v is a floating-point number in sign-mantissa-"e"-sign-exponent format, e.g., "2.648000e-002" (noting that each v must be positive). The file concludes with

endsolid name


9 Important printing concepts:

main benefits for STL:
simplicity
even complex designs can be reduced down to a series of triangles
the format is human readable

Drawbacks:
surface info only - no colour, texture, substance, sub-structure info is kept in a STL file
no metadata - no securtiy features

A stl file has to opened in a dedicated slicer ie Cura for the mac
https://ultimaker.com/en/products/cura-software

- a piece of 3D software to convert the triangles
into printing instructions for the the printer.

the slicer chops up your STL file into hundredds or thousands of flat horizontal layers (slices) based on the settings you choose and calculates how much material/ filament your 3D printer will need to extrude and calculate how long it will take to do it





Octree research

Octrees

wikipedia:
An octree is a tree data structure in which each internal node has exactly eight children. Octrees are most often used to partition a three dimensional space by recursively subdividing it into eight octants. Octrees are the three-dimensional analog of quadtrees.

Point based Octree vs MX (matrix) based Octree

PR based - a point in the center of the voxel indicates the shared corner of all 8 of the new cubes upon subdivision.

A new cubes edge will run from the boundaries of the original cube to the point

A MX based Octree also has a point but it is placed in the centre of the new Voxel after subdivision

Pioneerin reseach into Octrees (1980's)
Octree Encoding: A New Technique for the Representation, Manipulation and Display of Arbitrary 3-D Objects by Computer"

c++ implemetation of Octrees
http://nomis80.org/code/octree.html

Papers
Color quantization using Octrees

other Thoughts:

new links
http://www.sidefx.com/

Meetings - how often

We already have some Octree experience
We have some open GL experievne
We have some Houdini expereince (COTS Voxel modeling)

With houdini we can quickly and easily visualise our code using Houdinis tools
how can it be used to best effect ?
(there is a learning curve to take into account of course)

Prototyping tools in houdini ?
producing renderings of our concepts in Houdini .

Shared Documentation

Performance benchmarking


Version Control

Team Skills Matrix
Jacob - 3D programming
Linnet - Maya
Daniel Maya/Houdini / some programming
Documentation - we are all expereinced by now. :D

Options to achieve the outcomes of the brief
* develop Voxel visualisation from scratch
* make tools that intergrate into Houdini or Maya
* we want to out put a format suitable for printing - therefore what printing formats are already out there ?






openGL progress

I have managed to get openGL and GLUT / freeglut libraries working in *Netbeans under Linux (ubuntu)


as well as under
*Windows 7 with MS Visual Studio.

next to include tetGen and open VDB libraries, and get some mouse interaction
happening witht he viewing pane.

looks like lots of people are struggling with code "gluLookAt" and "gluPerspective"
https://www.youtube.com/watch?v=33Mz2jt4dH8

Sunday, August 7, 2016

open VDB notes

lead developer is ken museth - ken.museth@dreamworks.com

open VDB is a open source c++ library
it boasts a novel hierarchical data structure


developers mention since it is a tree structure anyway
- not external trees need to made for iteraction over voxels

Open VDB includes a suite of tools for manipulating voxels in the custom format
current release is 3.1.0

it is adopted by many other COTS software
the file format has option compression
vdb files have a 'delayed load' operation

voxel:
a voxel smallest addressable unit/space in the vdb volume file format

tiles: (unique to VDB)
represent large constant regions

Active State:
each voxel has a binary state (1bit boolean)
the significance of the bit is application independent
the underlying datastructure

"unbounded" - almost infinite index space.

its fast - it runs in constant time O(1)
its 'fast' with random access and sequential access

compact - small memory footprint
has fast IO

has dynamic topolgy

feature a set of conversion tools to convert from or to polygons
 

voxel: smallest addressable unit of volumetric space

Each voxel has a binary state (1bit boolean)
its fast - it runs in constant time O(1)
its 'fast' with random access and sequential access

Inspired by a B+ tree
its a "very" shallow tree
its a fixed depth tree of four
the root node is the only node that is dynamic

it was inspired by a "B+ tree"
its a "very" shallow tree
the path from root to leaf is always 4

it has a built in iteration tree (BVH - bouding Volume Hierarchy)


its a fixed depth tree of four

the root node is the only node that is dynamic

the "fan-out" factor is high in the beginning and then finite
(we want to cover a large index base)
Screen shot1

voxel iterator visits the values of the voxels
voxel iterator is internally composed of node iterators

in VDB voxels reside at the leaf node level
tiles - higher up in the hierarchy - represent a section of constant value
memory hierarchy

RAM is very slow (compared to CPU cahche) - but its dynamic
how to program for this structure - using cache oblivious algroithms

example shows the vdb as a level-set a distance field

bit-masks play a central role in vdb
a bitmask is the simplest way to set a state
no where in the data structure are we storing coordinates as we do for vertices of a polygon

voxels are implictly encoded in the bitstring
cheap bitwise operations are used ie shifting
you can think of the bits as storing the topology - not coordinates




Friday, August 5, 2016

CV for your consideration

Name       Daniel Phillis
FAN         phil0411
SID          2110633

Email       daniel.phillis@gmail.com
Mobile     +61 (0) 401 094 679

IMDB       http://www.imdb.com/name/nm1442436

ABOUT ME

     I am a Computer Science Student nearing the finish line of my B.CS. I'm a mature age student, with passion and past professional experience (over 10 years) in 3D modelling, animation, motion capture and Special Effexts (VFX) for Television and Feature Film.
     I hope to return the the VFX industry with my new programming skills and appreciation for the design and low-level nuts and bolts that drive the amazing high end software that is used in industry.
Due to the unstable nature of the industry, I am also looking to research Data Visualition techniques in union with VR and other creative interpretations of informatics in 3D.


     My degree has been quite successful with a Chancellors Award of Commendation for my 1st year. Last year I dropped to a part time load after the onslaught of new baby twins in the family :D
Throughout the last few years I have been looking forward to some exposure and time dedicated to researching and programming some 3D graphics of some sort.


EMPLOYMENT

2016

Feb - Jun (Sem1)
Student Drop in Help Assistant, for Flinders University
Private tutoring in Autodesk's Maya for Digital Media Students.

2015

Jun - Dec
3D Modeling, texturing and Animation / procedural animation
for the Royal Adelaide Hospital - a projected installation 

3D rendering for Orbit VFX,
Virtual NewsRoom Set for ABC TV's show "The Rake"

2011 Jun – October
DrD STUDIOS
“Happy Feet 2”
VFX TD

Feb – May

KANUKA STUDIOS, VFX Animator
“ABC Stout” TV Commercial (Singapore) in
conjunction with "Emerald City." (Sydney)

FLIP Fluid Sims, Lighting assistant

2010

RSP (Rising Sun Pictures)
Houdini VFX TD.

Harry Potter and the Deathly Hallows Pt 1 (Feature Film)
Smoke and Particle Simulation for Wand FX
LIQUID ANIMATION, Senior Lighter + Compositor
Liquid Animation’s “Polly Pocket” Webisode Series.
(3DSMax, AfterFX)

July – Sept

CUTTING EDGE STUDIOSHoudini VFX Animator
“Beneath Hill 60” (Feature Film)
Bullet impact RnD + Volumetric explosion RnD

“Harpic” TV Commercial

Shading and lighting in Houdini.
“Needle” (Feature Film)
Camera matching and Particle animation of electrical sparks.
“Krunchox” TVC
Camera matching and tracking with PFTrack.

“Champix” TVC

FX RnD for Champix anti-smoking campaign.Misc. general Stereoscopic Research for setting up and rendering 3D content.

2009

FX Animator at Ettamogah Entertainment, Melbourne.TV Series ‘L’il Larrikins’
Maya Embedded Language (MEL) scripted system for particle FX, dust emission from characters feet., Camera Projections, Houdini particle animation.

2008

LIQUID ANIMATION
miscellaneous modeling, texturing and compositing for TVC’s:
“Suzuki SUV-a-Saurus” – see awards., “Fristi” TV Commercial (Vietnam)
KANUKA STUDIOS
“DayBreakers” (Feature Film)
Houdini modeling, Animation, Camera Matching, 3D Roto, 2D Roto in Shake

IMDB Credit
http://www.imdb.com/title/tt0433362/fullcredits#cast
Miscellaneous modeling, animation, texturing and compositing for TVC’s:
“The Butterfly Effect” (Music Video)
Animation / compositing in Houdini / keying in Shake and Houdini

Mercedes GLK
 web animation featured on SideFX’s 2008 showreel.

modeling / Texturing in Houdini

AWARDS

2009

Suzuki SUV-A-SAURUS” (TV Commercial, w/ Liquid Animation)
TVC nominated for Best Animation in Sydney’s Animation and Effects Festival.
“Your Vote Means Something” (TVC, Liquid Animation)
2009 Gold & Silver B.A.D. Award recipient (motion graphics & 3D Animation).

Wednesday, August 3, 2016

Top 3 Topic Choices and Justification

Choice 1 Voxel Modeling Software

Justification:

* I have some background experience in using voxels form an artistic point of view for fluid simulation in the entertainment industry, and so have some hi-level understanding of voxels.

* I am well versed in SideFX's Houdini Software which provides low-level tools analagous to programming such as loops and decision tests/'switches'.
 This software is fast at prototyping 3D ideas and creating visualisations without the need for formal programming, ie providing graphics of a voxel system or calculating a total volume of a group of voxels.




Figure A. Example of a fast visualisation from a generic model (Stanford Bunny originally provided in ply format, converted to both Alias Obj format and the SideFX native .bgeo format). System set up took aprox. 5 mins to create and procedurally create cubic geometry, and approx 2 mins to generate a full size high quality render.

 * This experience has given me a desire to understand the underlying data structures for voxel modeling and get some 3D coding experience.

* I have begun some voxel-related research.
see post on OpenVDB c++ library in this blog.

* I have done some introductory tutorials in openGL in the past
and am confident to pick this up again for developing

* GUI design has always been an interesting topic for me. I received a Dn for Interactive Computer Systems last year, this is an area of research I will continue into the future.

Choice 2 Tetra Geometry w/ TetGen
Experience with programming 3D geometric operations is highly desirable for me. So far I have installed Tetra out of curiosity and generated some data from the example geometry provided.


Choice 3 Farming Telemetry, data Viz.
Telemetry in general appears to be a popular and important field with ties to environmental science.
802.11xx is very interesting I am interested in procedural graphics required for displaying data and the UI Design to make is as user friendly as possible,

3D Printing + related Software

list of open source software for printing at :
http://reprap.org/wiki/Useful_Software_Packages

open source:

Slicer
http://slic3r.org/

Replicator
http://replicat.org/



list of generic 3D software
http://www.3ders.org/3d-software/3d-software-list.html

open source:
http://meshlab.sourceforge.net/

Collection of links

Collection of links (approx alphabetical)

Autodesk - developers of Maya - COTS software capable of manipulating voxels
www.autodesk.com

BVH Bounding Volume Hierarchy paper

http://dspace.library.uu.nl/bitstream/handle/1874/892/full.pdf?sequence=1

Circumcenter (related to Tetgen)

the center of a circle that the triangle in question circumscribes
can also be found by intersecting 3 lines of bisection
(from edge mid point to opposite triangle point)


Cura - 3D printing Software
https://ultimaker.com/en/products/cura-software

FreeGLUT
http://freeglut.sourceforge.net
http://www.transmissionzero.co.uk/software/freeglut-devel/


freeGLUT for linux:
https://launchpad.net/ubuntu/+source/freeglut/2.8.1-2

GLEW
http://glew.sourceforge.net

GLFW
alternative to GLUT
http://www.glfw.org/

GL Graphics Programming Examples
http://www.alecjacobson.com/

openGL interactive camera for MSVS
https://www.youtube.com/watch?v=v6RZRPo0O3k

Julia Language

http://julialang.org/

MEDIT .mesh visualization
broken link: http://www.ann.jussieu.fr/~frey/logiciels.

Mesh partitioning paper "inside/outside mesh partitioning with winding numbers..."
http://igl.ethz.ch/projects/winding-number/robust-inside-outside-segmentation-using-generalized-winding-numbers-siggraph-2013-jacobson-et-al.pdf

MIT ComputerGraphics Course

http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-837-computer-graphics-fall-2012/index.htm

OpenGl

Installing openGL with MS Visual Studio
http://in2gpu.com/2014/10/15/setting-up-opengl-with-visual-studio/

openGL code examples
https://www.opengl.org/archives/resources/code/samples/simple/

openGL graphics pipeline Overview video
https://youtu.be/98SSgxDe-5A


openGL shader compliation
https://www.opengl.org/wiki/Shader_Compilation

Open VDB

http://www.openvdb.org/download/

installing open VDB on centOS

https://www.youtube.com/watch?v=aQFzVv_2TTg

Scratchapixel general 3D programming tutorials

1. including intro to raytracing
http://www.scratchapixel.com/lessons/3d-basic-rendering/introduction-to-ray-tracing

Side FX - developers of Houdini (see also Autodesk - developers of Maya)
www.sidefx.com

Siggraph openVDB 2015 slideshows
http://www.openvdb.org/download/openvdb_introduction_2015.pdf
http://www.openvdb.org/download/openvdb_production_2015.pdf

STL
free stl software listing
http://www.3ders.org/3d-software/3d-software-list.html
  • MeshLab - Open source software for processing and editing of unstructured 3D triangular meshesIt also has an extremely fast slide function.
  • Google SketchUp plugin - A plugin script to import and export STL files for Google SketchUpSupports both binary and ASCII import and export.
  • STL-viewer - Display and manipulate the contents of stereolithography or STL file.
  • Netfabb Studio - a free Windows program for 3D printing to view, editanalyze and repair STL files.
 
Telemetry, Definition of

http://www.sealtag.org/What%20Is%20Telemetry.html

Tetgen

http://wias-berlin.de/software/tetgen/

TetView Mesh Visalisation Software
https://people.sc.fsu.edu/~jburkardt/examples/tetview/tetview.html

alternate tetgen mesh visualizationhttp://www.paraview.org

Tomographical Light Field Synthesis !
http://www.cs.ubc.ca/labs/imager/tr/2011/Wetzstein_SIG2011_Layered3D/

Virtual Box

https://www.virtualbox.org/

Voxel Defn - voxel comes from 'volmetric' + 'pixel'

smallet unit in a (hierarchical) Volume

WebGl

see Shader Toy for a nifty example of webGL
https://www.shadertoy.com/

Yum  -linux (redHat) package installation management

sudo apt-get install yum