# data[].attributes.body
Your students love Dungeons and Dragons or other board games? How about designing your own dice.

# data[].attributes.body
and colour using Procreate. Export as USDZ to view in Augmented Reality

# data[].attributes.headline
Use the Surfboard model inside Procreate to create an indiginous design.

# data[].attributes.subject
Use the Surfboard model inside Procreate to create an indiginous design.

# data[].attributes.body
Looking at brushes, alpha lock and insert external images.

# data[].attributes.body
Import the USDZ shield below and design your own super her shield. Create a justification for the materials you used and the thinking behind the design.

# data[].attributes.headline
Grab the 3D model here and open in Procreate:

# data[].attributes.subject
Grab the 3D model here and open in Procreate:

# data[].attributes.body
Grab this 3D file for colouring or layering existing art work on the front, back.

# data[].attributes.body
Find the Blank Dice in the 3D file column

# data[].attributes.attachment_link.title
Creating a 3D Dice Design with procreate

# data[].attributes.body
Your students love Dungeons and Dragons or other board games? How about designing your own dice.

# data[].attributes.attachment_link.title
Creating information spheres with Reality Composer

# data[].attributes.headline
Create your own geometric 3D models with this FREE website!

# data[].attributes.subject
Create your own geometric 3D models with this FREE website!

# data[].attributes.body
Remember to export as obj format for Procreate!

# data[].attributes.attachment_link.readable_text
Overview

The aim of this app is to let you interact with a range of parametric shape generation algorithms, using the adjacent sliders to adjust parameters and see their effects in real-time. As a starting point, use the examples menu as a basis and the 'Randomize' button () to explore different shapes.

The shape parameter sliders are specific to each algorithm whereas the shell parameters allow you to stretch and offset the generated surface into shell-like forms. It should be fast enough on most modern computers and tablets, but you can turn off real-time updating if you need to.

Background

This is another HTML5 version of one of my Java applets. This one grew out of some experiments using spherical harmonics as a way of doing real-time diffuse lighting and shading simulations. As I tend to only really understand stuff when I can see it, I did a quick viewer in Processing a while ago to help make sure I was getting all the calculations correct.

Some of the visualisations and shapes started to look reasonably interesting, so I polished it up a bit and then did this WebGL version. As the basic infrastructure was already there, it seemed logical to add in some other shape types as well.

Spherical Harmonics are really interesting as they can be used to reduce what is usually an inordinately expensive integration of the diffuse lighting environment into a series of much faster dot products. This is done by approximating the diffuse lighting environment, given as a complex luminous distribution over an intergrating sphere, with a matrix of Spherical Harmonics coefficients.

Using this instead of a standard diffuse surface reflection model can make very detailed and realistic diffuse lighting effects possible in close to real-time. Robin Green explains it better and in much more detail in Spherical Harmonic Lighting: The Gritty Details.

Development

This viewer was probably most inspired by Paul Bourke's page on Spherical Harmonics, as well as the many other supershapes viewers written by others. As a lot of my visualisations of building performance involve overlaying analysis data on coloured grids within a 3D model, I figured it was worth spending some time on the generation and animation of them as a way of developing and testing my own grid libraries.

Interesting Features

I guess the most interesting features of this app are as follows:

Animating the shape transitions entirely on the GPU using interpolating shaders,

Developing SVG-based data sliders that scale and interact reasonably well across desktop and mobile,

Doing a fair bit of work with the parameters of each shape so that the random generation is a bit smarter,

Getting my silhouette calculations to work fast enough in Javascript, and

Implementing an app-wide Undo/Redo system.

© Dr. Andrew J. Marsh, 2014.
View Manipulation

You can interactively adjust the 3D view of the model using a mouse, pen or stylus, or by touch on a tablet or phone. You can also use the items in the 3D View Settings popup.

NOTE: You can use the Shift and Ctrl/Meta keys to adjust the increment of each scroll event or key press.

Keyboard Modifiers

The Shift and Ctrl/Meta keys are used pretty extensively to modify interactive data entry. This applies to all increment buttons, scroll wheel motion, slider controls and input elements.

Shift Key:

Increases input to larger values, usually by ten times or significantly larger increments such as 1 month for dates and 1 hour for times.

Ctrl or Meta Key:

Decreases input to smaller values, usually by one tenth or the smallest reasonable increment such as 1 day for dates or 1 minute for times.

NOTE: You can use the scroll wheel to edit a data value when hovering over any slider, numeric input or even table rows that indicate their editibility.

# data[].attributes.attachment_link.description
Overview The aim of this app is to let you interact with a range of parametric shape generation algorithms, using the adjacent sliders to adjust parameters and see their effects in real-time. As a starting point, use the examples menu as a basis and the 'Randomize' button () to explore different shapes.