probleme mit CameraPick()

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

fliege

Betreff: probleme mit CameraPick()

BeitragMo, Apr 24, 2006 13:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Wie oben schon beschrieben habe ich ein Problem mit der CameraPick - Funktion. Und zwar ist mein Mesh, das gepickt werden soll in einem Type gespeichert und der Pickmode richtig gesetzt. Trotzdem wenn ich CameraPick an den Mauskoordinaten mache ist es egal ob ich über dem Mesh bin oder sonst wo, er liefert immer null.

Vielleicht kennt jemand eine Lösung für dieses Problem, freue mich natürlich über jegliche Hilfe.
Fliege
 

Dreamora

BeitragMo, Apr 24, 2006 13:50
Antworten mit Zitat
Benutzer-Profile anzeigen
Du hast das mesh nicht eventuell mit scaleentity "aufgeblasen"?
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.
 

fliege

BeitragMo, Apr 24, 2006 14:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Also ich habe folgendes gemacht:
Code: [AUSKLAPPEN]
window.t_window = New t_window
      window\name$ = Sys_ParseParameter(parameters$,2,1)
      window\mesh = CreateSprite(guicam)
      EntityPickMode window\mesh, 1
            
      window\x# = Float(Sys_ParseParameter(parameters$,1,2))*ggratio#
      window\y# = Float(Sys_ParseParameter(parameters$,1,3))*ggratio#
      window\width# = Float(Sys_ParseParameter(parameters$,1,4))*ggratio#
      window\height# = Float(Sys_ParseParameter(parameters$,1,5))*ggratio#
      window\alpha = 100
      window\shown = 0
   
      PositionEntity window\mesh,((window\x)*2)-gwidth+window\width,-((window\y)*2)+gheight-window\height,gwidth
      ScaleSprite window\mesh, window\width*ggratio#, window\height*ggratio#
      EntityAlpha window\mesh, Float(window\alpha)/100.0
   
      HideEntity window\mesh

Und da funktionierts nicht - soll ich mal den PickMode hinter das scalen versetzen.

Fliege
 

Dreamora

BeitragMo, Apr 24, 2006 14:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich denke, ein korrektes konfigurieren des Pickmode würde schon ausreichen.

Du benutzt Sphere pickmode, setzt aber nirgends entityradius, womit das nicht wirklich klappen kann.

Vielleicht wolltest du ja eigentlich den Pickmode ,2?
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.
 

fliege

BeitragMo, Apr 24, 2006 14:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Okay, habe PickMode auf 2 gesetzt, brachte aber noch immer nichts. So habe ich die Deklaration des Pickmodes nach unten gesetzt, kurz vor ende der Funktion. Das Problem besteht jedoch weiterhin Sad

Fliege
 

fliege

BeitragMi, Apr 26, 2006 15:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich weis das ich für diesen Post in die Hölle komme, aber:

Kennt sich denn keiner damit aus?
Versuch ich das als einziger, oder will mir nur keiner Antworten Razz

Ich habe jetzt folgenden Code, funktioniert aber noch immer nicht

Code: [AUSKLAPPEN]
   window.t_window = New t_window
      window\name$ = Sys_ParseParameter(parameters$,2,1)
      window\mesh = CreateSprite(guicam)
            
      window\x# = Float(Sys_ParseParameter(parameters$,1,2))*ggratio#
      window\y# = Float(Sys_ParseParameter(parameters$,1,3))*ggratio#
      window\width# = Float(Sys_ParseParameter(parameters$,1,4))*ggratio#
      window\height# = Float(Sys_ParseParameter(parameters$,1,5))*ggratio#
      window\alpha = 100
      window\shown = 0
   
      PositionEntity window\mesh,((window\x)*2)-gwidth+window\width,-((window\y)*2)+gheight-window\height,gwidth
      ScaleSprite window\mesh, window\width*ggratio#, window\height*ggratio#
      EntityAlpha window\mesh, Float(window\alpha)/100.0
      EntityPickMode window\mesh, 2

      HideEntity window\mesh
 

Dreamora

