Here is a little function to create bowls of various shapes I used the capsule routine someone had previously posted as the basis.
Be patient when running on my system it takes about a minute to display the scene.
If you don't have DP you can extract the function
All the best
codger
REM Project: DISH
REM Created: 11/25/2006 3:39:53 PM
REM
REM ***** Main Source File *****
REM
sync on
sync rate 0
Randomize timer()
autocam off
phy start
GLOBAL Ground = 1
GLOBAL Dish1 = 2
GLOBAL Dish2 = 3
GLOBAL Dish3 = 4
GLOBAL TextTimer
GLOBAL Ball = 5
GLOBAL Ballsize# = .15
GLOBAL BallRes = 8
make object box Ground, 10, 0.3, 10
position object Ground, 0, -0.5, 0
phy make rigid body static box Ground
color object Ground, rgb( 0, 255, 0 )
MakeObjectDish( Dish1, 1.5,50 ,80)
position object Dish1, 0,1,2
phy make rigid body dynamic mesh Dish1
color object Dish1, RGB(185,152,121)
MakeObjectDish( Dish2, 1.0,190 ,98)
position object Dish2, 0,1,0
phy make rigid body dynamic mesh Dish2
color object Dish2, RGB(185,152,121)
MakeObjectDish( Dish3, 1.5,100 ,95)
position object Dish3, 0,1,-2
phy make rigid body dynamic mesh Dish3
color object Dish3, RGB(185,152,121)
position camera 0, -4,2,-4
point camera 0, 0,0,0
do
ControlCamera()
if timer() > TextTimer then PrintText()
text 10,20, "FPS : "+ str$(screen FPS())
text 10,30, "OBJECTS : "+ str$(BALL)
text 10,60, "Press space key to drop balls"
if spacekey() then MakeSphere()
phy update
sync
loop
Function PrintText()
textTimer = timer()+100
Endfunction
Function ControlCamera()
if shiftkey() then position camera 0, camera position x(), camera position y ()+.1, camera position z()
if controlkey() then position camera 0, camera position x(), camera position y ()-.1, camera position z()
CONTROL CAMERA USING ARROWKEYS 0, .1, .5
Endfunction
function MakeSphere()
inc Ball,1
make object sphere Ball, Ballsize#, BallRes,BallRes
position object ball, rnd(100)/500,rnd(10),(rnd(2)-1)*2
color object ball, rgb (rnd(255),rnd(255),rnd(255))
phy make rigid body dynamic sphere ball
endfunction
function MakeObjectDish( ObjectNumber, Diameter#,Height#, Thickness# )
`A function to make a dish object
' #height is a percentage of the dia used to shape bowl
' #Thickness is a percentage of the dia used to control wall of bowl
Thickness# = Thickness# / 100
Rows = 16 `Set detail level
Columns = 16
make object sphere ObjectNumber, Diameter#, Rows, Columns
scale object Objectnumber ,100,Height#,100 ' deform to height
lock vertexdata for limb ObjectNumber, 0, 1
for Vertex = 0 to get VertexData Vertex Count()
`Get the vertex's current position
xPosition# = get VertexData Position X( Vertex )
yPosition# = get VertexData Position Y( Vertex )
zPosition# = get VertexData Position Z( Vertex )
if yPosition# > 0
set VertexData Position Vertex, xPosition# * Thickness#, -yPosition# * Thickness# , zPosition# * Thickness#
else
set VertexData Position Vertex, xPosition#, yPosition# , zPosition#
endif
next Vertex
unlock vertexdata
`Make the finished object
make mesh from object 5000, ObjectNumber `Save the dish shaped mesh
delete object ObjectNumber `Delete the temporary object
make object ObjectNumber, 5000, 0 `Make a new object from the mesh
delete mesh 5000 `Delete the mesh
endfunction
System
PIV 2.8 MZ 512 Mem
FX 5600 256 mem