"Flimmerndes Mesh"

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

Blackprogger

Betreff: "Flimmerndes Mesh"

BeitragSo, Feb 10, 2008 20:04
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi Leute, ich habe vor 2 Tagen angefangen eine Steuerung für mein neues Spiel zu proggen. Die Steuerung läuft wunderbar, nur leider Flimmert der Würfel (den Ich Steuere). Ich hoffe ihr könnt mir weiterhelfen.

Code: [AUSKLAPPEN]

Ox#=EntityX#(Raumschiff)-EntityX#(Maus3D)
Oy#=EntityY#(Raumschiff)-EntityY#(Maus3D)
Oz#=EntityZ#(Raumschiff)-EntityZ#(Maus3D)
Opitch#=VectorPitch#(Ox#,Oy#,Oz#)
Oyaw#=VectorYaw#(Ox#,Oy#,Oz#)
RotateEntity Raumschiff,0,Oyaw#,0


RaumschiffSpeed=(EntityDistance(Raumschiff,Maus3D)/10) * (-1)
MoveEntity Raumschiff,0,0,RaumschiffSpeed


Kurze Codeerklärung:
Das Raumschiff ist der Würfel.
Die 3DMaus ist auch ein unsichtbarere Würfel den ich mit der Maus steuere. Das Raumschiff soll sich zu der 3D Maus drehen.
Je weiter das Raumschiff entfernt ist, desto schneller soll es auf die 3DMaus zufliegen. Je näher es ist desto langsamer.

Aber leider flimmert das ganze, bzw. wenn ich die Maus ganz schnell bewege, habe ich dann auf einmal 2 Würfel.

Ich hoffe ihr könnt mir helfen.
PC:
AMD Athlon 64 X2 TK 57 Prozessor (2x 1.9 GHz) | nVidia GeForce 8600M GS mit 512 MB VRAM | 4-GB-DDR2-RAM | Windows Vista Home Premium
 

Dreamora

BeitragSo, Feb 10, 2008 21:05
Antworten mit Zitat
Benutzer-Profile anzeigen
mach nicht flip 0

Klingt sehr als ob du sehr viele frames hast und wenn das bedeutend mehr sind als dein Bildschirm rendern kann (60 oder 72 normalerweise bei TFT) dann wirds mit der zeit "kritisch"
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

Blackprogger

BeitragSo, Feb 10, 2008 21:07
Antworten mit Zitat
Benutzer-Profile anzeigen
Also wenn ich flip 0 benutze, funktioniert es gut ^^.
PC:
AMD Athlon 64 X2 TK 57 Prozessor (2x 1.9 GHz) | nVidia GeForce 8600M GS mit 512 MB VRAM | 4-GB-DDR2-RAM | Windows Vista Home Premium
 

Dreamora

BeitragSo, Feb 10, 2008 21:15
Antworten mit Zitat
Benutzer-Profile anzeigen
mit Flip 1 noch viel besser, weils dann nicht schneller aktualisiert als deine Bildschirm es kann.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

Blackprogger

BeitragSo, Feb 10, 2008 21:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn ich Flip 1 benutze, dann "flimmert" es wieder, bei Flip 0 nicht.
PC:
AMD Athlon 64 X2 TK 57 Prozessor (2x 1.9 GHz) | nVidia GeForce 8600M GS mit 512 MB VRAM | 4-GB-DDR2-RAM | Windows Vista Home Premium
 

Dreamora

BeitragSo, Feb 10, 2008 22:06
Antworten mit Zitat
Benutzer-Profile anzeigen
das klingt schief.

du hast nicht eventuell kaputte kamera range settings oder? (also entweder 0.1, 1000 oder 1,10000 oder so, einfach nicht mehr als faktor 10000 zwischen den zwei werten)
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

Blackprogger

BeitragSo, Feb 10, 2008 22:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Das einzigste was ich mit der Cam mache ist bewegen. Rangesettings habe ich noch keine benutzt/gesetzt.
PC:
AMD Athlon 64 X2 TK 57 Prozessor (2x 1.9 GHz) | nVidia GeForce 8600M GS mit 512 MB VRAM | 4-GB-DDR2-RAM | Windows Vista Home Premium

NightPhoenix

BeitragMo, Feb 11, 2008 0:11
Antworten mit Zitat
Benutzer-Profile anzeigen
kannst du mal den codeausschnitt aus deinem code posten ab dem "Updateworld", bzw. "RenderWorld" Befehl bis zum "End"?
Ich vermute da liegt irgend ein fehler

Blackprogger

BeitragMo, Feb 11, 2008 15:50
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]

UpdateWorld
RenderWorld

Text 0,0,EntityX(Maus3D)
Flip 0
Delay 10

Wend
End


Das Flip habe ich nach Dreamoras Antwort verbessert.
PC:
AMD Athlon 64 X2 TK 57 Prozessor (2x 1.9 GHz) | nVidia GeForce 8600M GS mit 512 MB VRAM | 4-GB-DDR2-RAM | Windows Vista Home Premium

ZaP

