Join us in Phaze Demesnes or follow us:

How to sculpt a fish for Second Life - make a blue whale swim!

The 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.

If you just want to move on to scripting, then go to the swimming script or go to the next section.

body Sculpt 00 texture 00
tail sculpt 01 texture01
tail fin sculpt02 texture02
front fin sculpt03 texture03
Get all these images and two scripts you will need in this ZIP

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:

Arhipelis main screen

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:

Toolbar buttons

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.

Drop and drag the image onto Archipelis

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:

slide texture Move texture button - slide the texture around

zoom texture 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.

pencil 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.

whale body

You can use the Zoom tool zoom tool and the Edit tool 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.

tail fin side fin rear tail

You can view your 3-D model with the far-left arrow button. Click the left click button, then click anywhere in the whale window and drag the whale model to spin it and view it.

3-D whale

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:

1) stretched edges

2) background colors leaking in

3) mirrored faces

3) holes 4) roughness

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).

blue whale directory

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.

Building the whale:

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!

upload

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.

Archipelis Base Prim

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.

shift-copy the tail fin

While you are editing the prim, select the Object tab and click the 'mirror' button on so that the shape is also flipped.

shape 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". select all prims and link them

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,

The blue whale project - How to create realistic animals in Second Life

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.

Download

// 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
            ]);

        }
    }

   
}					
					

Next - > Part 3 - The swimming script >

Back to the Best Free Tools in Second Life and OpenSim.