Mesh wird nicht angezeigt / 2d in 3d wie am besten?

Übersicht BlitzBasic Beginners-Corner

Gehe zu Seite Zurück  1, 2

Neue Antwort erstellen

hectic

Sieger des IS Talentwettbewerb 2006

BeitragDo, Nov 01, 2007 22:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Siehe dazu ql:TFormNormal , da dieses Beispiel leider ein paar Fehler hat, hier mal eine Korrektur für dich und mit der Z-Achse-Berücksichtigung für dich.

Code: [AUSKLAPPEN]
Graphics3D 640, 480

;Hier eine kurze Demonstration der Normalisierung
;Er werden globale Koordinaten transformiert
TFormNormal 2,2,0, 0,0

;Die Transformation von GLOBAL nach GLOBAL macht nix.
;Aber der Vektor ist normalisiert (Länge 1)
Text 0,00,TFormedX()
Text 0,20,TFormedY()
Text 0,40,TFormedZ()

Text 70, 180, message
Flip
WaitKey()
End


edit1: Will ja nicht auch auf meine Draw3D verweisen, aber die hat ein Befehl der heisst Line3D und kann bereits das, was du da willst. Machst du zuvor noch NativeInit3D(1,2) statt NativeInit3D(2,2), dann werden die Linien auch nicht weich gezeichnet. Mit ImageLine3D kannst du sogar Bilder als Linien in drei verschiedenen Ausführungsmodies zeichnen lassen.

mas93

BeitragDo, Nov 01, 2007 23:09
Antworten mit Zitat
Benutzer-Profile anzeigen
natürlich wäre dass alles mit deiner Draw3d einfach zu machen, aber da es da keine Kollisionen gibt, ist das etwas blöd.

Oder gibt es eine Möglichkeit die Bilder und linien auf Kollision zu testen?
www.lpbase.de
Meine Linkin Park Fanseite[Noch im Aufbau]

hectic

Sieger des IS Talentwettbewerb 2006

BeitragDo, Nov 01, 2007 23:44
Antworten mit Zitat
Benutzer-Profile anzeigen
Was man verhältnismässig einfach mit integrieren könnte ist eine Punkt auf Linie -Kollision. Diese habe ich nicht eingebaut, weil ich auf weitere Parameter verzichten wollte um die Einfachheit beizubehalten. Man könnte aber dieses mit einbauen, dann müsste jede Linie als Button deklariert werden und als Quellkoordinate dann eben ein eigener Wert übertragen werden, anstelle der Übernahme der Mausposition. Ansonsten könntest du auch mit ql:CameraPick auf das Mesh picken und somit auf Kollision prüfen. Allerdings habe ich schlechte Erfahrungen mit XPickmodes gemacht, da sie nicht immer zuverlässig sind. Eine berechnete Bild über Bild -Kollision ist schon etwas aufwändiger zu realisieren und erfordert ein wenig mehr Mathe, wobei Pixelgenaue (berücksichtigte Alphatransparenz) Kollision wohl kaum mit B3D-Bordmitteln in Echtzeit möglich ist. Also ginge nur eine Art ql:ImagesOverlap wo die Drehung aber mit berücksichtigt wird.

Wie du siehst, wird das ganze eventuell etwas schwerer, wenn dir Picked nicht ausreicht.

Was mir grad bei Tortellini essen noch so einfiel ist, dass ich in meinem vorherigem Post etwas unzureichend geantwortet habe. Dieses möchte ich mit folgendem Code nachbessern:

Code: [AUSKLAPPEN]
Graphics3D 800,600,0,2
SetBuffer BackBuffer()

ghx=GraphicsWidth()/2
ghy=GraphicsHeight()/2

PositionEntity CreateCamera(),0,0,-ghx

c1=CreateCube()
c2=CreateCube()
cm=CreateCube()

ScaleEntity c1,4,4,1
ScaleEntity c2,4,4,1
ScaleEntity cm,4,4,1

EntityColor c1,240,80,80
EntityColor c2,80,240,80
EntityColor cm,80,80,240


While Not KeyHit(1)
   mx=MouseX()-ghx
   my=ghy-MouseY()
   
   If MouseDown(1) Then
      x1=mx
      y1=my
   End If
   
   TFormNormal x1-mx,y1-my,0,0,0
   x2=x1-TFormedY()*20
   y2=y1+TFormedX()*20
   
   PositionEntity c1,x1,y1,0
   PositionEntity c2,x2,y2,0
   PositionEntity cm,mx,my,0
   
   RenderWorld
   Flip
Wend
End


Eine 90° -Drehung bekommst du damit, dass du bei TFormedX jeweils das X mit Y vertauscht und eines der beiden Vorzeichen änderst. Durch die Kombination beider, kannst du die Seiten wechseln.

edit1: Mom mal, vielleicht brauchst du garnicht komplizierte Kollisionsabfragen. Vielleicht reicht dir eine reine Radius auf Polygon -Kollision? Schaue dir mal mein 4WD-Buggy in 2D Spiel an. Der Grafikstiel der da angewendet wird, kann auf 'Plattformen' ausgeweitet werden. Alle Kollisionsn gehen dann von einem Radius aus, deren relativer Kollisionswinkel sehr leicht überprüft werden kann, was physikalisches Verhalten von bestimmten Körpern möchlich macht.
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D

darth

BeitragFr, Nov 02, 2007 0:37
Antworten mit Zitat
Benutzer-Profile anzeigen
warum keiner vektorgeometrie beherrscht :/ ist das genialste gebiet der mathematik...
Code: [AUSKLAPPEN]
vx=(endx-startx)
vy=(endy-starty)
vz=0
 ;crossp([vx,vy,0],[0,0,1])
nx=vy
ny=-vx
 l=sqr(nx^2+ny^2)
 nx=nx/l*3
 ny=ny/l*3

v1=addvertex(startx+nx,starty+ny,0)
v2=addvertex(startx-nx,starty-ny,0)
v3=addvertex(endx+nx,endy+ny,0)
v4=addvertex(endx-nx,endy-ny,0)
addtriangle(v1,v2,v3)
addtriangle(v2,v3,v4)


so in etwa. (der code enthält enorm viele syntaxfehler, aber die logik müsste eigentlich korrekt sein Smile )
Diese Signatur ist leer.

Gehe zu Seite Zurück  1, 2

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group