BeitragMi, Apr 26, 2006 15:43
Antworten mit Zitat
Benutzer-Profile anzeigen
HideEntity deaktiviert jegliche überprüfung (pick, kolli, alles)
Solange das da ist, existiert das objekt für B3D nicht bei Tests.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

5k41

BeitragMi, Apr 26, 2006 16:17
Antworten mit Zitat
Benutzer-Profile anzeigen
wenn das immer noch nicht die lösung des Problems war dann setz dich doch mal mit hectic in verbindung... der hat mir das auch schon richtig erklärun und vorallem auch selbst benutzt Wink

MfG
Projekte:
For a better World - Gesellschaftsspiel ( 100%)

User posted image
 

fliege

BeitragDo, Apr 27, 2006 22:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Hm, entweder empfängt hectic meine PM's nicht oder er irgnoriert mich beinhart ^^ - 5k41, kannst du mir nicht helfen?

Fliege
 

c64

BeitragDo, Apr 27, 2006 22:29
Antworten mit Zitat
Benutzer-Profile anzeigen
Hast du einen Cameravieport gesetzt ? Wenn ja , dann ziehe die Startposition von deiner PickPosition ab !!

Code: [AUSKLAPPEN]

Cameraviewport VW_PX,VW_PY,VW_SX,VW_SY
pckd=camerapick (CAM,PCK_X-VW_PX,PCK_Y-VW_PY)
 

fliege

BeitragDo, Apr 27, 2006 23:01
Antworten mit Zitat
Benutzer-Profile anzeigen
Hab ich auch nicht getan - kann es daran liegen, das ich zwei cameras verwende?

Fliege
 

Dreamora

BeitragDo, Apr 27, 2006 23:34
Antworten mit Zitat
Benutzer-Profile anzeigen
es liegt daran, dass du mit hideentity die entity deaktiviert hast. Dann existiert sie für B3D nicht mehr, bis du sie wieder aktivierst.
Wie oben schon erwähnt.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.
 

fliege

BeitragDo, Apr 27, 2006 23:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Sorry, hab vergessen zu erwähnen das ich sie mit einer anderen Funktion wieder anzeigen lasse Wink
Wenn ihr es braucht kann ich auch mal den ganzen code zusammenzippen und uppen.

Fliege
 

Dreamora

BeitragFr, Apr 28, 2006 9:37
Antworten mit Zitat
Benutzer-Profile anzeigen
Wäre eine Idee oder ein kurzes beispiel, dass das Problem möglichst entsprechend deinem Code aufzeigt.

An obigem Code kann es eigentlich nicht liegen.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.
 

fliege

BeitragFr, Apr 28, 2006 13:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Gut, hier mal der Link:

https://www.blitzforum.de/upload/file.php?id=39

Aber bitte nicht lachen, es steckt noch alles in einer Testphase (will schauen ob ich das alles so machen will)

Fliege

hectic

Sieger des IS Talentwettbewerb 2006

BeitragFr, Apr 28, 2006 15:27
Antworten mit Zitat
Benutzer-Profile anzeigen
So, also eines vorweg. Ich habe sowas nur in einer ähnlichen Form gemacht. Da ich bereits zweimal angesprochen wurde, will ich mal versuchen mein Vorgehen mal zu äussern.

Ich habe mir Textmeshes erzeugt um daraus ein Menü zu basteln. Die Textmeshe bekommen beim erzeugen, per ql:NameEntity, einen Namen. Ausserdem sind sie genauso groß wie die Schrift in diesem ist (wichtig zum picken). An der Maus, die auch aus einem derartigem Mesh besteht, habe ich ein Cube mit Alpha 0 als Parent der Maus gepackt. Aus dem Cube geht dann ein LinePick hervor. Wenn ich jetzt also die Maus bewege, kann ich die Namen der Entitys der Textmeshes herrausfinden. Um Auswahlen zu treffen, werden Abfragen ähnlich wie If name="option" Then option() gemacht. Das ganze funktioniert wunderbar und ist auch recht leicht zu handhaben.

Hier der Picker: Code: [AUSKLAPPEN]
;Picker erstellen
Global picker=CreateCube()
ScaleEntity picker,.1,.1,.1
RotateEntity picker,180,0,0
EntityColor picker,255,0,0
EntityPickMode picker,2,0
EntityAlpha picker,0

