Holocraft v2.5a is now available! Being that Holocraft does not feature an automatic updating system we're asking existing users to send us a request for a new download link. Send an email to us at firstname.lastname@example.org with "Holocraft Update" in the subject, from the email address you purchased Holocraft with (to confirm ownership), and we will make sure that you receive a new download link for the latest build ASAP.
Improved Texture Optics Mode
The Texture optics mode has seen some enhancements, improvements, and changes in the way it behaves to make it easier to produce interesting quality specular holograms with.
While specular hologram optics have stereoscopic depth on their own, situating their distribution to appear as though the model is illuminated by a light source above it augments the holographic effect as 3D surface shading is a depth cue unto itself to our depth perception. For instance, you can tell that an image of a sphere is not just a circle because of the way the brightness of its surface varies as though light were illuminating it.
The Thresh parameter now better controls the simulated virtual lighting that's used to modulate the texture as projected onto the 3D model. This can be imagined as controlling the "brightness" of both the virtual light source, up to a point, and then the ambient lighting illuminating the model. When the Thresh parameter is maxed out (the bottom of the slider's range) this will result in the texture having no virtual shading applied to it as this is fullbright illumination.
The Texture optics mode now also "jitters" the positions of resulting optics so that they no longer lie in a uniform grid. Holocraft generates optic positions by rasterizing the 3D model with the virtual shading and texture projected onto it, and the resulting image is then used to decide where to place optics. The Optics slider controls the resolution of this model rasterization image, which means increasing it will produce more optics as there are more pixels in the resulting image. Previously, optics were being placed at the centers of these rasterization pixels, which made lower Optics parameter values prone to producing optics that were conformed to the uniform pixel grid. v2.5a now randomly places each optic within its own pixel to mitigate the optic interference that could result from optics being placed in a uniform grid.
Improved Wireframe/Silhouette Optic Distribution
The Z-axis length of an edge (i.e. the distance between its vertices along the near-to-far axis) is now no longer considered when determining how many optics to place along it. Only the 2D positions of an edge's vertices, and their distance, affects the number of optics placed. While this will result in different behavior on the final hologram, it helps to eliminate extraneous optics that cause too much inter-optic interference, where too many optics in the hologram muddles and ruins their ability to produce a proper specular glint.
Optic density is also reduced on an edge depending on how horizontal its orientation is. This is to help further reduce interference between optics. Vertically oriented edges will have the densest optic placement while horizontal edges will have about half as many optics placed along them. Notice how in the image above, with v2.4a optics that overlap and glow brighter around the vertices of the icosphere model than in v2.5a indicate the potential for more optic interference, which will muddle and ruin the holographic effect for all of those optics that are involved.
Optics are now also placed along edges with these two modes in a more uniform manner, so that multiple edges forming one continuous edge will no longer have annoying gaps or discontinuities around vertices when they are the same length. This can be seen above in the comparison between v2.4a and v2.5a where the mesh comprises multiple colinear triangle edges along its form's edges, requiring a smarter optic placement approach like v2.5a now includes. The Optics slider no longer controls a continuous density but rather an integer number of optics for the 2D length of the edge based on how horizontally it is oriented.
Stereolithography/.STL Model Compatibility
Holocraft now properly detects when users attempt to load an ASCII STL model file. In earlier versions of Holocraft the selected model file to load would be passed directly to the binary STL model file parser. This would result in a crash if the STL was of the ASCII variant of the format.
To prevent these crashes a simple method for detecting when an STL model is ASCII was added, along with an error message explaining that ASCII models were unsupported. However, this method for detecting ASCII STL files allowed for the possibility of some binary STL model files being falsely detected as ASCII, and would not load them, even if they had worked previously.
v2.5a includes a more robust approach for distinguishing between binary and ASCII versions of the STL model file format, and should be able to load binary files that v2.4a couldn't, such as the "star.stl" and "hamiltonian.stl" example model files included with the build.
A few issues were discovered that could lead to a crash while regenerating optics. These have been resolved and crashes should be less likely, if not resolved entirely.
Optic Mode Descriptions
When an optics mode is selected from the Optics menu, a description of the mode and what the Thresh and Optics parameters control appears. This includes an explanation as to how optics are generated from the loaded model.
Optic and Glint Rendering
The appearance of optics and their holographic glints has been tweaked to better visualize the density of optics and their simulated behavior when illuminated at the chosen Light altitude angle.
Drawing optics using thinner lines, and glints using smaller and softer points, allows for better visualization of larger holograms that require a higher optic density than smaller holograms do.
Default Light Altitude
The Light altitude angle now defaults to 90 degrees. This is a light angle that corresponds to the direction of light illuminating optics arriving from directly above the hologram. The Light angle parameter's range has also been changed to allow angles from 90deg to 30deg.
The dialogs for saving optics out as either an SVG vector of their paths or Mach3 CNC G-code were always intended to be able to retain the last used parameters. This feature worked in earlier versions of Windows but fails to operate properly in more recent versions of Windows. This has been fixed. Parameters used when saving optics will now persist between saves and Holocraft sessions.
SVG Export Precision Fixes
The SVG optic saving dialog features three different path representations for optics to be saved as. The default mode, Cubic Bezier curves, is the optimal representation to use. However, if for whatever reason users wish to export optics as chains of line segments or chains of circular arcs these options are offered too. Unfortunately, a UI bug was causing the Precision parameter that these two modes use to determine how many segments or arcs to use for each optic was defaulting to a value of zero - which is not a usable value and would simply crash Holocraft.
The Precision parameter no longer defaults to a value of zero, and a value of zero can no longer be used. It will be forced to a value of 1 when generating the SVG paths for optics.
Optic Update Behavior
The rate that optics regenerate, while changing parameters or changing the model's position/orientation/scale in the 3D view, has been reduced. The optics also no longer refresh while rotating/moving/scaling the model, to maintain responsiveness and make it easier to tweak the model's pose with more complex holograms that include many optics.
The 3D view can still bog down if there are a lot of optics, even though they no longer re-generate while the model is being adjusted, just by the sheer volume of optics that are being drawn. This can be remedied by disabling "Show Optics" from the View menu. Optic glints will still be shown but should not slow down the 3D view's responsiveness anywhere near as much as drawing the optics themselves.
Removed Intersection Resolution
The Intersection Resolution option in the Optics menu has been removed, due to its ineffectiveness. It was always meant as an experimental feature that would find where optics intersect and split them up to reduce optic interference. Unfortunately, the compute involved whenever optics were being saved was prohibitively extensive, except with very simple holograms, and the result did not justify the time spent. Holograms generated with this option enabled did not see much benefit from it, so it has been removed entirely.
Holocraft is a very small side project that we never intended to be a complete specular hologram designing/generation suite with all of the bells and whistles. It started as a personal project intended for personal use. We offer it only because there has proven to be a number of people who are as interested in, and excited by, specular holograms and their creation, as we are - and who are willing to compensate us for being able to use it in spite of its rough alpha state.
Holocraft is offered as-is, and while we'd like to be able to spend more time on it, the income it generates simply doesn't justify the time expenditure that would be involved in enhancing it much further. However, we are always willing to hear everyone's ideas, so don't hesitate to let us know what you think. If we can squeeze something in with the time we have to do it, we'll see what we can do :)