Quad Schuss Texturieren

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

Megamag

Betreff: Quad Schuss Texturieren

BeitragMo, Okt 05, 2009 18:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi!
Ich habe hier im Forum einen kleinen Code von hectic gefunden, wei man Quad-Schüsse (Quads kreuzen) erstellt. Ich habe den mal mit einer kleinen Textur versehen:
user posted image
(weiß ist eigentlich transparent)

Hier der kleine Test-Code:
Code: [AUSKLAPPEN]
Graphics3D 1024,768,16,2
SetBuffer BackBuffer()

teil=CreateMesh()
surface=CreateSurface(teil,brush)
v0=AddVertex(surface,-1,+2,0, 0,0)
v1=AddVertex(surface,+1,+2,0, 1,0)
v2=AddVertex(surface,+1,-2,0, 1,1)
v3=AddVertex(surface,-1,-2,0, 0,1)
v4=AddVertex(surface,0,+2,-1, 0,0)
v5=AddVertex(surface,0,+2,+1, 1,0)
v6=AddVertex(surface,0,-2,+1, 1,1)
v7=AddVertex(surface,0,-2,-1, 0,1)
AddTriangle(surface,v0,v1,v2)
AddTriangle(surface,v2,v3,v0)
AddTriangle(surface,v4,v5,v6)
AddTriangle(surface,v6,v7,v4)
UpdateNormals teil
EntityFX teil,17

;MoveEntity teil,0,2,0

tex=LoadTexture("laser_tex_rot.png",2)
EntityTexture teil,tex,0,0

light=CreateLight()
PointEntity light,teil
cam=CreateCamera()
MoveEntity cam,0,0,-5
Repeat
   
   TurnEntity teil,0,1,1
   
   UpdateWorld
   RenderWorld
   Flip
Until KeyHit(1)


Jetzt funktioniert es gut, aber es sieht irgendwie nicht schön aus. Ihr seht ja selber, dass man gut das Kreuz und die Überlagerungen erkennen kann. Auf jeden Fall weit entfernt von sowas hier:
https://www.blitzforum.de/gall...roject=139

Meine Frage also: Was muss ich tun, damit die Schüsse so gut aussehen, wie auf dem Bild, sprich, dass die Kreuze nicht mehr so zu sehen sind. Gibt es da irgendwelche speziellen Filte, die ich im Spiel machen muss oder gibt es da einen anderen Trick? Vielen Dank für Antworten!

hectic

Sieger des IS Talentwettbewerb 2006

BeitragMo, Okt 05, 2009 19:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Es wird statt eines statischem Kreuzartigem Meshes ein perspektivisch korrektes Quad, welches wie ein Sprite zur kamera gerichtet ist, gezeichnet. Ich hab mich aber noch nicht darum gekümmert, weshalb ich dir jetzt auch kein fertigen Code geben kann. Jedoch habe ich es schon seit längerem ins Auge gefasst so etwas zu machen.

Es schadet aber nicht da weiter zu graben.
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D

Shodan

BeitragMo, Okt 05, 2009 20:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja das ist die effektivste Methode.

Man erzeugt ein Pivot. An das Pivot wird ein simples Quad mit einer Textur angehängt. Die Textur wäre zB einfach ein runder verwaschener Fleck. Das Pivot entlang der Z-Achse strecken und als Schuss vorwärts bewegen. Das Quad immer Auf die Kamera ausrichten, fertig.

Das Quad wird durch das übergeordnete, verzerrte Koordinatensystem des Pivots immer mit verzerrt.

Dieses Prinzip hab ich bei der DST_Dust Bibliothek verwendet. Sieh dir dort den Code mal an. Speziell beim "Speed_Blur" wird das deutlich.

mfg Shodan
www.selfmadegames.de

hectic

Sieger des IS Talentwettbewerb 2006

BeitragDi, Okt 06, 2009 1:43
Antworten mit Zitat
Benutzer-Profile anzeigen
BIG BUG hatte mir mal ein Kreuzprodukt-Beispielcode gegeben, welches ich eben wieder auftat und es auf gewünschte Bedürfnisse anpasste.

Unabhängig laufähiger Code: [AUSKLAPPEN]
Graphics3D 800,600,0,2
SetBuffer BackBuffer()

Local Timer=CreateTimer(58)
Local Camera=CreateCamera()
CameraClsColor Camera,64,64,64
CameraRange Camera,1,1000

Const SIZE#=100

