G Code *(Geometric Code) aka RS-274
or G&N cdeo as descibed on you tubehttps://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 environmenthttps://www.youtube.com/watch?v=HxPjH4v5iEg
code Details : http://reprap.org/wiki/G-code
Wednesday, August 31, 2016
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).
Imported sequences are sorted by image number instead of filename and the tags are preserved when DICOM images are saved in TIFF format.
Tiff bitmapstacks can be "flattened " with a montage feature under the stacks menu
Chapter 12 of the Manual is on Volumes
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...
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.
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
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
(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
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
.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 ?
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 ?
Subscribe to:
Posts (Atom)


