Download Version 2.0: jj_superspherize.pl

Introduction

JJ_Superspherize is a variant of the old Lightwave spherize tool and can act as a rudimentary volume deformer. At a basic level it will take an object with volume and 'inflate' it into a sphere. Unlike my jj_wrap tool, the points 'collide' with an implicit sphere and so are perfectly smooth (with jj_wrap if you collide points with a sphere then the collision points will reflect the faceting in the collision sphere's polygons). The inflated object uses its own bounding box centre as the origin for the inflation and let's the user specify a radius. modo 10x users should continue to use version 1.0 available at the bottom of this page. Here are the bells and whistles:

  • Updated to work with modo 201
  • You can control the strength of the spherize effect to simply attenuate the effect e.g. to slightly round something.
  • You can use it on whole objects or any selection type - point, poly, edge. Works across layers.
  • You can offset the 'centre' of the virtual sphere by using the centre of a background object.
  • You can use either the background object's centre or it's 'radius' or both to help visualise the spherize effect.
  • By default the projection of all points is towards the centre of the virtual sphere, but you can choose to project the points onto the sphere using any of the axis-aligned projections or point normals
Julian Johnson
julian@exch.demon.co.uk

Classic Spherize
Does what it says on the tin. It takes the centre of the foreground object or selection and 'inflates' from there. This mode is the default mode when you hit apply and the background options are turned off.

Spherize With Attenuation
By using the 'strength' setting you can adjust the amount the object is spherized..

Spherize Selections
You can spherize specific selections. Here, the bounding box centre around the selection will be used. It's probably only sensible to use this option with selections that have a bounding volume. 2D inflations will work e.g. you can create a 'circle' from random points but I'm not sure how useful that is.

Spherize Selections 2
..and then layer on other spherize selections to create bulging effects on selections by increasing the radius size slightly.

Offsetting the Sphere Centre
By using the centre of a background object you can 'force' the virtual sphere to exist outside of the volume of your selection/object. This will cause the projection to travel towards the centre of that sphere..

This mode is accessed by turning bgcentre on and with bgradius off.


Offsetting the Sphere Centre 2
Here, you can see what's happening. The bounding box centre is used to create a virtual sphere away from the geometry to be spherized. The object is projected towards the centre of the virtual sphere. You can use any bg object you like including a single vertex. The radius setting is taken from the setting you specify. It's often helpful to use a sphere as your bg object just so you can 'visualise' the effect.

Offsetting the Sphere Centre 3
If you adjust the strength setting the curvature of the projected geometry and the distance it travels will be adjusted accordingly.

Offsetting the Sphere AND Using the Bounding Box Radius
This one is tricky to explain but easy to visualise. I scripted this so that you could directly use a sphere as your bg object and the projection would always conform to both the centre and the radius of that sphere - that way you can see exactly what you're doing. This method derives both the centre of the sphere and the radius from whatever you have in your bg layer. If it's a sphere then you get exactly that - a sphere with the radius you 'draw' and the position you place it. If you use a box or rectangle (or any other geometry) the centre is derived from the bounding box centre and the radius is the radius of the largest sphere that will sit inside the bounding box.

This mode is accessed by turning bgcentre on and with bgradius on.


..Cont.
...here I've placed the background sphere much closer to the projection geometry and you can see how this affects the results.


..Cont.
By adjusting the strength of that sort of projection you can get different surface curvatures..


Axial Projection
In all of the preceding examples the projection has been towards the sphere centre. There is another mode you can use which will project along the major axes or along point normals. If we use the same example as the one immediately above you can see the difference. This one is projected along Z.

This mode is accessed by using the project drop down menu.


How to Install JJ_Superspherize with the Form



There are currently two components to jj_superspherize - the script itself, and a configuration file to set up the form. Using the inbuilt arguments you can use the script from a key without having to install the form if you want.

jj_superspherize.pl - the perl script itself
jj_superspherize.cfg - the file that creates the form.


Option 1 (Modo 2 only)
On both a PC and Mac you have a default location for Application Data. Inside the application data directory there is a Luxology directory which usually hosts your config/preference files and licence data. Within that directory modo provides the ultra useful Configs and Scripts directories. Any scripts and configs you place in here will be automatically available to you. This has to be the preferred option.

Option 2
The way the form is configured at the moment means that if you place it directly into your modo resrc folder (on OSX you'll need to open the modo package contents and place it in the Resources folder), the form will become available to you next time you launch the application. This relies on modo's default behaviour but can result in a very cluttered resrc directory. If you then place the script itself in the same directory as modo.app/modo.exe it will be available to the form without any further alterations being required.

Option 3
Alternatively, you can create your own location to store both the script and config file but will need to adjust the path locations in the jj_superspherize.cfg file. The benefit of this approach is that you have control over where you keep your external files and they won't get overwritten should you update modo.

It doesn't really matter where you put them so long as you make sure you have correct paths in the relevant files.

Once you've chosen a location for both files then you need to open up the jj_superspherize.cfg file in a text editor and put in the relevant path to the actual script using search and replace so that every time the script is called it has the correct path. Here's an example of how a single entry should look (but, remember, every entry for the script should be changed to the correct path using a single search and replace).

On a Mac:

<list type="Control" val="cmd @{/Users/julianjo/Desktop/current pbs/jj_superspherize.pl} user">
<atom type="Label">jj_superspherize</atom>
<atom type="Hash">54409416674:control</atom>
</list>

On a PC:

<list type="Control" val="cmd @{C:\Directory with Spaces\subdirectory\jj_superspherize.pl} user">
<atom type="Label">jj_superspherize</atom>
<atom type="Hash">54409416674:control</atom>
</list>


If the path has a space in it then the script needs to enclosed in curly brackets e.g.

@{/Users/julianjo/folder with spaces/jj_superspherize.pl}

It's easy to mistakenly delete a quote mark or a space, so make sure you find and replace just the path.

Once you've configured the path in the config file you're nearly ready to roll. Fire up modo, go to File:Config Import and import the jj_superspherize.cfg file you've just amended. This tells modo to load that file (i.e. the menu for Loop Hop), every time you launch modo.

For ease of access to the form simply assign the form to a key.

When The Script Runs I Get Bombarded With an Error Message (modo 10x only)

The 'General Failure' message is a known issue with modo and can be easily fixed.



Luxology themselves have released a patch for this error message on Vertex Monkey:

http://www.vertexmonkey.com/scripts_bugfix.php

Alternatively, you can just set the 'In the future' drop down to let modo know you don't want to see this message again. The error sounds dramatic but isn't, it's totally inconsequential. Luxology's bugfix script does simply that - it turns off that specific error message.


Why do I get a dialogue box asking me to 'Confirm' (modo 10x only)


There is currently a bug in modo when processing a large number of points/polys via scripts. This dialogue box prevents modo from crashing during this process.



I Hate The Way the Form is a Popover and Vanishes if I Move My Mouse Too Much

To get a permanent window with the spherize form as above:

1. Go to Layout:New Window
2. Set the window to Form View by LMB clicking on the right hand arrow.
3. RMB on the Form View header and select JJ spherize. Now you have a window.

Known Issues (modo 10x only)

1. When you first use the form, the values for each of the fields don't exist and the form looks corrupted. You need to run the script once so that modo is aware of the existence of the form fields etc. You can do this by using F6 to navigate to the script and firing it off once.


Versions

Version 2.0:
jj_superspherize.pl
-Updated for compatibility with modo 201

Version 1.0:
jj_superspherize.pl
- Original version 08.12.2005