Pour faire le ciel, la technique de base est de créer une gigantesque boite, à laquelle tu appliques une texture de ciel. Pour l'eau en matrice...
Pour l'eau, c'est pas évident, je crois que tu ne peux pas utiliser la transparence d'une image lorsque tu l'appliques à une matrice. Donc faut utiliser ghost matrix pour lui donner un effet de transparence. Voilà ce que j'avais fait...ça rend pas très bien mais tu pourras trouver de meilleurs exemples sur le site TGC
(utilises les fleche pour augmenter le vent et les vagues)
Rem Project: Arbre
Rem Created: 23/08/2005 22:22:57
Rem ***** Main Source File *****
create bitmap 1,384,64
set current bitmap 1
image=0
for x=64*image to 63+(64*image)
if yorigine=1
yorigine=0
else
yorigine=1
endif
for y=yorigine to 30+yorigine step 2
variable=rnd(7)
ink rgb(10+(variable*21),25+(variable*12),1+int((variable/3))),0
dot x,y
next y
next x
yorigine=1
for x=64*image to 63+(64*image)
if yorigine=1
yorigine=0
else
yorigine=1
endif
for y=yorigine to 30+yorigine step 2
xg=x-1
yh=y-1
xd=x+1
yb=y+1
if xg<64*image then xg=63+(64*image)
if yh<0 then yh=31
if xd>63+64*image then xd=64*image
if yb>31 then yb=0
pixgr=rgbr(point(xg,y))
pixgg=rgbg(point(xg,y))
pixgb=rgbb(point(xg,y))
pixhr=rgbr(point(xg,y))
pixhg=rgbg(point(xg,y))
pixhb=rgbb(point(xg,y))
pixdr=rgbr(point(xd,y))
pixdg=rgbg(point(xd,y))
pixdb=rgbb(point(xd,y))
pixbr=rgbr(point(x,yb))
pixbg=rgbg(point(x,yb))
pixbb=rgbb(point(x,yb))
ink rgb((pixgr+pixhr+pixdr+pixbr)/4,(pixgg+pixhg+pixdg+pixbg)/4,(pixgb+pixhb+pixdb+pixbb)/4),0
dot x,y
next y
next x
yorigine=0
get image image+1,64*image,0,64+(64*image),32
image=1
for x=64*image to 63+(64*image)
if yorigine=1
yorigine=0
else
yorigine=1
endif
for y=yorigine to 62+yorigine step 2
variable=rnd(7)
ink rgb(230-(variable*15),230-(variable*15),15-variable),0
dot x,y
next y
next x
yorigine=1
for x=64*image to 63+(64*image)
if yorigine=1
yorigine=0
else
yorigine=1
endif
for y=yorigine to 62+yorigine step 2
xg=x-1
yh=y-1
xd=x+1
yb=y+1
if xg<64*image then xg=63+(64*image)
if yh<0 then yh=63
if xd>63+64*image then xd=64*image
if yb>63 then yb=0
pixgr=rgbr(point(xg,y))
pixgg=rgbg(point(xg,y))
pixgb=rgbb(point(xg,y))
pixhr=rgbr(point(xg,y))
pixhg=rgbg(point(xg,y))
pixhb=rgbb(point(xg,y))
pixdr=rgbr(point(xd,y))
pixdg=rgbg(point(xd,y))
pixdb=rgbb(point(xd,y))
pixbr=rgbr(point(x,yb))
pixbg=rgbg(point(x,yb))
pixbb=rgbb(point(x,yb))
ink rgb((pixgr+pixhr+pixdr+pixbr)/4,(pixgg+pixhg+pixdg+pixbg)/4,(pixgb+pixhb+pixdb+pixbb)/4),0
dot x,y
next y
next x
yorigine=0
get image image+1,64*image,0,64+(64*image),64
image=2
for x=64*image to 63+(64*image)
if yorigine=1
yorigine=0
else
yorigine=1
endif
for y=yorigine to 62+yorigine step 2
variable=rnd(7)
ink rgb(0,(variable*21),200-variable),0
dot x,y
next y
next x
yorigine=1
for x=64*image to 63+(64*image)
if yorigine=1
yorigine=0
else
yorigine=1
endif
for y=yorigine to 62+yorigine step 2
xg=x-1
yh=y-1
xd=x+1
yb=y+1
if xg<64*image then xg=63+(64*image)
if yh<0 then yh=63
if xd>63+64*image then xd=64*image
if yb>63 then yb=0
pixgr=rgbr(point(xg,y))
pixgg=rgbg(point(xg,y))
pixgb=rgbb(point(xg,y))
pixhr=rgbr(point(xg,y))
pixhg=rgbg(point(xg,y))
pixhb=rgbb(point(xg,y))
pixdr=rgbr(point(xd,y))
pixdg=rgbg(point(xd,y))
pixdb=rgbb(point(xd,y))
pixbr=rgbr(point(x,yb))
pixbg=rgbg(point(x,yb))
pixbb=rgbb(point(x,yb))
ink rgb((pixgr+pixhr+pixdr+pixbr)/4,(pixgg+pixhg+pixdg+pixbg)/4,(pixgb+pixhb+pixdb+pixbb)/4),0
dot x,y
next y
next x
yorigine=0
get image image+1,64*image,0,64+(64*image),64
set current bitmap 0
autocam off
sync on
hide mouse
angle#=0
make object cone 1,15
xrotate object 1,180-angle#/1
scale object 1,100,133.333,100
texture object 1,1
yrotate object 1,90
position object 1,5000-(tan(angle#)*7),0,5000
make object cone 2,14
xrotate object 2,object angle x(1)-angle#/2
scale object 2,100,142.857,100
texture object 2,1
yrotate object 2,90
position object 2,object position x(1)-(tan(angle#)*7),7,5000
make object cone 3,12.8
xrotate object 3,object angle x(2)-angle#/3
scale object 3,100,156.25,100
texture object 3,1
yrotate object 3,90
position object 3,object position x(2)-(tan(angle#)*7),14,5000
make object cone 4,11.2
xrotate object 4,object angle x(3)-angle#/4
scale object 4,100,178.571,100
texture object 4,1
yrotate object 4,90
position object 4,object position x(3)-(tan(angle#)*7),21,5000
make object cone 5,11.2
xrotate object 5,object angle x(4)-angle#/5
scale object 5,100,178.571,100
texture object 5,1
yrotate object 5,90
position object 5,object position x(4)-(tan(angle#)*7),27,5000
make matrix 1,2000,2000,100,100
make matrix 2,10000,10000,100,100
prepare matrix texture 1,2,1,1
prepare matrix texture 2,3,1,1
ghost matrix on 2
for x=0 to 100
for y=0 to 100
set matrix height 1,x,y,-(sqrt((x-50)^2+(y-50)^2)^2)*0.2-rnd(6)
next y
next x
sens=1
position matrix 1,4000,0,4000
position matrix 2,0,-15,0
dim membres(30)
dim vagues(10)
vagues(1)=0
vagues(2)=6
vagues(3)=13
vagues(4)=20
vagues(5)=4
vagues(6)=0
vagues(7)=6
vagues(8)=20
vagues(9)=4
vagues(10)=0
vaguedeplace=0
vent#=5
position camera 5000,30,3500
for z=3500 to 4850 step 5
position camera 5000,110-((z-4175)^2)*0.0002,z
gosub vague
gosub inclinaison
sourisx#=mousemovex()
sourisy#=mousemovey()
xrotate camera camera angle x()+0.2*sourisy#
yrotate camera camera angle y()+0.2*sourisx#
sync
next z
do
gosub vague
gosub inclinaison
sourisx#=mousemovex()
sourisy#=mousemovey()
xrotate camera camera angle x()+0.2*sourisy#
yrotate camera camera angle y()+0.2*sourisx#
if upkey()=1
move camera 0.5*upkey()
if sqrt(((camera position x()-5000)^2)+((camera position z()-5000)^2))>1000 then move camera -0.5*upkey()
endif
if downkey()=1
move camera -0.5*downkey()
if sqrt((camera position x()-5000)^2+(camera position z()-5000)^2)>1000 then move camera 0.5*downkey()
endif
if leftkey()=1 and timer()>tempsgauche+300 and vent#>0
vent#=vent#-1
tempsgauche=timer()
endif
if rightkey()=1 and timer()>tempsdroite+300 and vent#<11
vent#=vent#+1
tempsdroite=timer()
endif
if camera position y()<get ground height(1,camera position x()-4000,camera position z()-4000)+2 then position camera camera position x(),get ground height(1,camera position x()-4000,camera position z()-4000)+2,camera position z()
if camera position y()<get ground height(2,camera position x(),camera position z())-13 then position camera camera position x(),get ground height(2,camera position x(),camera position z())-13,camera position z()
sync
loop
vague:
if timer()>tempsvague+250-20*vent#
vaguedeplace=vaguedeplace+1
if vaguedeplace=6 then vaguedeplace=1
for range=1 to 96 step 5
for colonne=1 to 100
set matrix height 2,range,colonne,(vagues(vaguedeplace+1)*(vent#/4))-15
set matrix height 2,range+1,colonne,(vagues(vaguedeplace+2)*(vent#/4))-15
set matrix height 2,range+2,colonne,(vagues(vaguedeplace+3)*(vent#/4))-15
set matrix height 2,range+3,colonne,(vagues(vaguedeplace+4)*(vent#/4))-15
set matrix height 2,range+4,colonne,(vagues(vaguedeplace+5)*(vent#/4))-15
next colonne
next range
update matrix 2
tempsvague=timer()
endif
return
inclinaison:
if timer()>tempsinclinaison+250-(22*vent#)
inclinaison#=inclinaison#+sens
if inclinaison#>10
sens=-sens
inclinaison#=9
endif
if inclinaison#<1
sens=-sens
inclinaison#=2
endif
angle#=vent#*1.7
angleinstant#=(angle#/2)+((angle#/2)*(inclinaison#/10))
gosub rotation
tempsinclinaison=timer()
endif
return
rotation:
xrotate object 1,180-angleinstant#/1
position object 1,5000-(tan(angleinstant#)*7),0,5000
xrotate object 2,object angle x(1)-angleinstant#/2
position object 2,object position x(1)-(tan(angleinstant#)*7),7,5000
xrotate object 3,object angle x(2)-angleinstant#/3
position object 3,object position x(2)-(tan(angleinstant#)*7),14,5000
xrotate object 4,object angle x(3)-angleinstant#/4
position object 4,object position x(3)-(tan(angleinstant#)*7),21,5000
xrotate object 5,object angle x(4)-angleinstant#/5
position object 5,object position x(4)-(tan(angleinstant#)*7),27,5000
return
Pour le format j'ai regardé sur google apparment c'est un format pour macintosh et la convertion .x=>.3dmf à l'air répendu, mais j'ai pas trouvé pour le contraire...
++
vBulletin® v.3.6.5, Copyright ©2000-2009, Jelsoft Enterprises Ltd. Tous droits réservés - Version française vbulletin-fr.org