I updated the small example program a bit. It's possible to get rid of the intersecting lines like I described in my last post. I've attached the updated example to this post.
In the example I also experimented with camera movements to establish a level. I liked it, so I left it in.
[EDIT]
Forgot to give y'all the code...
`======================================
`Yodaman Jer's Cartoon Shading Example
`======================================
`Set everything up
Set Display Mode 1024,768,32 : Hide Mouse
Sync On : Sync Rate 60
Load Image "blue2.bmp",1
`Create blocks for shading example
Make Object Box 1,5,5,5 : Position Object 1,0,0,0 : Texture Object 1,1
Make Object Box 2,5,5,5 : Position Object 2,0,0,0 : Scale Object 2,-104,-104,-104
Color Object 2,RGB(0,0,0) : `This adds the desired black line around your object
Make Object Box 3,5,5,5 : Position Object 3,0,0,5.2 : Texture Object 3,1
Make Object Box 4,5,5,5 : Position Object 4,0,0,5.2 : Scale Object 4,-104,-104,-104
Color Object 4,RGB(0,0,0)
Make Object Box 5,5,5,5 : Position Object 5,0,0,10.4 : Texture Object 5,1
Make Object Box 6,5,5,5 : Position Object 6,0,0,10.4 : Scale Object 6,-104,-104,-104
Color Object 6,RGB(0,0,0)
Make Object Sphere 7,2 : Position Object 7,0,5.2,15.2 : Texture Object 7,1
Make Object Sphere 8,2 : Position Object 8,0,5.2,15.2 : Scale Object 8,-108,-108,-108
Color Object 8,RGB(0,0,0)
`Call intro routine
Gosub IntroRoutine
`Begin Main Program Loop
Do
`Print FPS to the screen
Text 0,0,"FPS: "+Str$(Screen FPS() )
`Rotate sphere
YRotate Object 7,WrapValue(Object Angle Y(7)-2)
YRotate Object 8,WrapValue(Object Angle Y(8)-2)
`Use variables to move the camera
Yang#=WrapValue(Camera Angle Y()+MouseMoveX()/4.0)
Xang#=WrapValue(Camera Angle X()+MouseMoveY()/4.0)
rotate camera Xang#,Yang#,0
If MouseClick()=1 then move camera 2
if MouseClick()=2 then move camera -2
`Refesh screen and close loop
Sync
Loop
`Introduction routine
IntroRoutine:
`Get initial variables
x#=object position x(1)
y#=object position y(1)+5
z#=object position z(1)
yAng#=wrapvalue(object angle y(1)+180)
targetX#=newxvalue(object position x(1),yAng#,15)
targetZ#=newzvalue(object position z(1),yAng#,15)
camX#=175
camY#=150
camZ#=25
`Initial camera position
position camera camX#,camY#,camZ#
point camera x#,y#,z#
counter=0
`Pause to set the scene
Do
inc counter
if counter=90 then exit
sync
Loop
counter=0 : `Reset the counter
`Smooth move to the player's position
Do
inc counter
if counter=180 then exit
camX#=curvevalue(targetX#,camX#,25)
camY#=curvevalue(targetY#,camY#,55)
camZ#=curvevalue(targetZ#,camZ#,19)
position camera camX#,camY#,camZ#
point camera x#,y#,z#
`Refesh screen and close the loop
sync
Loop
Return : `Return and begin the main program

"If you want lots of people to play your game make it simple; lots of people are simple." -Obese87