Local Mesh=CreateMesh()
Local Face=CreateSurface(Mesh)

Local X1#,Y1#,Z1#
Local X2#,Y2#,Z2#
Local V0%,V1%
Local V2%,V3%

Local LX#,LY#,LZ#
Local AX#,AY#,AZ#
Local NX#,NY#,NZ#
Local LN#




While Not KeyHit(1)
   
   X1=MouseX()-400
   Y1=300-MouseY()
   Z1=400
   
   X2=0
   Y2=0
   Z2=1000
   
   
   
   
   LX=X1-X2
   LY=Y1-Y2
   LZ=Z1-Z2
   AX=X2-EntityX(Camera)
   AY=Y2-EntityY(Camera)
   AZ=Z2-EntityZ(Camera)
   NX=(LY*AZ)-(LZ*AY)
   NY=(LZ*AX)-(LX*AZ)
   NZ=(LX*AY)-(LY*AX)
   LN#=Sqr(NX^2+NY^2+NZ^2)
   NX=NX/LN*SIZE
   NY=NY/LN*SIZE
   NZ=NZ/LN*SIZE
   
   V0=AddVertex(Face,X1+NX,Y1+NY,Z1+NZ)
   V1=AddVertex(Face,X2+NX,Y2+NY,Z2+NZ)
   V2=AddVertex(Face,X2-NX,Y2-NY,Z2-NZ)
   V3=AddVertex(Face,X1-NX,Y1-NY,Z1-NZ)
   AddTriangle(Face,V0,V1,V2)
   AddTriangle(Face,V2,V3,V0)
   
   WaitTimer Timer
   RenderWorld
   ClearSurface(Face)
   Flip 0
Wend
End
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D

Mr.Keks

BeitragDi, Okt 06, 2009 10:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Hmm, also zumindest die DGX9142-Schüsse (Screen) sind einfach nur Meshes... https://www.blitzforum.de/foru...hp?t=32441
MrKeks.net

Megamag

BeitragDi, Okt 06, 2009 13:13
Antworten mit Zitat
Benutzer-Profile anzeigen
Gut, ob Mesh oder Quad ist ja egal (denke ich). Es geht ja darum, es so zu texturieren, dass es zwar immer noch schön Volumen hat, aber man das Kruez nicht so extrem sieht (danke hectic, für deine Lösung, aber ich glaube, das würde nicht so gut in meinem Projekt aussehen).

EDIT:
Ich habe in Milkshape jetzt mal so ein Kreuz-Modell gamcht und texturiert. Dann habe ich das ganze mit Blend Mode 3 versehen, und ich finde das sieht ziemlich gut aus. Das Kreuz erkennt mann aber immer noch sehr deutlich, wenn man von vorne/hinten auf den schuss schaut. Ich habe mir gedacht irgendwie noch ein Quad davor zu setzten, wo dann eine Front Textur drauf ist, aber das sieht ziemlich bescheuert aus. Habt ihr da irgendwelche Tipps? (Bin leider nicht so erfahren mit Lichteffekten, wäre es aber gerne...)

hectic

Sieger des IS Talentwettbewerb 2006

BeitragDi, Okt 06, 2009 16:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Megamag hat Folgendes geschrieben:
danke hectic, für deine Lösung, aber ich glaube, das würde nicht so gut in meinem Projekt aussehen.

Ein Kreuzmesh kommt nie an die selbe qualitative Darstellung als die von mir gepostete Lösung. Diese nämlich passt die Perspektive optimal dem Betrachter an, wärend ein Kreuzmesh genau dehalb ein ''Kreu'' hat, weil man sich eben genau diese Rechenlösung sparen möchte. Wink

Die einzige Bedingung wo auch meine Lösung nicht perfekt ist, ist, wenn der Schuss sehr direkt dem Betrachter zu fliegt. Aber auch hier wird ein Kreuzmesh immer mindestens schlechter sein. Um aber dem visuellem Abflachen entgegen zu tretten, kann man zusätzlich ein zur Kamera gerichtetes Sprite benutzen. Dazu kannst du die bei der Draw3D2 beigelegte Funktion DrawSprite3D benutzen. Also eine Kombination von beiden.

wenn dich das interessiert kann ich dir die gestern fertiggestellten Funktionen zusenden. Diese können dann unter der Draw3D2 Linien und Images im 3D-Raum zeichnen. Dazugekommen ist DrawLine4D und DrawSprite3D hab ich nun in DrawImage4D umbenannt.
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group