CameraProjMode Problem (mit rendern)

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

 

BlackError

Betreff: CameraProjMode Problem (mit rendern)

BeitragDi, Jul 03, 2007 18:32
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi zusammen,

Folgendes Problem:

Ich hab mir ne Map mit Wasser, Himmel und so weiter gebastelt. Für eine kleine Minimap hab ich nun CameraViewport verwendet (Map camera hängt weit über dem Terrain)

Nun hab ich festgestellt, dass die Textur der Minimap von der Höhe zu klein skaliert ist. Darum habe ich den Befehl CameraProjMode verwendet, um einmal nur die Minimap mit der Hochskalierten Textur und einmal nur die HauptCam mit der normalen Textur zu rendern.

Wenn ich nun meinen Code ausführe, stimmen zwar die Texturen der Minimap und der HauptCam, aber nun stimmt etwas mit dem Bewegen auf dem Terrain nicht mehr). Wenn ich nun laufen will, werde ich immer auf den Boden gezogen (kann also kein stück Berg hinauflaufen).

Habe aber schon festgestellt, dass es an dem CameraProjMode Teil im Code liegt. Nur ich finde nicht den Fehler daran. Hier mal die Hauptcodeteile:

Code: [AUSKLAPPEN]


Cam = CreateCamera()
   PositionEntity Cam, x,y,z
   RotateEntity Cam, 0,3,0
   CameraRange Cam, 1,223^3

Cam_Map = CreateCamera()
                   TurnEntity Cam_Map, 90,0,0
                   PositionEntity Cam_Map, 7785,12000,7635
                   CameraRange Cam_Map, 1,12000
          CameraViewport Cam_Map, 1200,55,200,200

...
...

;Terrain + Textur
Terrain = LoadTerrain ("Terrain\Highmap.jpg")
ScaleEntity Terrain, 20,500,20
PositionEntity Terrain, -2562.5,0,-2562
TerrainShading Terrain, True
TerrainDetail Terrain, 2500, True
EntityFX Terrain, 8

Tex_Terrain = LoadTexture ("gfx\Textur_Boden.jpg")
EntityTexture Terrain, Tex_Terrain, 0, 1

...
...

;Entitytype for Collision
EntityType Cam, 1
EntityType Terrain, 2
EntityType Wasserbett, 3

EntityRadius Cam, 70

Repeat


 TurnEntity Cam, 0,-MouseXSpeed()/2,0
 TurnEntity Cam, 0,+MouseXSpeed()/2,0

 MoveMouse 400,300

 If KeyDown(17) Then MoveEntity Cam, 0,0,+5
 If KeyDown(31) Then MoveEntity Cam, 0,0,-5
 If KeyDown(30) Then MoveEntity Cam, -5,0,0
 If KeyDown(32) Then MoveEntity Cam, +5,0,0

 If EntityCollided (Cam,2) Then TranslateEntity Cam, 0,-1,0
 If Not EntityCollided (Cam,2) Then TranslateEntity Cam, 0,-15,0

 Collisions 1,2,2,3
 Collisions 1,3,2,3

 If KeyDown(57) ;Größe der Minimap verändern
  CameraViewport Cam_Map, 888,55,512,512
 Else
  CameraViewport Cam_Map, 1200,55,200,200
 End If

;____________________________________________________________
 ;Doppeltes Rendern für Anpassen der Minimap

[b]
 CameraProjMode Cam_Map, 0
 CameraProjMode Cam, 1
 ScaleTexture Tex_Terrain, 20,20

 RenderWorld
 UpdateWorld

 CameraProjMode Cam, 0
 CameraProjMode Cam_Map, 1
 ScaleTexture Tex_Terrain, 200,200
 
 UpdateWorld
 RenderWorld
[/b]

 ;____________________________________________________________


 Text 10,20, "Title: DarkWalk Beta"

 Text 10,60, "Cam_X " + Int EntityX (Cam, 1)
 Text 10,80, "Cam_Y " + Int EntityY (Cam, 1)
 Text 10,100, "Cam_Z " + Int EntityZ (cam, 1)

 Text 1080,20, "Zum Vergrö0ern Leertaste gedrückt halten"

 ;Text 1200,230, "Cam_Map_X " + Int EntityX (Cam_Map, 1)
 ;Text 1200,250, "Cam_Map_Y " + Int EntityY (Cam_Map, 1)
 ;Text 1200,270, "Cam_Map_Z " + Int EntityZ (Cam_Map, 1)

 Flip
 

Until KeyHit(1)
End
       


Der Problembereich ist der abgegrenzte Codeteil im Code (doppeltes rendern)

Hoffe auf Antwort

Danke im Vorraus

Gruß

BlackError
 

BlackError

BeitragDo, Jul 05, 2007 20:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Nochmal Hallo,

Bitte verzeiht den Doppelpost. Kennst sich niemand mit meinem Problem aus? Bräuchte so langsam wirklich eine kleine Hilfestellung.

Hoffe auf Antworten
 

Dreamora

