Christmas Tree Isosurface
Free
Summary A slight tweak to my code for the Twisted Drop, with a stretch and a Boolean merge with a cone to give a trunk and remove some of the weirdness inside the tree. Print Settings Printer: Eaglemoss Vector3 Rafts: Yes Supports: Yes Resolution: 0.2 mm Infill: 20% How I Designed This I started with some code I give my students to help them start 3D graphics projects. This helps them create models in Vertex and Index Buffers programmatically. I then grabbed the Marching Cubes function from here, and used it so that I could feed in an equation and get out a Vertex Buffer containing a given isosurface of that equation, display it and then spits out a basic obj file. My wife commented that the twisted drop looked a bit like a Christmas tree, so I slightly tweaked the code for it to produce this. The model is in a cubic region 2 Pi to a side and centred at the origin, with a grid of values 100 x 100 x 100 and the isosurface value is zero. This left a few odd bits of other geometry junk in that region, so when I pulled it in to Netfabb to stitch it all together I also removed all of them apart from this piece which I also slightly stretched. The geometry got a bit strung out and tortured on the inside of the "tree", so I Boolean added a plain cone to cover it up and act as a trunk Value Function This is the code which calculates the function / equation value for a given point in space float VBMarchCubes::function(Vector3 _pos) { _pos *= 2.0; float w = _pos.z *1.2f; float x = (_pos.x *cos(w) - _pos.y * sin(w))/(0.25*(_pos.z+XM_PI)), y = (_pos.x*sin(w)+_pos.y*cos(w)) /(0.25* (_pos.z + XM_PI)), z = _pos.z*cos(w)*cos(w); float x1 = _pos.x, y1 = _pos.y, z1 = _pos.z; return ((x + 1)*(x + 1) + (y + 1)*(y + 1) + (z - 2)*(z - 2) - XM_PIDIV2*XM_PIDIV2)*((x - 1)*(x - 1) + (y - 1)*(y - 1) + (z - 2)*(z - 2) - XM_PIDIV2*XM_PIDIV2) *((x - 1)*(x - 1) + (y + 1)*(y + 1) + (z - 1)*(z - 1) - XM_PIDIV2*XM_PIDIV2)*((x + 1)*(x + 1) + (y - 1)*(y - 1) + (z - 1)*(z - 1) - XM_PIDIV2*XM_PIDIV2) *((x + 1)*(x + 1) + (y + 1)*(y + 1) + (z + 1)*(z + 1) - XM_PIDIV2*XM_PIDIV2)*((x - 1)*(x - 1) + (y - 1)*(y - 1) + (z + 1)*(z + 1) - XM_PIDIV2*XM_PIDIV2) *((x1*x1 / (XM_PI*XM_PI) + y1*y1 / (XM_PI*XM_PI) + (z1 - 4)*(z1 - 4) / (XM_PIDIV4*XM_PIDIV4)) - 1); }

Loading comments...

Loading prints...

Christmas Tree Isosurface

likes
1 collection
Creative Commons Attribution

You can distribute, remix, adapt, and build upon the material in any medium or format, as long as attribution is given to the creator.

CC BY Licensed under CC BY
Files Included

1 downloadable file:

View 3D
Xmas_Tree.stl
STL Model
~1-5 MB
File size
Free download - login required
Downloaded: 58 times