Sunday, May 6, 2007

Preview: LinkRez, a necklace chain generator

(Custom-fit, plywood necklaces -- it's the new thing! This is done with alternating links, +/- 20 degrees)

(early path + orientation test, with an unsightly "break" between the front and back of the necklace, now corrected)

It's been a very long time since I've worked seriously on script-assisted necklace generating, although I did post a list of musings, way back in January, about the challenges a decent one would face. Necklace generating was actually something I thought about, back in November when I first started in SL, and LoopRez was actually a spin-off, a much "easier" project.

Johanna Hyacinth has done great work as well, with necklace generating, and it was partly from this shared interest that we met, long ago. Her earliest blog posts talk about the challenges, very similar to my list of musings. We chatted recently, and it seemed that unlike "other individuals," she was perfectly fine with my again taking up the challenge.

I think I'm making decent progress, and thought I'd share some of the initial results. There is a LOT of work to be done yet, but I'm pretty excited about how it's turning out.

First off -- this really is NOT a "Necklace Generator." I think the real challenge in creating beautiful jewelry is the skill of manipulating tiny prims into ornate and intricate centerpieces. However, I suspect a lot of the tedium in making a nicely fitted necklace has to do with positioning either simple or intricate "links" into a chain that fits about an Avatars neck, shoulders, and torso.

So, LinkRez will instead be a tool to assist in the tedious process of placing chain "links" with proper path and orientation, about an avatar's neck, and do it with maximal configurability. It's definitely a seriously difficult challenge, which is why, I suspect, there aren't more such aids available now. The amount of flexibility I plan to build into LinkRez makes me suspect that it will be a rather complex "power user" tool -- one that will require quite a bit of SL building experience (edit linked parts, precision placement and rotation of micro-prims, notecard editing).

Here's what I've (mostly) accomplished so far, and what more I hope to do:
  • highly configurable "shape" of the path
    • width
    • front drop
    • back drop
    • "sigmoidicity" of the front drop; i.e., how rapidly the "drop" occurs
    • should allow nearly perfect placement, customized to an individual avatar's shape, with only a minute or so of tweaking

  • allow for a front "round" vs. pointed "pendant" shape

  • flexibility in link orientation / rotation
    • "flat" against skin surface
    • "incrementing" angle, adding a definable rotation with each successive link; e.g., a progressive "chain link"
    • "alternating" angle, where each successive link alternatives by plus or minus a definable rotation
    • "random"; e.g., round beads on a string, which can rotate freely and randomly

  • allow for "links" that are multi-prim linked objects
Challenges in progress:
  • allow for "links" that are made up of tortured prims (which sometimes have very funky center points and rotations); PARTIALLY SOLVED, WOOT! (see the linked chains)

  • use of multiple different link types within a chain, each with a different size

  • notecard driven chain link program, allowing use of:
    • a single "link" type
    • a user-defined sequence of links
    • repeating "sets" of links; i.e., [A-B-C]-[A-B-C]-[A-B-C], etc.
    • allowing changing link orientation shapes throughout the necklace; i.e. [flat: A-B-C]-random:D-D-[flat: A-B-C]

(the "sizing aids" are visible here, as a dark blue ellipse edge on the chest, with another one not visible in back, as well as the transparent partial disc)

(this is my first success at using tortured prims, with position and rotation offset corrections required; it's also an example of "alternating" link rotation, alternating "+30" and "-30" degrees from the orientation that would be "flat")

The following are examples of shaping and configuration parameters:

Two views of varying "sigma" bendiness, for necklace chains that are otherwise the SAME size. Farthest left is "planar" (flat), and the subsequent ones come "forward" more, before diving down in front.

Four different link types. From left to right: "flat," "increment," "alternating," and "random"

Pendants: increasing "pointiness" for chains that will have a pendant hanging in front

I'm really rather excited by the progress, but there's a LOT more to do, before LinkRez is ready for release though.