Coral Towers
Monday, August 30th, 2010New attachment support in my favela-generating code, plus a Romanesque model set, and I’ve got a collaboration by de Chirico and Dr. Seuss.
New attachment support in my favela-generating code, plus a Romanesque model set, and I’ve got a collaboration by de Chirico and Dr. Seuss.
Made with my foetal citybuilder script, rendered in with mental ray using the misss_physical shader.
Voxelizer 1.0 is a script written in Python for Maya. It builds an array of animated cubes in the shape of selected target objects. It takes the color of the cubes from the texture and lighting of the object, and respects visibility and transparency. It also allows keyable voxel and gap sizes, by checking the sizes of optional control objects.
Download files here:
Voxelizer1.0.py
Voxelizer1.0_test.ma (Maya 2010)
Instructions and code follow:
(more…)
Separate controls for the size of the voxel grid and the size of the cubes.
The code now respects alpha, and can vary the cube size.
Returning to the scene of the cubical crime…
I’ve found a way to apply colors to my mesh-voxelizing script, by sampling the color of the source model with Maya’s polyGeoSampler command. Incredibly, polyGeoSampler isn’t queryable. It’s used to bake the color of a mesh’s textures to the vertices of the mesh. So once you’ve done that, you can query *that* color with the polyNormalPerVertex command.
This technique only gives the expected result as long as your voxels are larger than your polys. Isn’t there any way to return the color of a texture at a given point on a poly?
A variety of shapes growing upward, ever upward, and occasionally outward, supported from below, except for the ground floor, which is supported by pure force of will.
Simple proof of concept: A Wii Nunchuk controller connected to Maya via an Arduino, which sends the Nunchuk’s accelerometer data through the serial port. Maya uses PySerial to open the serial port, reads the data, and converts it to an attribute value.
You can see that the accelerometer has quite a lot of “ring” from sharp shocks.
I based this test on Tod Kurt’s BlinkMChuck code. The Nunchuk is connected to the Arduino with this connector from Todbot. Here’s an archive containing the test files: WiiChukPOC.zip
And here’s a link to the setup required to configure pySerial: http://zoomy.net/2009/07/26/basic-arduino-to-maya-communication/
Code follows.
(more…)
With the help of the patient people in the python_inside_maya forum, I’ve improved the Voxelize Meshes Script, mostly by more efficient use of the allIntersections method.
Instead of checking each point on the grid to see whether it’s inside one of the target meshes, this version shoots rays through the meshes along each axis and puts blocks at the intersections. This makes it approximately a zillion times faster, though I’m sure it could still be improved.
Update: Richard Kazuo from the p_i_m forum has excised lingering traces of pymel from my script, I’ve updated the code below with his improved version. It should now run with Maya’s default Python installation. Thanks Richard!
Update 2: Here’s the even-more-efficient voxelize_meshes_v.3.py … I’m putting this to bed now.
Maya Python code:
(more…)
This script will voxelize selected meshes over the frame range of the timeline.
It is currently rather slow.
Pymel code:
(more…)
This script will voxelize an animated mesh. It creates an array of cubes which fills the bounding box of the mesh’s motion through its animated range, and animates the visibility of each cube over the frame range based on its proximity to the mesh.
It’s quite slow, and would be faster if it used my octree, but it’s a start.
Written in Python with PyMEL for Maya.
Code follows:
(more…)
Please find below an expanding object-oriented octree implemented in Python with PyMEL for Maya. In this configuration, the octree functions as a space-partitioning scheme used to quickly find intersections between the bounding boxes of objects in scenes with many objects. It is not perfect but it does the job.
Usage and code follows.
(more…)
Not to scale.
This donut was grown on the banks of the Upper Avon, and is popularly known as Shakespeare’s Donut. First described by Washington Irving, it was later the inspiration for the plan of the Globe Theater. Not coincidentally, a globe’s outer surface may be described by the transverse rotation of a sideways donut. However, this is not recommended.
How Globes Are Made, on Vimeo.
I found a sneaky bug in my overhang-detection code which was preventing altitude. Here are 10,000 blocks of altitude.