Code: Select all
--------------------------------
SLABSPRI Help Reference
Original Docs By Ken Silverman
Edited By Keith Schuler
(c) 1997 3D Realms Entertainment
--------------------------------
This is a very brief reference guide to help you use the SLABSPRI program,
which you will find in the \GOODIES\TOOLS directory on your Shadow Warrior
CD. Use SLABSPRI to create voxels (3D sprites) for Shadow Warrior.
Refer to these documents in the \GOODIES\DOC directory on your Shadow
Warrior CD for other important information:
ADVANCED.TXT - Brief explanations of room-over-room, sector objects, and
other advanced Shadow Warrior mapping topics.
EDITART.TXT - Instructions and reference for using the EDITART program.
EXAMPLE.TXT - Documentation to accompany EXAMPLE.MAP, which includes
demonstrations of almost all of Shadow Warrior's map functionality.
SLABSPRI.TXT - Instructions and reference for using the SLABSPRI program.
SWSOUNDS.TXT - An index of the sound effects and ambient sounds.
SPRITAGS.TXT - Sprite tagging reference. Your guide to all the special
sprites in Shadow Warrior and how to use them.
SWBUILD.TXT - A tutorial and reference guide to using the BUILD editor.
WALLTAGS.TXT - Wall and sector tagging reference. These are all the wall and
sector tags used in Shadow Warrior.
-----------------------------------------------------------------------------
--------------------------------
1. Command line parameters:
--------------------------------
There are three different ways to access SLABSPRI on the command line:
1. Build your own brand new voxel using the SLABSPRI.EXE editor.
2. Load an existing .KVX or .VOX file and edit it.
3. Convert from .ART & .PAL files containing 2-D rotations.
1.1 SLABSPRI
If you type "SLABSPRI" on the command line with no arguments, this will start
up SLABSPRI with the default voxel and palette. My initials are "KJS" :)
1.2 SLABSPRI [.KVX / .VOX filename]
This loads a voxel file that is already in 3-D format. For instance,
type "SLABSPRI RAILGUN.KVX" to load the railgun voxel. The 2 types
of voxel files are:
.KVX - compressed voxel object using vertical spans with 5 mip-maps
levels. At the end of the KVX file is a 768 byte palette.
If you're really out to save space, you could strip this off
and the voxel will still look correct in the game. Of course,
you'd have to re-attach the palette if you ever want to view
the KVX in SLABSPRI again.
.VOX - uncompressed voxel object
For you programmers out there, SLABSPRI.EXE can load from an
uncompressed voxel file. For example you could easily write
a program to generate some kind of a colorful sphere. Or if
there's a true hacker out there, maybe you could even write
a program that converts objects from a 3D modeler program
to voxel files! (I'd like a copy if anyone does this! -Ken)
The .VOX format is so simple, I'll describe it right here:
{
//char voxel[xsiz][ysiz][zsiz];
read(fil,&xsiz,4); //Dimensions of 3-D array of voxels
read(fil,&ysiz,4);
read(fil,&zsiz,4);
read(fil,voxel,xsiz*ysiz*zsiz); //The 3-D array itself!
read(fil,palette,768); //VGA palette (values are 0-63)
}
Color 255 is treated as empty space. It is best to keep the
inside of the object solid. Otherwise, SLABSPRI will not be able
to take advantage of back-face culling.
NOTE: A transluscent table is required to create the lower mip-map
levels. Since KVX / VOX files don't store the transluscent tables in
them, and it would be slow to re-create them every time a KVX is
loaded, SLABSPRI tries to load the transluscent table from
PALETTE.DAT. It's okay if PALETTE.DAT doesn't exist, however the
voxels will go blank when switching to the lower mip levels. I
recommend keeping a copy of PALETTE.DAT with transluscent table
sitting in your directory.
1.3 SLABSPRI.EXE [art&pal name][start tile][num tiles][total rotations]
This is the easiest way to create a new voxel. You make rotations
of a sprite (perhaps by rendering it with some 3D package.) And
then create an .ART file using EDITART. Place the rotations in the
art file sequentially, turning clockwise. Then copy the .ART file
to your SLABSPRI directory, along with PALETTE.DAT.
1.3.1 [art&pal name]
Prepare an .ART and .PAL file with same name, such as
"KEN.ART" and "KEN.PAL". The filename (without extension)
must be the same name. For the palette file, you can
rename your PALETTE.DAT file. SLABSPRI uses a transluscent
table for the painting stage of conversion.
1.3.2 [start tile]
This is the tile index into the art file which is the first
rotation of the object. For instance, if in EDITART you
placed your object at tile #0, then that is the number you
would use here.
1.3.3 [num tiles]
The number of rotation images that will actually be processed
from art file. This number is usually at least 5 for objects
that were not specially designed for voxels.
1.3.4 [total rotations]
This number is used to calculate the angle delta between
successive rotation images in the art file. Use 8 for 45
degree increments, 12 for 30 degree increments, etc.
Increment = (360 degrees / #). If this number is negative,
then the rotations will be treated as counter-clockwise
instead of clockwise. Usually this number will be the same
as [num tiles], unless for some reason the rotation images
equal more or less than a single rotation.
----------------------------
2. Keys Inside SLABSPRI
----------------------------
These are the keys everyone should know before using SLABSPRI.EXE.
2.1 Main Screen Keys:
ESC - Quit to DOS (first asks if you're sure)
Arrows - Move
A/Z - Up/down
PGUP/PGDN - Look up/down
<> - Rotate voxel around its center (if mouse cursor is not in a window)
L - Load a .KVX file. Allows you to select files anywhere on the current
drive by simply using arrow keys, PGUP, PGDN, Home, End, and
L.Enter. Press ESC to cancel.
2.2 Editor Keys:
Keyp.Enter - Toggle edit windows. If the mouse cursor is pointing on the
voxel when you press this key, the 2D cross sections will
be at the point where the mouse was over.
L.ALT-S - Save a .KVX file. If you specified a .KVX file on the command line
it will use that filename. Otherwise, it will save as a new
.KVX file as VOXEL###.KVX. It will automatically find the first
file with a number that doesn't exist.
R.ALT-S - Saves the voxel as VOXEL000.VOX
L.MouseButton - Plot a pixel.
R.MouseButton - Drag the 2D EDIT MODE window.
L.ENTER - Change the viewing mode. There are 3 viewing modes.
0: Shows the current cross-section only
1: Shows the full non-perspective view starting from beginning of
axes
2: Shows the full non-perspective view starting from end of axes
Backspace - Changes the current drawing color to 255. Essentially this is
"erase" mode.
F - Flood fill the region using the current drawing color as the border.
C - Change all colors from what's under cursor to current drawing color.
If showthough is "0", changes are made only in cross section, otherwise
the entire voxel is changed.
J - Junking function. Randomly changes about every 16th pixel of color
under the mouse cursor to the current drawing color.
B - Press this key when the mouse is on the color bar to change the
background color.
T - Trail mode. The mouse cursor will leave a "trail" of the current color.
~ - Toggle the pivot adjustment mode. Use the arrow keys to adjust.
/ - Center the pivot in pivot adjustment mode
<> - Darken / brighten rectangle (mouse cursor must be in a window).
Select the first corner of the rectangle with the "1" key.
TAB - Choose the current drawing color
SPACE - Plot a pixel using the current drawing color
+,- - (Both main keyboard & keypad) increment / decrement color
Shift + Arrows - Change current drawing color.
Shift + Mouse - Limit mouse movement to either X or Y axis, depending
on which changes first.
[ ] - Change the current drawing color (left / right)
Keyp. /,* - Zoom window in / out. There are 4 zoom levels (1,2,4,8)
PGUP/PGDN - Select cross-section
HOME/END - Push a rectangular region forward or backward. Works in
viewing mode 0 only. Select first corner with 1. 2nd corner is
where mouse cursor was when Home/End was pressed. (Not fully
programmed yet)
CTRL+PGUP/PGDN - Change the voxel dimensions
R - 2D Rotate - Press R to enter rotate mode. Then use 4 arrow keys to
rotate the 2D cross section (viewing mode 0) or entire voxel (viewing
mode 1-2) by 1 pixel. Press ESC, ENTER, or R to get out of rotate mode.
ALT-R - 3D Rotate. Rotates an entire voxel CCW upon the axis of the
window the mouse cursor is over.
ALT-F - 3D Flip. Do top/bottom flip on the window the mouse cursor is
over.
ALT-C - Make a 2D cross section which has an almost circular shape look
perfectly circular. This works great for those "octagony" voxels
that were chopped out using only 8 views. If you press ALT-C when
viewing mode > 0, then all cross sections of that axis will be
circulized.
ALT-H - De-hollowize tool. This key fills in hollow parts of voxels
that can never be seen from outside. Use it when the 2D edit mode
windows are off. This is useful for optimizing a voxel for
back-face culling. Note that this won't work if there is a leak
into the hollow part.
ALT-U - Undo change - copies compressed 3D voxel over 2D views.
Keyp.0 - Accept changes in 2D windows - copies to compressed 3D voxel.
1 - Select first corner for copy&paste rectangular region
2 - Select second corner for copy&paste rectangular region. Unlike EDITART,
it matters whether you select the top-left corner first or not. This is
how you can flip the tile more easily without having to use other
special keys to do it.
3 - Paste rectangular region (from top left corner)
ALT-P - Re-maps current palette to the PALETTE.DAT file which you must put
in the current directory.
Keyp. 2,4,6,8 - Change xrepeat & yrepeat. These keys stretch and shrink
the voxel in the x and y directions. This will not be saved
and is only included for fun.
Keyp. 5 - Reset xrepeat & yrepeat
Ctrl + Keyp.5 - Reset voxel to center position facing forward
F1-F4,F9,F10 - Slow x,y,ang movement.
F12 - screen capture
U - Combine 2 voxels. First lets you select a .KVX file like the 'L' key.
Then you can center the object by using the 1-6 keys on the keypad
like this:
ÚÄÄÄÂÄÄÄÂÄÄÄż
ł(7)ł(8)ł(9)ł
ĂÄÄÄĹÄÄÄĹÄÄÄ´
łx--ły--łz--ł
ĂÄÄÄĹÄÄÄĹÄÄÄ´
łx++ły++łz++ł
ŔÄÄÄÁÄÄÄÁÄÄÄŮ
I was nice enough to duplicate my movement code so you could move
around the voxel as you center it. After centering, press L.Enter to
accept or ESC to cancel.