I've been working on sculptie tutorials for awhile. I'm talking about really basic nitty-gritty nuts-n-bolts type stuff. I could have churned out a ton of sculptie tutorials since they appeared, but there where a few things that I wasn't comfortable with. But it looks like it's time to start writing. Unleash the beast!
I still don't have access to my wiki or any other space, so I'm dumping here in this manner. It sucks, but it's all I got right now.
Why in Texturing instead of Building? Because I will be focusing on using Photoshop for these tutorials. I'll be getting into blending modes, adjustment layers, and a bunch of other junk. There is even a trick for colour correction in Lab that I use that is good for sculptie manipulation. Nothing like the good ol' LL Curves technique. Wo0t!
--------
Ah, sculpties. They can be a beautiful thing.
What are they? What can they do? What are the limitations? Good questions, but they kind of jump the gun a bit. Asking higher level questions is one of the mistakes that I was making when it comes to understanding sculpties. I can understand sculpties at the higher levels, but things would go wrong when I got down to the nitty-gritty. This meant that there was something fundamental about sculptie implementation that I wasn't understanding. Not good.
Time to start over with some basics.
XYZ is a space as is RGB. The two can be mixed. There is an old tutorial called Raytracing in Photoshop that did some very cool things with this idea. RGB and XYZ are interchangable? Wow. That really set me down the path. Thinking in one space is one thing, but thinking in several spaces together is a whole new dimension. Heh.
That is the basic idea behind sculpties. Take an RGB value and convert it to XYZ.
One of the first limitations we run into is that an RGB document is 2D. That is, RGB is 3D, but the document itself is a 2D plane using just XY.
That means that the sculptie has to start as a plane with just XY. Much like UV mapping. A sculptie is nothing more than a UV plane waiting to be textured, so to speak.
So you start with a plane. I've simplified it a bit for visual purposes. For this, going to start with a 4x4 plane with proper UV coords. Something like this:
sa01_5x5.jpg
Now, the 4x4 part is a bit of a misnomer. The 4x4 actually refers to the quads. But a sculptie manipulates verts - not quads. It is the vertices that we are after. The sculptie plane that I am showing is actually 5x5 vertices. Very important.
Because of that misunderstanding, the first production mistake is usually to go with a mosaic pattern for the sculptie map. Check this out:
sa02_faces.jpg
The colours are supposed to be the XYZ values for the vertices. They are, but they would be better off categorized as face colours. Take a look at the verts that are in the middle. What RGB colour value do they take for XYZ position? Because of rounding errors and rounding fixes, could be any of the bordering RGB colours. Using such a mosaic pattern, you could very well be left getting frustrated.
How do you maximize vertex placement with certainty? By thinking more in terms of UVs.
Check this out:
sa03_verts.jpg
See how each vert is dead center of the RGB colour chunks? Very nice. Pretty much nothing left to chance, including rounding errors.
Well, the dead center part is mostly true. The colour chunks around the edges are only partial chunks when compared to the chunks in the middle. However, they follow the pattern.
This mosaic pattern is consistant with how UVs work, and I'm fairly positive this is how sculpties sample maps. I don't know with absolute certainty, but this pattern has held up against other pattern hacks when it comes to stitching and seams. When it comes to stitching, there can be anomolies, but the pattern I'm presenting here came through with predicable results every time. Using this pattern, no need for hacks when using other patterns.
Big Note: I'm not really sure if anti-aliasing is a concern when sampling the edges of a sculptie map. But I have yet to see any noticable anomolies that could be attributed to anti-aliasing.
A sculptie plane is 33x33 vertices. Because of that and powers of two, a sculptie map that is 64x64 is what is needed.
However, an array of sdata[0-32][0-32] is all that is really needed. As a matter of fact, I've been giving much thought to my own internal sculptie file format. This would make it so much easier to develop a variety of sculptie tools in various environments without having to worry about pattern matching and loss of rounded data across apps and tools. Such a file format in binary would barely be over 1k. Damn fine file size for portability and losslessness.
Um... yeah.
edit:
"This article was originally written waaaaaay back, before the advent of Photoshop 3.0."
http://www.vgd.co.uk/pages/notebook/Raytracing%20in%20Photoshop/RayPS.html
edit2:
imma noob
sdata[0-32][0-32][0-2]
33x33x3=3267