BeitragDo, Jul 05, 2007 20:39
Antworten mit Zitat
Benutzer-Profile anzeigen
versuch das doppelt rendern ma mit hideentity cam: showentity cam_map und nachher umgekehrt
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.
 

BlackError

BeitragDo, Jul 05, 2007 20:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Hey,

Erstmal vielen Dank für deine Antwort. Das Problem wäre "fast" gelöst, wenn ich jetzt nicht plötzlich duch die map nach unten fliegen würde Smile Nun stimmt wohl etwas nicht mehr Kollission zwischen der Cam und dem Terrain. Liegt wohl an dem updateworld (prüft ja alle sachen auf Kollision). jetzt hab ich den anziehungskraft teil und die kollisison im 1. Rendern miteinbezogen.


Code: [AUSKLAPPEN]

HideEntity Cam_Map
 ShowEntity Cam
 ScaleTexture Tex_Terrain, 20,20

 If EntityCollided (Cam,2) Then TranslateEntity Cam, 0,-1,0
 If Not EntityCollided (Cam,2) Then TranslateEntity Cam, 0,-15,0

 Collisions 1,2,2,3
 Collisions 1,3,2,3

 RenderWorld
 UpdateWorld

 HideEntity Cam
 ShowEntity Cam_Map
 ScaleTexture Tex_Terrain, 200,200

 UpdateWorld
 RenderWorld


collisions 1,3,2,3 funktioniert ganz normal. jedoch collisions 1,2,2,3 (Cam mit Terrain) nicht.

Verstehe irgendwie nicht, warum es mit dem Wasserbett geht, aber mit dem Terrain nicht. Question Question Question
 

BlackError

BeitragDo, Jul 05, 2007 20:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Hab grad die sache nochmal mit cameraprojmode versucht, weil ich dachte, dass es vielleciht nur an der Anziehungskraft oder so gelegen hat.
Mit Show- und Hideentity gehts auf jedenfall schonmal besser.
Jetzt fehlt halt wirklich nur noch die kollision mit dem Terrain
 

Dreamora

BeitragDo, Jul 05, 2007 21:07
Antworten mit Zitat
Benutzer-Profile anzeigen
nimm das zweite updateworld raus wo du die minimap renderst
du brauchst ja keinen update der weltelemente nur ein rendern
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.
 

BlackError

BeitragDo, Jul 05, 2007 21:27
Antworten mit Zitat
Benutzer-Profile anzeigen
Hmm, klingt verdammt logisch Smile

Jedoch klappts mit der collision im ersten rendern immer noch net richtig.
Komisch finde ich jedoch, dass die Kollission am anfang funktioniert (cam steht etwas oben auf dem Berg)

Sobald ich mich aber bewege, fliege ich sofort nach unten durch das Terrain hindurch.

Trotzdem schonmal vielen dank Dreamora. Hast mir bereits sehr viel geholfen.
 

Dreamora

BeitragDo, Jul 05, 2007 22:02
Antworten mit Zitat
Benutzer-Profile anzeigen
Dann gibts eigentlich nur noch eine Möglichkeit: Gravitation zu hoch oder Collisionsphere der Cam zu klein.

Und da du net keine Codestruktur wie Mark (der Macher von Blitz) hast, kannst du so durchs terrain durch flattern. Schau dir mal das Castle beispiel an, dann siehst du was ich meine.

wie du das beheben kannst:

1. TerrainY statt Collision nehmen -> eh schneller
2. LinePick mit aktueller Position und zukünftiger, radius der kollisionssphere nehmen. Dann weisst du obs mit dem terrain kollidieren würde.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

tft

BeitragFr, Jul 06, 2007 7:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi ...

grundsätzliches Vorgehen........

Camera1 einrichten mit Colratius
Camera2 einrichten ohne Colradius
Beide Cameras Positionieren

1. Camera1 mittels move in richtung boden
2. Camera2 Mittes Positionentity und RotateEntity an die gleiche Position wie Camera1
3. Colision mit Slide für Camera1
4. Update World
5. RenderWorld

So solte es funktinieren. Wenn du es so gemacht hast. Dann mach mal in einem separaten Code Teil das ganze von forne. Manchmal schleichen sich bei langem Quell Code unsichtbare Fehler ein. Und wenn es dann nicht funktioniert. Poste doch mal den Code.
TFT
https://www.sourcemagic.ch
Monkey,HTML5,CSS3,W 10 64 Bit, 32 GB Ram, GTX Titan, W8 ist Müll !!!!!!
 

BlackError

BeitragFr, Jul 06, 2007 10:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Naja, an dem sollte es ja eigentlich nicht liegen, da die Kollision mit dem "Wasserbett" normal funktioniert. Die collisiontypes für Terrain und Wasserbett und so habe ich immer zusammen im code geschrieben. Darum wundert es mich auch, dass nur die Kollision mit dem Terrain fehlerhaft ist.

An der Gravitation kanns eigentklich auch nicht ligen, weil die Werte vor der Umstellung mit nem Cameraviewport (Minimap) auch funktioniert haben.
Auch der Wert der Collisionsphere hat zuvor gestimmt.

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group