Hier das Textmesh als endliche Zahl in Dims: Code: [AUSKLAPPEN]
Function zeichne(m%,t$,x#,y#,z%,s#,c%)
 ...
 ...
 ;Neu-Vorbereitung
 FreeEntity mesh(m)
 mesh(m)=CreateMesh()
 face(m)=CreateSurface(mesh(m),brush258)
 EntityPickMode mesh(m),2,0
 EntityOrder mesh(m),-2-m
 EntityFX mesh(m),1

 ;Zeichen suchen
 For q=1 To Len(t)
  mitte$=Lower(Mid$(t,q,1))
  If mitte="0" x1=1:y1=1:x2=10:y2=12:f=0
  If mitte="1" x1=10:y1=1:x2=19:y2=12:f=0
  If mitte="2" x1=19:y1=1:x2=28:y2=12:f=0
  ...
  ...
  If mitte="$" x1=32:y1=71:x2=44:y2=52:f=0;Mauspointer

  v0=AddVertex(face(m),x0,-f+Abs(y1-y2)/2,0,x1,y1)
  v1=AddVertex(face(m),x0+Abs(x1-x2),-f+Abs(y1-y2)/2,0,x2,y1)
  v2=AddVertex(face(m),x0+Abs(x1-x2),-f,0,x2,y2)
  v3=AddVertex(face(m),x0,-f,0,x1,y2)

  AddTriangle(face(m),v0,v1,v2)
  AddTriangle(face(m),v0,v2,v3)
  x0=x0+Abs(x1-x2)-2.5
 Next

 ;Standard-Bearbeitung
 PositionEntity mesh(m),x,y,z
 RotateEntity mesh(m),180,0,0
 ScaleEntity mesh(m),s,s*2,s
 ScaleMesh mesh(m),.25,.25,1
 UpdateNormals mesh(m)
 NameEntity mesh(m),t
 ShowEntity mesh(m)

 ;Zentrierung festlegen wenn angegeben wurde
 If c=1 MoveEntity mesh(m),-MeshWidth(mesh(m))*s/2,0,0
 If c=2 MoveEntity mesh(m),-MeshWidth(mesh(m))*2,0,0

;Funktionende
End Function

Im Menü dann das Auswahlsverfahren: Code: [AUSKLAPPEN]
 ;Auswahl-Mesh-Picker
 picked=EntityPick(picker,1)
 If picked pitext$=EntityName$(picked) Else pitext$=""

 If pitext="start" EntityColor mesh(4),120,120,180 Else EntityColor mesh(4),255,255,255
 If pitext="options" EntityColor mesh(5),120,120,180 Else EntityColor mesh(5),255,255,255
 If pitext="credits" EntityColor mesh(6),120,120,180 Else EntityColor mesh(6),255,255,255
 ...
 ...

 ;Pick-Execute
 If MouseHit(1)

  ;Maus-Klick-Navigation
  If pitext="start" unhide(2)
  If pitext="options" unhide(3)
  If pitext="credits" unhide(4)
  ...
  ...
 End If

Die Funktion 'unhide(x)' macht Textmeshes sichtbar oder unsichtbar und diehnt dazu sich in weiteren Untermenüs fortzubewegen. Da das ganze noch mit Dims geregelt ist, kann man das so machen. Ist noch in Vorbereitung und wird später auch mit Types gemacht. Dann müsste man auch nicht Textentitys Hiden oder Showen...

Hoffe das es dir etwas hilft. Vielleicht hast du das eine oder das andere übersehen und kommst nicht weiter. Ich habe leider kaum Zeit mich mit dem langem Code von dir zu beschäftigen. Stehe grad extrem im Umzugsstress... Confused
  • Zuletzt bearbeitet von hectic am Fr, Jul 06, 2007 20:18, insgesamt einmal bearbeitet
 

fliege

BeitragFr, Apr 28, 2006 22:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Habs jetzt mal selbst probiert und bin dabei drauf gekommen, das das bei mir nicht mit sprites geht...Also wenn ihr das mal selbst versucht, erstellt euch gleich per Addvertex eine Fläche und hofft, das es stimmt Wink

Fliege

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group