Gracias Gracias:  26
Página 3 de 5 PrimerPrimer 12345 ÚltimoÚltimo
Resultados 31 al 45 de 62

Tema: ayuda con Directx 7

  1. #31
    Senior Member Avatar de Yue
    Fecha de ingreso
    May 2008
    Ubicación
    Bogotá
    Mensajes
    634

    Re: Ayuda con Directx 7

    Sombras Volumetricas, si ves el ejemplo te parecera familiar (AShadow)

    Código:
    Graphics3D 1024, 768, 32, 2
    SetBuffer BackBuffer()
    
    ;Globs
    Dim Edge#(65000, 7)
    
    ;Camera
    Cam = CreateCamera()
    
    ;Caster
    Cube = CreateSphere()
    PositionEntity Cube, 0, 0, 7
    
    ;Light
    Light = CreateLight()
    PositionEntity Light, 3, 3, 7
    PointEntity Light, Cube
    
    While Not KeyHit(1)
    	TurnEntity Cube, 1, .5, 1.5
    	vol = CreateVolume(Cube, Light)
    	RenderWorld
    	FreeEntity vol
    	Flip
    Wend
    End
    
    Function CreateVolume(model, light, volume_lenght = 1000000)
    VolumeMesh = CreateMesh()
    VolumeSurface = CreateSurface(VolumeMesh)
    EntityAlpha VolumeMesh, .5
    EntityColor VolumeMesh, 255, 0, 0
    EntityFX VolumeMesh, 1
    light_x# = EntityX(light)
    light_y# = EntityY(light)
    light_z# = EntityZ(light)
    For n = 1 To CountSurfaces(model)
    	surf = GetSurface(model, n)
    	dwNumFaces = CountTriangles(surf) - 1
    	For v = 0 To dwNumFaces
    		vert0 = TriangleVertex(surf, v, 0)
    		vert1 = TriangleVertex(surf, v, 1)
    		vert2 = TriangleVertex(surf, v, 2)
    		TFormPoint VertexX(surf, vert0), VertexY(surf, vert0), VertexZ(surf, vert0), model, 0
    		v1_x# = TFormedX()
    		v1_y# = TFormedY()
    		v1_z# = TFormedZ()
    		TFormPoint VertexX(surf, vert1), VertexY(surf, vert1), VertexZ(surf, vert1), model, 0
    		v2_x# = TFormedX()
    		v2_y# = TFormedY()
    		v2_z# = TFormedZ()
    		TFormPoint VertexX(surf, vert2), VertexY(surf, vert2), VertexZ(surf, vert2), model, 0
    		v3_x# = TFormedX()
    		v3_y# = TFormedY()
    		v3_z# = TFormedZ()
    		aa_x# = v3_x# - v2_x#
    		aa_y# = v3_y# - v2_y#
    		aa_z# = v3_z# - v2_z#
    		bb_x# = v2_x# - v1_x#
    		bb_y# = v2_y# - v1_y#
    		bb_z# = v2_z# - v1_z#
    		norm_x# = aa_y# * bb_z# - aa_z# * bb_y#
    		norm_y# = aa_z# * bb_x# - aa_x# * bb_z#
    		norm_z# = aa_x# * bb_y# - aa_y# * bb_x#
    		normlight_x# = (v1_x# + v2_x# + v3_x#) / 3 - light_x#
    		normlight_y# = (v1_y# + v2_y# + v3_y#) / 3 - light_y#
    		normlight_z# = (v1_z# + v2_z# + v3_z#) / 3 - light_z#
    		If (norm_x# * normlight_x# + norm_y# * normlight_y# + norm_z# * normlight_z#) * (1.0 / Float(Sqr(norm_x# * norm_x# + norm_y# * norm_y# + norm_z# * norm_z#))) * (1.0 / Float(Sqr(normlight_x# * normlight_x# + normlight_y# * normlight_y# + normlight_z# * normlight_z#))) => 0 Then
    			Edge(CNTFront, 0) = surf
    			Edge(CNTFront, 1) = tri
    			Edge(CNTFront, 2) = v1_x#
    			Edge(CNTFront, 3) = v1_y#
    			Edge(CNTFront, 4) = v1_z#
    			Edge(CNTFront, 5) = v2_x#
    			Edge(CNTFront, 6) = v2_y#
    			Edge(CNTFront, 7) = v2_z#
    			CNTFront = CNTFront + 1
    			Edge(CNTFront, 0) = surf
    			Edge(CNTFront, 1) = tri
    			Edge(CNTFront, 2) = v2_x#
    			Edge(CNTFront, 3) = v2_y#
    			Edge(CNTFront, 4) = v2_z#
    			Edge(CNTFront, 5) = v3_x#
    			Edge(CNTFront, 6) = v3_y#
    			Edge(CNTFront, 7) = v3_z#
    			CNTFront = CNTFront + 1
    			Edge(CNTFront, 0) = surf
    			Edge(CNTFront, 1) = tri
    			Edge(CNTFront, 2) = v3_x#
    			Edge(CNTFront, 3) = v3_y#
    			Edge(CNTFront, 4) = v3_z#
    			Edge(CNTFront, 5) = v1_x#
    			Edge(CNTFront, 6) = v1_y#
    			Edge(CNTFront, 7) = v1_z#
    			CNTFront = CNTFront + 1
    		EndIf
    	Next
    Next
    For a = 0 To CNTFront
    	If Edge(a, 0) > 0 Then
    		Diverso = True
    		p0_x# = Edge(a, 2)
    		p0_y# = Edge(a, 3)
    		p0_z# = Edge(a, 4)
    		p1_x# = Edge(a, 5)
    		p1_y# = Edge(a, 6)
    		p1_z# = Edge(a, 7)
    		For b = a + 1 To CNTFront
    			p0_2_x# = Edge(b, 2)
    			p0_2_y# = Edge(b, 3)
    			p0_2_z# = Edge(b, 4)
    			p1_2_x# = Edge(b, 5)
    			p1_2_y# = Edge(b, 6)
    			p1_2_z# = Edge(b, 7)
    			If Edge(b, 0) > 0 Then
    				If (p0_x# = p0_2_x# And p0_y# = p0_2_y# And p0_z# = p0_2_z# And p1_x# = p1_2_x# And p1_y# = p1_2_y# And p1_z# = p1_2_z#) = False Then
    					If p0_x# = p1_2_x# And p0_y# = p1_2_y# And p0_z# = p1_2_z# And p1_x# = p0_2_x# And p1_y# = p0_2_y# And p1_z# = p0_2_z# Then
    						Edge(a, 0) = surf = 0
    						Edge(b, 0) = surf = 0
    						Diverso = False
    						Exit
    					EndIf
    				EndIf
    			EndIf
    		Next
    		If Diverso Then
    			pe0_x# = p0_x# - light_x#
    			pe0_y# = p0_y# - light_y#
    			pe0_z# = p0_z# - light_z#
    			do# = 1.0 / Float(Sqr(pe0_x# * pe0_x# + pe0_y# * pe0_y# + pe0_z# * pe0_z#))
    			pe0_x# = pe0_x# * do# * volume_lenght + p0_x#
    			pe0_y# = pe0_y# * do# * volume_lenght + p0_y#
    			pe0_z# = pe0_z# * do# * volume_lenght + p0_z#
    			pe1_x# = (p1_x# - light_x#) * volume_lenght + p1_x#
    			pe1_y# = (p1_y# - light_y#) * volume_lenght + p1_y#
    			pe1_z# = (p1_z# - light_z#) * volume_lenght + p1_z#
    			va = AddVertex(VolumeSurface, p0_x#, p0_y#, p0_z#)
    			vb = AddVertex(VolumeSurface, pe1_x#, pe1_y#, pe1_z#)
    			AddTriangle(VolumeSurface, va, AddVertex(VolumeSurface, pe0_x#, pe0_y#, pe0_z#), vb)
    			AddTriangle(VolumeSurface, va, vb, AddVertex(VolumeSurface, p1_x#, p1_y#, p1_z#))
    			Edge(a, 0) = 0
    		EndIf
    	EndIf
    Next
    Return VolumeMesh
    End Function
    Lo importante aquí comprender es que Blitz3D es como un automóvil de ciudad, tiene un fin que es transportarnos, pero el problema es cuando lo comparamos con un formula uno, y nos machacamos los huevos pensando que el otro es mejor, pero si bien es cierto que es fácil de manejar, toco profundizar en ciertos temas.

    Bueno no se que más decir, usa la técnica del Tewwn y el capturaworld por Dios!!

    Un saludo.

    "Blitz3D te enseña a pensar como programador y no ser un usuario de software de desarrollo"
    "No son ni estrellas ni ídolos, son solo gente común que quiere hacer historia"

  2. #32
    Senior Member Avatar de Yue
    Fecha de ingreso
    May 2008
    Ubicación
    Bogotá
    Mensajes
    634

    Re: Ayuda con Directx 7

    Blur motion.
    Código:
    ;14 real-time 3D motion blur FX presets by Matt Merkulov
    
    ; The size of a structure, number of effect, the order of a portrayal(-1 or 1)
    Const texsize=1024, fx=7, o =-1
    
    Graphics3D 800,600,32
    
    cam=CreateCamera()
    PositionEntity cam, 0,0,-6
    RotateEntity CreateLight(), 45,0,0
    
    ; Creation of a stage
    cube=CreateCube()
    EntityColor cube, 255,128,0
    cone1=CreateCone(20)
    EntityColor cone1,0,255,255
    PositionEntity cone1,-4,0,0
    cone2=CreateCone(20)
    EntityColor cone2,0,255,0
    PositionEntity cone2,4,0,0
    p=CreatePivot()
    sph=CreateSphere(20, p)
    PositionEntity sph, 0,0,-4
    
    Select fx
    	Case 1:bl=createblurlayer(cam, 1,0,1,1, .95,1, o)
    	Case 2:bl=createblurlayer(cam, 1,0,1, .97,1,3, o)
    	Case 3:bl=createblurlayer(cam, 1, .2,1.02, .97,1,3, o)
    	Case 4:bl=createblurlayer(cam, 1,0,1.01,1, .95,1, o)
    	Case 5
    		bl=createblurlayer(cam, 1,0,1.01,1, .9,1, o)
    		EntityColor bl, 240,255,225
    	Case 6
    		bl=createblurlayer(cam, 1.1,0,1,1, .95,1, o)
    		RotateEntity bl, 1,1,0
    	Case 7
    		bl=createblurlayer(cam, 1.01,1,1,1, .9,1, o)
    		bl2=createblurlayer(cam, 1.02,-1,1,1, .8,1, o)
    End Select
    
    SetBuffer BackBuffer()
    While Not KeyHit(1)
    	TurnEntity cube, .1, .2, .3
    	TurnEntity p, .55, .35, .2
    	RenderWorld
    	bltex=updateblurlayer(bl, bltex)
    	If bl2 Then EntityTexture bl2, bltex
    	If fx=4 Then PositionEntity bl, Rnd(-.01, .01), Rnd(-.01, .01), 1
    	Flip
    Wend
    
    ; Function of creation of a layer of the degradation adhered to the chamber - returns the address of a layer
    Function createblurlayer(cam, z#, ang#, mgn#, bright#, alpha#, bmode, ord)
    	Local xres=GraphicsWidth()
    	Local yres=GraphicsHeight()
    	layer=CreateMesh(cam)
    	s=CreateSurface(layer)
    ; Calculation of coordinates of a structure
    	vx#= 1.0*xres/texsize
    	vy#= 1.0*yres/texsize
    	AddVertex s,-1,-1,0,0,0
    	AddVertex s, 1,-1,0, vx#, 0
    	AddVertex s,-1,1,0,0, vy#
    	AddVertex s, 1,1,0, vx#, vy#
    	AddTriangle s, 0,1,2
    	AddTriangle s, 3,2,1
    ; Definition of sizes for installation of a rectangular directly in front of the chamber by
    ; Calculations of screen coordinates of a point of the three-dimensional world
    	PositionEntity layer, 1,1, z#
    	CameraProject cam, EntityX(layer, True), EntityY(layer, True), EntityZ(layer, True)
    	rx#= ProjectedX#()-.5*xres
    	ry#= ProjectedY#()-.5*yres
    ; Scaling a layer
    	ScaleMesh layer, .5*xres/rx#,.5*yres/ry#, 1
    ; Sdlvig a rectangular on polpiksela to the left-upwards that it(he) was in the center of the screen
    	PositionEntity layer,-.5/rx#,-.5/ry#, z#
    	RotateEntity layer, 0,0, ang#
    ; The tasque of effects of a layer
    	ScaleEntity layer, mgn#, mgn#, mgn#
    	EntityAlpha layer, alpha#
    	EntityBlend layer, bmode
    	col=255*bright#
    	EntityColor layer, col, col, col
    	EntityFX layer, 1
    	EntityOrder layer, ord
    	Return layer
    End Function
    
    ; Function of updating of a layer(returns the address of a structure)
    ; It is necessary to cause each time after RenderWorld
    Function updateblurlayer(layer, tex)
    	If tex=0 Then tex=CreateTexture(texsize, texsize)
    	EntityTexture layer, tex
    	CopyRect 0,0, GraphicsWidth(), GraphicsHeight(), 0,0, BackBuffer(), TextureBuffer(tex)
    	Return tex
    End Function
    "No son ni estrellas ni ídolos, son solo gente común que quiere hacer historia"

  3. #33
    Expulsado
    Fecha de ingreso
    Dec 2010
    Ubicación
    En matrix
    Mensajes
    1,681

    Re: Ayuda con Directx 7

    Si perdona me confundí con lo de ortográficas,...

    Bueno gracias por los códigos , ) en un ratito los investigo y a ver que saco.

    edito: (ya los conocía los 3 códigos del otro hilo...pero gracias igualmente sobre todo por recordarme las volumétricas...a ver si logro algo con las directx o no)
    Última edición por aprendiz; 04-02-2012 a las 21:17

  4. #34
    Senior Member Avatar de Yue
    Fecha de ingreso
    May 2008
    Ubicación
    Bogotá
    Mensajes
    634

    Re: Ayuda con Directx 7

    Agua.
    Código:
    lobal fxWATER_MAX = 5				;max number of active surfaces/effects at one time
    Global fxWATER_NUM = 0				;current number of active water effects.
    
    Global FXWATER_MAX_WIDTH = 100		;max sub-división for water meshes
    Global FXWATER_MAX_DEPTH = 100		;max sub-división for water meshes
    
    Global FXWATER_MAX_BANKS = fxWATER_MAX * 2
    Global FXWATER_NUM_BANKS = 0
    
    Global DEMO_WATER_WIDTH	 = 40 	;--> Adjust these for different plane sizes / mesh resolution
    Global DEMO_WATER_DEPTH = 40
    
    ;reserve memory banks for vértice altitudes
    Dim fxWaterBank#(FXWATER_MAX_BANKS, FXWATER_MAX_WIDTH, FXWATER_MAX_DEPTH )
    
    Type fxWaterWave
    	
    	Field id
    	Field name$
    	
    	Field active		;if not ripples then fx is not actiave
    	
    	Field parent		;parent entity (if any)
    	Field entity		;water mesh
    	Field surface		;water surface
    	
    	Field bank1			;pointers to array for mem storage
    	Field bank2
    	
    	Field width			;width of plane / surface
    	Field depth			;depth of plane / surface
    	Field dampening#	;water dynamics
    	
    End Type
    
    ;Demo options
    Global OPT_WIREFRAME = 0
    Global OPT_REFRSH 	 = 0
    Global OPT_BALLFREEZE= 0
    Global OPT_CEILING	 = 1
    
    ;--------------------------------------------------------------------------------------------------
    
    ;Graphics3D 640,480,32,1
    Graphics3D 640,480,0,2
    
    ; Camera + Light
    Global campivot = CreatePivot()
    Global camera = CreateCamera(campivot)
    
    PositionEntity camera, 0, 0, -35
    PointEntity camera, campivot
    
    light = CreateLight(2)
    PositionEntity light,-60,0,100
    LightColor light,240,240,210
    PointEntity light, campivot
    
    light = CreateLight(2)
    PositionEntity light,50,0,-50
    LightColor light,150,150,180
    PointEntity light, campivot
    
    AmbientLight 40,40,40
    
    ;load texture
    ;tex = LoadTexture ("water.tga",1+64)
    tex = create_noise_map()
    
    ;create water planes
    Global w1 = fxWater_Create( "floor", DEMO_WATER_WIDTH, DEMO_WATER_DEPTH, 0.025 )
    water = fxWater_get_entity( w1 )
    PositionEntity water, 0, -10, 0
    EntityColor water, 30,50,200
    EntityShininess water, 0.1
    EntityTexture water,tex
    
    Global w2 = fxWater_Create( "ceiling", DEMO_WATER_WIDTH, DEMO_WATER_DEPTH, 0.025 )
    water = fxWater_get_entity( w2 )
    FlipMesh water ; flip it because the camera is underneath it
    PositionEntity water, 0, 10, 0
    EntityColor water, 250,100,100
    EntityColor water, 140,130,20
    EntityShininess water, 0.1
    EntityTexture water,tex
    
    ;force refresh
    fxWater_Dimple( w1, 1,1, 0.001, 0.001)
    fxWater_Dimple( w2, 1,1, 0.001, 0.001)
    
    ;set random ball direction/speed
    Global bx#= 0.2
    Global by#= -1.75
    Global bz#= -0.25
    
    Global bmaxx# = DEMO_WATER_WIDTH * 0.5	;half the width of the water plane
    Global bmaxy# = 10.0
    Global bmaxz# = DEMO_WATER_DEPTH * 0.5	;half the depth of the water plane
    
    ;create ball
    ball = CreateSphere(6)
    EntityColor ball, 0,0,0
    EntityShininess ball, 1.0
    EntityTexture ball, tex
    
    SeedRnd MilliSecs()
    
    ; Main Loop
    tstart = MilliSecs() + 1000
    frame = 0
    
    Global lastx# = 0
    Global lasty# = 0
    Global lastz# = 0
    
    tim = CreateTimer(50)
    
    l$ = "WavyWaterFx by Danny van der Ark"
    
    While Not KeyHit(1)
    	
    	;update bouncing ball
    	update_ball( ball )
    	
    	;update fxWater
    	fxWater_update()
    	
    	;render
     UpdateWorld
     RenderWorld
    	
    	;debug
    	Color 000,000,000
    	Text 2,1, l$
    	Color 255,255,255
    	Text 2,0, l$
    	Color 100,100,100
    	Text 2,12, "based on samples from Reda Borchardt And Rob Cummings."
    	Color 20,140,255
    	Text 2,454, "[ESC] to quit - [D] for fast but dirty refresh(" + OPT_REFRESH + ") - [W] To toggle WireFrame (" + OPT_WIREFRAME + ")"
    	Text 2,466, "[P] To pause - [B] to pause/reset ball - [C] to toggle ceiling"
    	Color 250,250,220
    	Text 10,220,"FPS " + fps
    	Text 10,232,"TRIS " + TrisRendered()
    	
    	;orbit camera
    	;TurnEntity campivot, 0, 0.25, 0
    	
    	;chek fps
    	frame = frame + 1
    	If MilliSecs() >= tstart Then
    		fps = frame
    		frame = 0
    		tstart = MilliSecs() + 1000
    	EndIf
    	
    	;toggle ceiling [C]
    	If KeyHit(46) Then
    		OPT_CEILING = 1 - OPT_CEILING
    		If OPT_CEILING Then
    			water = fxWater_get_entity(w2)
    			ShowEntity water
    		Else
    			water = fxWater_get_entity(w2)
    			HideEntity water
    		EndIf
    	EndIf
    	
    	;pause all [P]
    	If KeyHit(25) Then
    		FlushKeys
    		While Not KeyHit(25) Wend
    	EndIf
    	
    	;pause ball [B]
    	If KeyHit(48) Then
    		OPT_BALLFREEZE = 1 - OPT_BALLFREEZE
    		If OPT_BALLFREEZE Then
    			PositionEntity ball, 0,0,0
    			bx# = 0
    			by# = 0
    			bz# = 0
    		Else
    			bx#=Rnd#(-1,1)
    			by#=Rnd#(-2,2)
    			bz#=Rnd#(-1,1)
    		EndIf
    	EndIf
    	
    	;wireframe [W]
    	If KeyHit(17) Then
    		OPT_WIREFRAME = 1 - OPT_WIREFRAME
    		WireFrame OPT_WIREFRAME
    	EndIf
    	
    	;Dirty refresh [D]
    	If KeyHit(32) Then
    		OPT_REFRESH = 1 - OPT_REFRESH
    	EndIf	
    	
    	;chek refresh mode
    	If OPT_REFRESH Then
    		;fast and dirty (pot noodle style)
    	 Flip False
    	Else
    		;slow but clean
    		Flip True
    		WaitTimer(tim)
    	EndIf
    	
    	If MouseHit(1) Then
    		x = Rnd(1,DEMO_WATER_WIDTH)
    		z = Rnd(1,DEMO_WATER_DEPTH)
    		fxWater_Dimple( w1, x, z, 1, 5)
    	EndIf
    Wend
    
    End
    
    ;--------------------------------------------------------------------------------------------------
    
    Function update_ball( ent )
    	
    	;move the ball
    	TranslateEntity ent, bx,by,bz
    	
    	DoDimple = False
    	
    	;chek left/right walls
    	If EntityX#(ent) > bmaxx-2 Then bx# = bx# * -1
    	If EntityX#(ent) < -bmaxx+2 Then bx# = bx# * -1
    	
    	;chek ceiling bounce
    	If EntityY#(ent) > bmaxy-2 Then
    		;reverse vertical direction
    		by# = by# * -1.0
    		;create dimple
    		fxWater_Dimple(w2, EntityX(ent)+bmaxx,EntityZ(ent)+bmaxz, -1.0, 5.0)
    		;slightly alter direction
    		bx# = bx# + Rnd#(-0.25, 0.25)
    		bz# = bz# + Rnd#(-0.25, 0.25)
    	EndIf
    	
    	;chek floor bounce
    	If EntityY#(ent) < -bmaxy+2 Then
    		;reverse vertical direction
    		by# = by# * -1.0
    		;create dimple
    		fxWater_Dimple(w1, EntityX(ent)+bmaxx,EntityZ(ent)+bmaxz, 1.0, 5.0)
    		;slightly alter direction
    		bx# = bx# + Rnd#(-0.25, 0.25)
    		bz# = bz# + Rnd#(-0.25, 0.25)
    	EndIf
    	
    	;chek front/bak walls
    	If EntityZ#(ent) > bmaxz-2 Then bz# = bz# * -1
    	If EntityZ#(ent) < -bmaxz+2 Then bz# = bz# * -1
    	
    End Function
    
    ;--------------------------------------------------------------------------------------------------
    
    Function fxWater_Create( name$="", width=1, depth=1, damp#=0.01, parent=0 )
    	
    	
    	;create new Wavy water effect plane
    	w.fxWaterWave = New fxWaterWave
    	
    	w\id		= 1
    	w\name$		= name$
    	
    	w\active	= True
    	
    	;create rectangular grid mesh
    	w\width		= width
    	w\depth		= depth
    	w\dampening#= 1 - damp#
    	
    	w\parent	= parent
    	w\entity	= create_mesh_plane( w\width, w\depth, False, parent )
    	w\surface	= GetSurface(w\entity,1)
    	
    	;store handle for quik retrieval during collision
    	NameEntity w\entity, Handle(w)
    	
    	;reserve memory banks to hold vertex energy
    	w\bank1		= fxWater_Create_Buffer()
    	w\bank2		= fxWater_Create_Buffer()
    	
    	;return mesh handle
    	Return Handle(w)
    	
    End Function
    
    ;--------------------------------------------------------------------------------------------------
    
    Function fxWater_update()
    	
    	For w.fxWaterWave = Each fxWaterWave
    		
    		;if the surface is perfectly flat then this value remains 0
    		dyna# = 0
    		
    		;process water
    	 For x = 1 To w\width-1
    	 For z = 1 To w\depth-1
    				fxWaterBank#(w\bank2,x,z) = (fxWaterBank#(w\bank1,x-1,z) + fxWaterBank#(w\bank1,x+1,z) + fxWaterBank#(w\bank1,x,z+1) + fxWaterBank#(w\bank1,x,z-1)) / 2.1-fxWaterBank#(w\bank2,x,z) 
    				fxWaterBank#(w\bank2,x,z) = fxWaterBank#(w\bank2,x,z) * w\dampening#
    				dyna# = dyna# + fxWaterBank#(w\bank2,x,z)
    	 Next
    	 Next
    		
    		;Only deform patch if necesary
    		If dyna# <> 0 Then
    		 ;PatchTransform
    			k=0
    			For i = 0 To w\depth
    		 For j = 0 To w\width
    					VertexCoords(w\surface,k,VertexX(w\surface,k),fxWaterBank#(w\bank2,j,i),VertexZ(w\surface,k))
    		 k=k+1
    		 Next
    		 Next
    		EndIf
    		
    		;should be optional - depending on type of texture (slows down seriously!)
    		UpdateNormals w\entity
    		
    	 ;SwapWaterBuffer
    		tmp = w\bank1
    		w\bank1 = w\bank2
    		w\bank2 = tmp
    		
    	Next
    	
    End Function
    
    ;--------------------------------------------------------------------------------------------------
    
    Function fxWater_Dimple( hand, x,z, force#=1.0, range#=1.0)
    	
    	w.fxWaterWave = Object.fxWaterWave(hand)
    	
    	For xg = x - range# * 0.5 To x+range# * 0.5
    		For zg = z - range# * 0.5 To z+range# * 0.5
    			If xg> 0 And xg < w\width And zg>0 And zg<w\depth Then
    				fxWaterBank#(w\bank2, xg,zg) = force#
    			EndIf
    		Next
    	Next
    	
    End Function
    
    ;--------------------------------------------------------------------------------------------------
    
    Function fxWater_get_surface( hand )
    	
    	w.fxWaterWave = Object.fxWaterWave( hand )
    	Return w\surface
    	
    End Function
    
    ;--------------------------------------------------------------------------------------------------
    
    Function fxWater_get_entity( hand )
    	
    	w.fxWaterWave = Object.fxWaterWave( hand )
    	Return w\entity
    	
    End Function
    
    ;--------------------------------------------------------------------------------------------------
    
    Function fxWater_Create_Buffer() ; xsize=1, zsize=1 )
    	
    	If FXWATER_NUM_BANKS >= FXWATER_MAX_BANKS Then 
    		RuntimeError "[fxWater::Create_buffer] Max amount of fxWater memory banks reached!"
    	Else
    		;create a new memory banque and resize it to fit
    		FXWATER_NUM_BANKS = FXWATER_NUM_BANKS + 1
    		;NOTE: convert array into memory bank
    	EndIf
    	
    	Return FXWATER_NUM_BANKS
    	
    End Function
    
    ;--------------------------------------------------------------------------------------------------
    
    Function fxWater_Free_Buffers( )
    	
    ;| Frees all buffers. Call as a part of when scene/level is removed from memory.
    	
    	
    	;NOTE: resize memory banks to 0 (once implemented).
    	
    	Return 0
    	
    End Function
    
    ;--------------------------------------------------------------------------------------------------
    
    ;Creates a flat grid mesh
    Function create_mesh_plane(width=1,depth=1,doublesided=False,parent=0)
    	
    	tot = width + (depth*width)
    	mix#= (width+depth) * 0.5
    	
    	mesh=CreateMesh( parent )
    	surf=CreateSurface( mesh )
    	
    	stx#=-.5
    	sty#=stx
    	stp#=Float(1)/Float(mix#)
    	y#=sty#
    	
    	For a=0 To depth
    		x#=stx
    		v#=a/Float(depth)
    		
    		For b=0 To width
    			u#=b/Float(width)
    			AddVertex(surf,x,0,y,u,v)
    			x=x+stp
    		Next
    		y=y+stp
    	Next
    	
    	For a=0 To depth-1
    		For b=0 To width-1
    			v0=a*(width+1)+b:v1=v0+1
    			v2=(a+1)*(width+1)+b+1:v3=v2-1
    			AddTriangle( surf,v0,v2,v1 )
    			AddTriangle( surf,v0,v3,v2 )
    		Next
    	Next
    	
    	UpdateNormals mesh
    	
    	If doublesided=True Then EntityFX mesh,16
    	
    	FitMesh mesh, -width*0.5, 0, -depth*0.5, width, 1, depth
    	
    	Return mesh
    	
    	
    End Function
    
    ;--------------------------------------------------------------------------------------------------
    
    Function create_noise_map()
    	
    ; creates a noise map to be used as a generic reflection map
    	
    	sque = 128
    	
    	tex = CreateTexture(sq,sq,65,1)
    	tbuf = TextureBuffer(tex)
    	SetBuffer(tbuf)
    	
    	For x = 0 To sq-1
    		For y = 0 To sq-1
    			r = Rnd(100,120)
    			g = Rnd(100,130)
    			b = Rnd(190,240)
    			Color r,g,b
    			Rect x,y,1,1
    		Next
    	Next	
    	
    	SetBuffer(BackBuffer())
    	
    	Return tex
    	
    End Function
    "No son ni estrellas ni ídolos, son solo gente común que quiere hacer historia"

  5. #35
    Senior Member Avatar de Yue
    Fecha de ingreso
    May 2008
    Ubicación
    Bogotá
    Mensajes
    634

    Re: Ayuda con Directx 7

    Código:
    ; tweening const & variables
    Const FPS=60 ; si pones 10 todo ira más lento.
    Global period=1000/FPS
    Global time=MilliSecs()-period
    
    ; main loop with classic tweening
    While Not KeyHit(1)
    
    	Repeat : elapsed = MilliSecs() - time : Until elapsed
    	ticks = elapsed / period
    	tween# = Float(elapsed Mod period) / Float(period)
    	For k=1 To ticks
    		time = time + period
    		If que = ticks Then CaptureWorld
    		UpdateGame ; Si un cubo hace personaje, sus movimientos van aquí.
     ; Junto con enemigos, etc.
    		UpdateWorld
    	Next
    
    	
    	RenderWorld tween
    
    	Flip 1
    Wend
    "No son ni estrellas ni ídolos, son solo gente común que quiere hacer historia"

  6. #36
    Expulsado
    Fecha de ingreso
    Dec 2010
    Ubicación
    En matrix
    Mensajes
    1,681

    Re: Ayuda con Directx 7

    Ese código de agua fue el que modifiqué para crear la barrera laser de mi último juego,

    Me costó entenderlo bastante, pero es muy interesante.

    Si tienes algo sobre .dll mejor que mejor Blitz3D y gracias por toda la ayuda.

  7. #37
    Senior Member Avatar de Yue
    Fecha de ingreso
    May 2008
    Ubicación
    Bogotá
    Mensajes
    634

    Re: Ayuda con Directx 7

    Bueno, lo que te puedo recomendar es usar ashadow, o en tal caso una biblioteca llamada DEvil que hace lo mismo. ya te paso los enlaces.
    "No son ni estrellas ni ídolos, son solo gente común que quiere hacer historia"

  8. #38
    Senior Member Avatar de Yue
    Fecha de ingreso
    May 2008
    Ubicación
    Bogotá
    Mensajes
    634

    Re: Ayuda con Directx 7

    http://devil-engines.dev-ch.de/

    Encontraras dll, que te dan funciones para crear sombras volumetricas, y un montón de cosas mas.

    Un saludo.
    "No son ni estrellas ni ídolos, son solo gente común que quiere hacer historia"

  9. #39
    Senior Member Avatar de Yue
    Fecha de ingreso
    May 2008
    Ubicación
    Bogotá
    Mensajes
    634

    Re: Ayuda con Directx 7

    algo para leer. xD
    http://en.wikipedia.org/wiki/Shadow_volume#Depth_fail

    ha lo olvidada la web oficial de Ashadow.
    http://andreyman.ucoz.ru/

    Un saludo y todo por hoy.
    Última edición por Yue; 04-02-2012 a las 21:52
    "No son ni estrellas ni ídolos, son solo gente común que quiere hacer historia"

  10. #40
    Senior Member Avatar de Yue
    Fecha de ingreso
    May 2008
    Ubicación
    Bogotá
    Mensajes
    634

    Re: Ayuda con Directx 7

    Sombras Simples. (Shadow Map)


    Un saludo.
    "No son ni estrellas ni ídolos, son solo gente común que quiere hacer historia"

  11. #41
    Expulsado
    Fecha de ingreso
    Dec 2010
    Ubicación
    En matrix
    Mensajes
    1,681

    Re: Ayuda con Directx 7

    Eso que son sombras cartográficas?

    O es otro tipo de sombra que no es ni cartográfica ni volumetrica?

  12. #42
    Senior Member Avatar de Yue
    Fecha de ingreso
    May 2008
    Ubicación
    Bogotá
    Mensajes
    634

    Re: Ayuda con Directx 7

    Es ShadowMap (Cartográficas).
    "No son ni estrellas ni ídolos, son solo gente común que quiere hacer historia"

  13. #43
    Expulsado
    Fecha de ingreso
    Dec 2010
    Ubicación
    En matrix
    Mensajes
    1,681

    Re: Ayuda con Directx 7

    Pues ese tipo de sombra lo se implementar, de echo lo he puesto en varios juegos.

    Los problemas que tengo con esas sombras son muchos:

    aun usando twenn para renderizar, las fps bajan mucho
    las sombras no cubren cualquier distancia, si no que dependen del tamaño de la textura que cubre el escenario, y cuanto más amplia sea la zona, más pixelada queda la sombra.
    también solo permiten sombra en una única direción, como si fuera la luz del sol, por lo que al usar una luz foco no queda realista.

  14. #44
    Senior Member Avatar de Yue
    Fecha de ingreso
    May 2008
    Ubicación
    Bogotá
    Mensajes
    634

    Re: Ayuda con Directx 7

    Mira no se si abras jugado GTA SA, donde las sombras de los coches en nivel de detalle bajo aparecen de esa manera, aquí esplica todo sobre este tipo http://en.wikipedia.org/wiki/Shadow_mapping

    El caso es que solo se renderiza lo que tenemos en pantalla y solo es cuestión de implementarlas correctamente, ahora bien si queremos alargar la distancia usamos dos texturas, una para el lumbral más allá y esta es de menor calidad.

    A este tipo de sombra se le puede aplicar Blur.

    edit: además ten en cuenta que la cámara sige al protagonista, y solo se aplica a modelos dinamicos, ya para estáticos podemos usar mapas de sombras estáticos, y usamos el desvanecimiento para otros objetos.
    Miniaturas adjuntadas Miniaturas adjuntadas ayuda con Directx 7-sahdowblur.jpg  
    "No son ni estrellas ni ídolos, son solo gente común que quiere hacer historia"

  15. #45
    Senior Member Avatar de Yue
    Fecha de ingreso
    May 2008
    Ubicación
    Bogotá
    Mensajes
    634

    Re: Ayuda con Directx 7

    Sobre el FPS si miras en el video va a 14 marcos por segundo, sin embargo me va bien, ya que el FRaps baja un poco.

    http://en.wikipedia.org/wiki/Shadow_mapping
    http://en.wikipedia.org/wiki/Shadow_volume
    "No son ni estrellas ni ídolos, son solo gente común que quiere hacer historia"

Página 3 de 5 PrimerPrimer 12345 ÚltimoÚltimo

Temas similares

  1. duda de Directx
    Por MAYAMAN en el foro Videojuegos
    Respuestas: 10
    Último mensaje: 22-05-2010, 18:55
  2. open gl y directx
    Por MAYAMAN en el foro Videojuegos
    Respuestas: 3
    Último mensaje: 28-04-2010, 17:09
  3. problemas con MaX, vue y el directx 10
    Por MRV en el foro Discusiones generales
    Respuestas: 0
    Último mensaje: 19-11-2008, 22:17
  4. Directx 9 0c mas max 2008=kk
    Por vertice3d en el foro Problemas con Programas
    Respuestas: 0
    Último mensaje: 25-06-2008, 13:35
  5. DirectX
    Por nelsonadri en el foro Videojuegos
    Respuestas: 3
    Último mensaje: 02-02-2008, 00:32

Actualmente estos son sus permisos de publicación en el foro.

  • -No puedes crear nuevos temas al no estar registrado o no haber iniciado sesión en el foro.
  • -No puedes responder temas al no estar registrado o no haber iniciado sesión en el foro.
  • -No puedes subir archivos adjuntos al no estar registrado o no haber iniciado sesión en el foro.
  • -No puedes editar tus mensajes al no estar registrado o no haber iniciado sesión en el foro.
  •