Schildeffekt

Übersicht BlitzBasic Codearchiv

Neue Antwort erstellen

Mr.Keks

Betreff: Schildeffekt

BeitragSo, März 21, 2004 19:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Habe hier gerade so einen tollen Schildeffekt Smile. (Einfach auf die Kugel klicken...)
Sieht mit Texture noch um einiges besser aus.
BlitzBasic: [AUSKLAPPEN]
Graphics3D 640,480,16,2
SetBuffer BackBuffer()
campiv=CreatePivot()
camera=CreateCamera(campiv)
light=CreateLight()
PositionEntity camera,0,0,-5
RotateEntity light,90,0,0

mesh = CreateSphere(12)
CreateCube(mesh)
ScaleMesh mesh,2,1.5,2
surface = GetSurface(mesh,1)
EntityFX mesh,32 + 2
EntityBlend mesh,3
EntityColor mesh,200,140,150

For i = 0 To CountVertices(surface)
VertexColor surface,i,150,200,300,0
Next

;stex = LoadTexture("schild.bmp")
;EntityTexture mesh,stex,0
;ScaleTexture stex,.6,.6

EntityPickMode mesh,2,1

While Not KeyHit(1)
;PositionTexture stex,MilliSecs()/10000.00,MilliSecs()/5000.00
If MouseHit(1)
If CameraPick(camera,MouseX(),MouseY())
shieldeffect(PickedEntity(),PickedSurface(),PickedX(),PickedY(),PickedZ())
EndIf
EndIf
TurnEntity campiv,.3,.3,.3
RenderWorld
updateshield(mesh,surface)
Flip
Wend
End

Function shieldeffect(mesh,surface,x#,y#,z#)
For i = 0 To CountVertices(surface)
alpha# = 1/CoorDist#(VertexX(surface,i),VertexY(surface,i),VertexZ(surface,i),x,y,z)
VertexColor surface,i,VertexRed(surface,i),VertexGreen(surface,i),VertexBlue(surface,i),alpha#
Next
End Function

Function updateshield(mesh,surface)
For i = 0 To CountVertices(surface)
VertexColor surface,i,VertexRed(surface,i),VertexGreen(surface,i),VertexBlue(surface,i),VertexAlpha(surface,i)*.99
Next
End Function

Function CoorDist#(x1#,y1#,z1#,x2#,y2#,z2#)
abstand# = Sqr(((x1-x2)^2)+((y1-y2)^2)+((z1-z2)^2))
Return abstand#
End Function
MrKeks.net

Travis

BeitragSo, März 21, 2004 20:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Vertex index out of range!
www.funforge.org

Ich hasse WASD-Steuerung.

Man kann alles sagen, man muss es nur vernünftig begründen können.

Mr.Keks

BeitragSo, März 21, 2004 20:21
Antworten mit Zitat
Benutzer-Profile anzeigen
och hatte ganz vergessen, dass der bbdebugger es als fehlerankreidet, wenn man einen vertex zuviel versucht durchzugehen, was nur an der rückgabe des counts liegt =)

das folgende geht auch mit aktiviertem debugger...
BlitzBasic: [AUSKLAPPEN]
Graphics3D 640,480,16,2 
SetBuffer BackBuffer()
campiv=CreatePivot()
camera=CreateCamera(campiv)
light=CreateLight()
PositionEntity camera,0,0,-5
RotateEntity light,90,0,0

mesh = CreateSphere(12)
CreateCube(mesh)
ScaleMesh mesh,2,1.5,2
surface = GetSurface(mesh,1)
EntityFX mesh,32 + 2
EntityBlend mesh,3
EntityColor mesh,200,140,150

For i = 0 To CountVertices(surface) -1
VertexColor surface,i,150,200,300,0
Next

;stex = LoadTexture("schild.bmp")
;EntityTexture mesh,stex,0
;ScaleTexture stex,.6,.6

EntityPickMode mesh,2,1

While Not KeyHit(1)
;PositionTexture stex,MilliSecs()/10000.00,MilliSecs()/5000.00
If MouseHit(1)
If CameraPick(camera,MouseX(),MouseY())
shieldeffect(PickedEntity(),PickedSurface(),PickedX(),PickedY(),PickedZ())
EndIf
EndIf
TurnEntity campiv,.3,.3,.3
RenderWorld
updateshield(mesh,surface)
Flip
Wend
End

Function shieldeffect(mesh,surface,x#,y#,z#)
For i = 0 To CountVertices(surface) -1
alpha# = 1/CoorDist#(VertexX(surface,i),VertexY(surface,i),VertexZ(surface,i),x,y,z)
VertexColor surface,i,VertexRed(surface,i),VertexGreen(surface,i),VertexBlue(surface,i),alpha#
Next
End Function

Function updateshield(mesh,surface)
For i = 0 To CountVertices(surface) -1
VertexColor surface,i,VertexRed(surface,i),VertexGreen(surface,i),VertexBlue(surface,i),VertexAlpha(surface,i)*.99
Next
End Function

Function CoorDist#(x1#,y1#,z1#,x2#,y2#,z2#)
abstand# = Sqr(((x1-x2)^2)+((y1-y2)^2)+((z1-z2)^2))
Return abstand#
End Function
MrKeks.net
 

x.Force

BeitragSo, März 21, 2004 21:48
Antworten mit Zitat
Benutzer-Profile anzeigen
sieht gut aus Wink

AMD Athlon XP 2000+ | 1024mb DDR-Ram | Asus Radeon 9600XT | BENQ FP757 17°Zoll TFT

Was kümmert mich mein Geschwätz von gestern? (Konrad Adenauer) -.-
 

CodeMaster

BeitragSo, März 21, 2004 23:04
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja sieht sehr geil aus!
Dies ist ein Text, der an jeden Beitrag von dir angehängt werden kann. Es besteht eine Limit von 500 Buchstaben.

Zuletzt bearbeitet von CodeMaster am Mo Apr 01, Parse error: syntax error, unexpected ';' in htdocs\viewtopic.php on line 102
 

c64

BeitragMo, März 22, 2004 12:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Geíled Dingen's!
 

Niclas

BeitragFr, März 26, 2004 15:36
Antworten mit Zitat
Benutzer-Profile anzeigen
inarie, kann es sein das du dich um den debugger nie kümmerst? Wink Wink

sieht wirklich gut aus das ding!

Mr.Keks

BeitragFr, März 26, 2004 16:28
Antworten mit Zitat
Benutzer-Profile anzeigen
bin doch kein dauernd-bbdebugger-anhaber Wink debugger is was für weicheier Wink
MrKeks.net

Neue Antwort erstellen


Übersicht BlitzBasic Codearchiv

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group