How to sculpt a fish for Second Life™ - make a blue whale swim!
The first step is to get the sculpts made. I used the commercial
tool Archipelis on this image of a blue whale:
The resulting sculpts are a texture and a shape for each piece.
You'll need the images and two scripts below: so grab them
from the Zip file.
You will need to upload each of these images, then drop them onto a
prim with the type set to 'sculpt'. They will
come out in odd sizes, and you'll have to figure out how to align
them. Archipelis makes it easy to align them with the two
scripts and images in that zip file. If you are ready upload
the textures and start working on it, then skip to
Building the Whale.
If you want to make
your own fish with Archipelis, then read this next section.
Archipelis is not free. It is not intuitive. But it
is simple to learn and to use once you figure out all the funny icons,
you can rapidly make sculpts of many animal shapes. You can get
it at http://www.archipelis.com/
for 38 Euros, which at the time I am writing this, is about $48.00 US
You will need a large, good looking image of a fish. The best
images have a side view, with clearly visible fins that can be seen
'top-view'. Not all images are suitable. I have
had to put together birds from multiple images, as some images had great
heads, some had great wings, other images had bottom views of wings,
and others had better details on feet or tails. The above
whale image is nearly perfect, as it has a top view of the fins, and
a great side view of the whale body. Top view mixed with side
view is rare! The top and bottom view of any fin isn't important
for a fish, yet it is quite different when you view the top and bottom
of the wing of a bird.
Once you have loaded Archipelis and started it, you get a screen like
the one below:
A complete overview of Archipelis is beyond the scope of this
article. But you will need to know how to use the bottom
toolbar. You click on the tool bar at the bottom of the page to
change and make sculpts: In order to get
good 3D models in Second Life, you must avoid some features that are
not used in Second Life. You cannot use any operators like intersection
or difference of two shapes (only union is possible). You cannot use
the mirror feature (this is okay, you can always copy the prim or draw
the mirrored part yourself). You must use simple definitions of every
contour (like a banana, for instance). Obviously, you can create a complex
model, but this model should be based on a set of "simple" shapes.
You can force Archipelis to disable the incompatible features by clicking
'SETTINGS", then opening "Edit Setting", and editing the note card to
say "Profile=SL". Save the note card, and press Okay, and the
buttons will be grayed out that would break your sculpts.
Drag and drop the image of the whale onto the blue area. You can also
use the Load button in the Textures
area on the left.
The whale or other fish may not be centered within the dotted boxes
and it may not be very large. Zooming in as close as possible
to an area is necessary. When I do this, I must save each sculpt
as a new file, and I end up with multiple folders and multiple files,
and then I have to keep track of them closely since Archipelis always
names a file texture_00.bmp, texture_01.bmp and so on. This is
a pain, but it gets the best possible results. If you make all of
them in one go as I am showing you here, then you can use Archipelis
script-builder to make your fish or whale in a few seconds. I
admit I built a lot of animals before I started to use the scripted
methods that Archipelis supports. The Archipelis is a very
nice package, and well worth the money! The above whale image is
an excellent one, so I will use the above view as-is, and all the different
images will all be together in one folder. I will also show
you how to use the scripted method to make your whale, so it will be
easy and correct in size and all proportions to the above image.
We will end up with 4 sculpts. There are 4 surface textures and
4 sculpt texture textures, or 8 images in all.
If you want to move the texture, or enlarge it, now is the time.
The bottom tool bar has the first two buttons you will need:
Move texture button - slide the texture around
Zoom Texture button - zoom in and out
Use these two buttons to position the whale so you can see all of the
body and fins. You only need to see one tail fluke.
Now that you have an image centered in the view window, you can draw
the sculpt shapes.
Click
the pencil button and with the right-click mouse button, carefully outline
the body of the whale. Don't worry too much about straying outside the
lines. Archipelis has a simple way to edit these lines.
You can use the Zoom tool
and the Edit tool
with the right-click mouse button to correct for any of the red dots
being in the wrong position. A frequent problem is that the edge
textures will stretch and look bad. You can
nudge the red dots more inside the edge to correct this, or edit the
final texture file, or even re-edit the original photo to remove
the offending edges that bleed..
Repeat this operation on the side fin and the tail fin and separately
, the tail. Later, I'll show you how to move this tail and
the fins with a script to make a realistic swim animation.
You can view your 3-D model with the far-left arrow button.
Click the
button, then click anywhere in the whale window and drag the whale model
to spin it and view it.
The buttons that appear in this 3-D window can be used to shift the
texture, or to move the texture, and to and shift the sculpts in X,Y,
and Z. If you followed the instructions on "Setting
up Archipelis for Second Life", then some buttons will be grayed-out
and unavailable to you.
You will see that there is only one tail. Archipelis in Second Life
mode does not support the mirror operation. Instead, we
will shift-copy it to make two tails once we have the tail prim uploaded
in Second Life. Also, there is only one side fin. We'll shift-copy
it once we get it into Second Life, too.
There are some things you will probably notice happen to your sculpts:
The first two can usually be corrected by re-editing the source image
and using a paint tool, eliminating the colored background, or painting
it to the same texture as the desired part. I have
frequently edited the final output of Archipelis to touch up edges and
sharpen features .
Mirrored faces happens when you sculpt a front view of a face.
Archipelis will put this face on the front and back of a prim.
If all you have is a front face shot, you will need to edit awayeither
the left or right side of the resulting face.bmp file.
Holes and roughness can usually be controlled by careful positioning
of the lines and red dots. Kinked lines will cause this.
Save your work:
You must save your work in a '.designer' file before exporting to Second Life.
Click File-> Save. I called my project
"Blue Whale".
Now, click File->Export to Second Life. In a few moments,
a new folder will appear with the sculpts and textures in it called
"bluewhale.ScultedPrims". You may have to confirm the deletion of this
directory if it already exists in a black DOS prompt that will probably
appear behind some other window, making you wonder why it is taking
so long the second time. You have to press Y to continue.
Inside the new folder , you will find BMP images (geometry_XX.bmp and
texture_XX.bmp) and two LSL scripts (ArchipelisBase.txt and ArchipelisRez.txt).
This shows a folder view of the blue whale. You can clearly
see the 4 textures for the skin and the 4 geometry shapes textures.
If you want to try the default sculpts from Archipelis, go ahead and
skip to Building the Whale.
If you want to preview it, and check for holes, and smooth it so it
looks it's best, then open this page on How to Smooth Sculpts
and Correct Holes.
You can now upload these textures to Second life.
You will need to pay $10 Linden for each texture. Since there
are 8 textures (4 color and 4 shapes), this whale will cost 80 Linden,
or about 33 cents US. Connect to Second Life and go to some place
that you can upload images and build. If you don't own any
land, your choices are limited to areas called "Sandboxes".
Use the search button, type in 'sandbox', and teleport to one.
Step 1. - Upload all images
Click the inventory button on the right side. It looks like a suitcase.
Click the File-Upload button and select each image, or select Batch
mode, and upload all of them at once. They will appear in your
Textures folder At this time it is best to move the uploaded images
from the Texture folder into a folder for the Blue Whale. Otherwise,
on your next project, you will not be able to tell all of the textures
apart from each other!
Step 2. - Create a prim named "ArchipelisBase"
Go in build mode with the menu "", or press Ctrl-3. Click on the "Create"
button. Click somewhere on the floor to create an object (whatever it
is, cube, cylinder...). Set the name to "ArchipelisBase" to this object.
Drag and drop all the previously generated images that are now in "My
Inventory > Textures" into the content of the current object you are
editing.
Step 3. Add the script ArchipelisBase
Click on "Content". Click on "New Script...". Double click on the script
called "New Script" that has been created. Copy the content of the file
called "ArchipelisBase.txt". Replace the definition of the
script by a paste action. Click on "Save" button and close the script
window.
Select the object you are editing and with the right mouse button click
on "Take" to put it into "My Inventory / Objects".
Step 4 - The ArchipelisRez object
Click on the "Create" button of the build window. Click somewhere on
the floor to create a second object (whatever it is, cube, cylinder...).
You can call this object "AchipelisRez" but it is not mandatory.
Click on "Content". Click on "New Script...". Double click on the script
called "New Script" that has been created. Copy the content of the file
called "ArchipelisRez.txt". Replace the definition of the script by
a paste action. Click on "Save" button and close the script window.
Drag and drop the object called ArchipelisBase you created at step 4
(it is in "My Inventory > Objects") into the content of the current
object you are editing. Then, delete the object "ArchipelisBase" in
"My Inventory > Objects".
Step 6 - Completing the export
Leave the build mode by closing the build window. Click on the object
ArchipelisRez in front of you to rez. Your 3D model appears. Now, you
can delete the prim ArchipelisRez because it is no longer needed.
By going back to the build mode (menu "Build") in "Edit" mode and by
selecting all the shapes of your model, you can rotate or translate
the selection.
Step 7 - Copy the tail fins
Select the single tail fin. Press and hold shift key down, and
drag the tail until a second tail fin appears. You can move
and position this second tail surface to the other side.
While you are editing the prim, select the Object tab and click the
'mirror' button on so that the shape is also flipped.
Create two new prims: A cube and a sphere. The cube will
become the 'root' prim, and the sphere will be a pose ball for people
to ride on the whale. The root prim is always the last prim linked,
and it is the one that actually moves. Why use more prims?
The answer is that we will want to position our whale outside the sim,
and change the height it swims, easily. This is easy when the square
root prim, is available. And the pose ball makes it easy to reposition
the avatar on top. You can add more pose balls if you want to
add more riders. This operation will make it
easy to control the whale height and position. All you have to
do is move the last prim, the cube, up or down to re-position the whale.
But this is really much more useful if your whale will ride around the
edge of the sim, because we can position the part that moves (
the cube) inside the sim, and position the rest of the whale outside
the sim entirely! You will even be able to ride around on the
whale, entirely outside of the normal sim boundaries.
You can see two new prims in the following picture: a circle and
a cube. You need to right click the ground, and make the
sphere and the cube. Position the sphere above the whale,
along the center line. Position the cube just above the
whale along the center line. Make sure that the Green arrow of the cube
faces forward. The script will make the whale move in that direction.
Now select the whale, the sphere, and the cube, in that order.
The cube must be the last thing you click. Press Ctrl-L to link
the items together. You must rename the resulting
Object to "Blue Whale", or another useful name other than "Object".
I
You can click on "Take" by activating the right mouse button to put
this model into your inventory. It will be "My Inventory > Objects >
Blue Whale".
The first script we will add lets us sit on the whale and ride it around.
This script also uses the very handy Camera control to position the
camera down below and to the left of the whale, looking upward.
The camera is set to lag, like a skier behind a boat.
This makes the camera view more realistic. Take a look at this video
and you should be able to tell,
Add this next script to the round ball. You should also
add an animation to the Content tab. I used 'rooftop-crouch', which
is a standard animation. You will be seated on the ball
when you right click the whale. If ou sit too low, or sit
backwards, just edit Linked parts and move the ball, and unsit and
sit again until you are happy with the position of our avatar.
I usually set the properties in the General Tab to 'Always Sit when
touched' to make this simpler for other people to do.
// pose ball script
// position to sit on the ball e.g <0.0, 0.0, 0.1>
// sit 0.1 meter above the ball.
// NOTE: if all these are 0, then the sit location is removed
// position to sit on the ball e.g <0.0, 0.0, 0.43>
// sit 0.5 meter above the ball
vector POSITION=<0.0, 0.0, 0.1>;
// hovertext above ball. "" for none.
// add '\n ' at the end to move text up i.e.
// string HOVERTEXT="Sit Here\n ";
string HOVERTEXT="";
// Pie Menu Sit Text. Will only work for the
// main prim but included it anyway. If no text
// is entered between "" it won't be used.
string SIT_TEXT="";
list rgb;
string animation;
integer listener;
default
{
state_entry()
{
if (llStringLength(SIT_TEXT)>0)
llSetSitText(SIT_TEXT);
llSitTarget(POSITION, ZERO_ROTATION);
}
on_rez(integer r)
{
llResetScript();
}
changed(integer change)
{
if (change & CHANGED_LINK)
{
if (llAvatarOnSitTarget() != NULL_KEY)
{
llRequestPermissions(llAvatarOnSitTarget(),
PERMISSION_CONTROL_CAMERA|PERMISSION_TRIGGER_ANIMATION);
}
else
{
integer perm=llGetPermissions();
if ((perm & PERMISSION_TRIGGER_ANIMATION) && llStringLength(animation)>0)
llStopAnimation(animation);
animation="";
}
}
}
run_time_permissions(integer perm)
{
if (perm & PERMISSION_TRIGGER_ANIMATION)
{
llStopAnimation("sit");
animation=llGetInventoryName(INVENTORY_ANIMATION,0);
llStartAnimation(animation);
}
if ( perm & PERMISSION_CONTROL_CAMERA )
{
llClearCameraParams(); // reset camera to default
llSetCameraParams([
CAMERA_ACTIVE, 1, // 1 is active, 0 is inactive
CAMERA_BEHINDNESS_ANGLE, 15.0, // (0 to 180) degrees
CAMERA_BEHINDNESS_LAG, 1.0, // (0 to 3) seconds
CAMERA_DISTANCE, 10.0, // ( 0.5 to 10) meters
CAMERA_FOCUS_LAG, 0.05 , // (0 to 3) seconds
CAMERA_FOCUS_LOCKED, FALSE, // (TRUE or FALSE)
CAMERA_FOCUS_THRESHOLD, 0.0, // (0 to 4) meters
CAMERA_PITCH, 10.0, // (-45 to 80) degrees
CAMERA_POSITION_LAG, 0.0, // (0 to 3) seconds
CAMERA_POSITION_LOCKED, FALSE, // (TRUE or FALSE)
CAMERA_POSITION_THRESHOLD, 0.0, // (0 to 4) meters
CAMERA_FOCUS_OFFSET, <-2.0, 0.0, -3.0> // <-10,-10,-10> to <10,10,10> meters
]);
}
}
}