Code archives/3D Graphics - Effects/Grass
This code has been declared by its author to be Public Domain code.
Download source code
| |||||
This Demo is using Copyentity to multiply a Quad that is textured with Grass in Alphamode (Maskmode 4 can be used as well). A Sinus-based Wind Function is animating the Grass-Quads. Surprisingly the Z-Order works ok even in Alpha Mode. Feel free to use the Textures and Code in your Blitz-Projects. Download at http://www.melog.ch/dl/mygrass_nu.zip IMPORTANT NOTICE: MasterBeaker and Elias_t have enhanced this Project, and it is now much faster and has some extra Features.: http://telias.free.fr/temp/grass_zorder_d.zip If you use it then please mention MasterBeaker, Elias_t and me in the Credits, thanks. | |||||
;Download at http://www.melog.ch/dl/mygrass_nu.zip ;Here is a second Demo that is not included in the Zip. It ;is using the same Media Files as the Demo in the Zip. This ;is a bigger Terrain with a huge amount of grass: ; Simple, tiny Grass Demo 2 by JFK aka NORC of CSP ;Graphics3D 1024,768,32,1 Graphics3D 800,600,16,1 SetBuffer BackBuffer() Global windwave# Global grasscount camera=CreateCamera() TranslateEntity camera,0,20,0 CameraClsColor camera,80,110,120 CameraFogMode camera,1 CameraFogColor camera,80,110,120 CameraFogRange camera,100,200 CameraRange camera,1,202 light=CreateLight() terrain=LoadTerrain("hmap.jpg") ScaleEntity terrain,5,100,5 TranslateEntity terrain,-320,0,-320 floortex=LoadTexture("floor.jpg") ScaleTexture floortex,32/5,32/5 EntityTexture terrain,floortex quad=LoadMesh("smplquad.3ds") FitMesh quad,-10,0,0,20,20,0 EntityFX quad,16 Or 1 grasstex=LoadBrush("grass5f.tga",2 Or 48) ; also try Mode 4 instead of 2! PaintMesh quad,grasstex Dim grass(100000) Dim grassa#(100000) grasscount=0 For j=-250 To 250 Step 10 For i=-250 To 250 Step 10 grass(grasscount)=CopyEntity(quad) x#=(i+Rnd(-5,5)) z#=(j+Rnd(-5,5)) y#=TerrainY(terrain,x,0,z)-Rnd(2) PositionEntity grass(grasscount),x,y,z grassa(grasscount)=Rand(-90,90) grasscount=grasscount+1 Next Next HideEntity quad ;-------------------------Mainloop----------------------- While KeyDown(1)=0 If KeyDown(200) Then MoveEntity camera,0,0,.5 If KeyDown(208) Then MoveEntity camera,0,0,-.5 mxs#=-MouseXSpeed()/4 mys#=MouseYSpeed()/4 mxa#=mxa#+mxs# mya#=mya#+mys# MoveMouse GraphicsWidth()/2,GraphicsHeight()/2 PositionEntity camera,EntityX(camera),TerrainY(terrain,EntityX(camera),0,EntityZ(camera))+20,EntityZ(camera) RotateEntity camera,mya,mxa,0 wind(15,1.0) UpdateWorld() RenderWorld() Text 0,0,"Quads in Scene: "+(grasscount-1) Text 0,12,"Tris rendered: "+TrisRendered() Flip Wend End Function wind(force#,speed#) For i=0 To grasscount-1 x#=EntityX(grass(i)) z#=EntityZ(grass(i)) RotateEntity grass(i),Sin(windwave+x+grassa(i))*force#,grassa(i),Cos(windwave+z-grassa(i))*(force#/2) Next windwave=(windwave+speed#)Mod 360 End Function |
Comments
| ||
Very nice ! Kiss. |
Code Archives Forum