BeitragMo, Feb 11, 2008 16:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Solch flimmern kommt eigentlich immer zustande, wenn man zb etwas jedes frame vor der Kamera platziert, man kann sowas verhindern indem man es einfach zum Child von der Kamera deklariert.
Starfare: Worklog, Website (download)
 

timmeTheOnly

BeitragMo, Feb 11, 2008 19:51
Antworten mit Zitat
Benutzer-Profile anzeigen
Flackert das immer wieder schwarz auf? Kann sein, dass du 2 Triangles übereinander hast.

NightPhoenix

BeitragMo, Feb 11, 2008 20:40
Antworten mit Zitat
Benutzer-Profile anzeigen
also nur das eine mesh flimmert?

dann bewegst du dein raumschiff sicherlich außerhalb des machbaren bereiches für die Gleitkommaberechnung...
wenn du dein schiff bei einer realen skalierung auf x=10000000 oder y=-6840000000 hast dann ist die Genauigkeit der 3D Positionsdatenberechnung so ungenau dass dein Computer nicht weiß wo er es hinzeichnen soll, deswegen springt er jedes frame an eine andere position weil diese am genausten ist.

Umso weiter du vom Koordinatenzentrum (0,0,0) weg komsmt umso ungenauer und flimmriger wirds. Das kann man mit neu skalieren auch nicht beheben wenn du im selben Maßstab bleiben willst.
Du wirst dabei wohl nicht um ein ausgeglügeltes Verfahren herumkommen damit die ungenauigkeit entfällt... schau dir mal das "Octree Verfahren" an.
Is schon kompliziert aber ne andere Wahl hast du nicht, höchstens Alternativen zu Octree, welche aber nicht wirklich einfach sind.
MfG.
 

Dreamora

BeitragMo, Feb 11, 2008 20:43
Antworten mit Zitat
Benutzer-Profile anzeigen
die einfachste variante ist das raumschiff garnicht zu bewegen sondern bei 0,0,0 zu halten und das universum drum herum zu bewegen -> ist man immer im genauen bereich
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

Jan_

Ehemaliger Admin

BeitragDi, Feb 12, 2008 8:52
Antworten mit Zitat
Benutzer-Profile anzeigen
hm, hast du das mesh 2mal geladen, einmal mit und einmal ohne texture?
between angels and insects

Blackprogger

BeitragDi, Feb 12, 2008 18:52
Antworten mit Zitat
Benutzer-Profile anzeigen
@Zap: Ich verstehe nicht ganz was du meinst.

@timmeTheOnly: Nein es flackert in der gleichen Farbe wie das Mesh auf.

@NightPhoenix: Also das das Bild zu weit weg ist bezweifle ich. Ich habe hier mal ein Bild gemacht:

user posted image

und das hier sind die einzigsten Codestellen, wo ich das Raumschiff "bearbeite":

Code: [AUSKLAPPEN]


;-----------Raumschiff---------
Raumschiff=CreateCube()
ScaleEntity Raumschiff,5,5,5


(...)
;---------Hauptschleife----------

(...)
;---------------3DMauspunkt-------------------
If CameraPick(cam,MausX,MausY) Then
PositionEntity Maus3D,PickedX(),PickedY(),PickedZ()
EndIf


;------------Objekt nach Maus ausrichten und bewegen----------------------


Ox#=EntityX#(Raumschiff)-EntityX#(Maus3D)
Oy#=EntityY#(Raumschiff)-EntityY#(Maus3D)
Oz#=EntityZ#(Raumschiff)-EntityZ#(Maus3D)
Opitch#=VectorPitch#(Ox#,Oy#,Oz#)
Oyaw#=VectorYaw#(Ox#,Oy#,Oz#)
RotateEntity Raumschiff,0,Oyaw#,0


RaumschiffSpeed=(EntityDistance(Raumschiff,Maus3D)/10) * (-1)
MoveEntity Raumschiff,0,0,RaumschiffSpeed

UpdateWorld
RenderWorld

Text 0,0, "EntityX Raumschiff: " + EntityX(Raumschiff)
Text 0,20,"EntityY Raumschiff: " + EntityY(Raumschiff)
Text 0,40,"EntityZ Raumschiff: " + EntityZ(Raumschiff)
Flip 0
Delay 10

Wend
End



Ich bin mir nicht sicher, aber könnte es auch an meiner Drehfunktion liegen, womit ich das Raumschiff drehe?

@Dreamora: Hmmm, das hört sich zwar kompliziert aber aufwendig und machbar an. Aber ich vermute mal, dass es an der Framezahl liegt. Ich werde demnächst einen "Framestopper" einbauen, so dass das Spiel auf jeden PC gleichschnell läuft. Zudem kann ich ja dann sehen, ob es an der Framanzahl lag/liegt oder nicht.

(Zur Info, meine PC-Daten: Intel Penitium 4 mit 2,8 Ghz, 512 MB RAM und 128 MB Grafikkarte (Onboard))

@Jan_: Nein ich habe das Mesh nur einmal geladen. Ich habe wegen Exportproblemen (liegt irgendwie an Blender) das Mesh noch nicht texturiert.

~edit~:
Auf dem Bild ist nicht zu sehen wie es flimmert.
(Danke schonmal für eure Antworten und Hilfsbereitschaft Smile)

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group